001 /** 002 * Copyright 2004-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.student.contract.model.util; 017 018 import static org.junit.Assert.assertTrue; 019 import static org.junit.Assert.fail; 020 021 import java.io.File; 022 import java.util.ArrayList; 023 import java.util.Collection; 024 import java.util.Date; 025 import java.util.List; 026 027 import org.joda.time.DateTime; 028 import org.junit.After; 029 import org.junit.AfterClass; 030 import org.junit.Before; 031 import org.junit.BeforeClass; 032 import org.junit.Ignore; 033 import org.junit.Test; 034 import org.kuali.student.contract.model.ServiceContractModel; 035 import org.kuali.student.contract.model.impl.ServiceContractModelCache; 036 import org.kuali.student.contract.model.impl.ServiceContractModelPescXsdLoader; 037 import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader; 038 import org.kuali.student.contract.model.validation.ServiceContractModelValidator; 039 040 /** 041 * 042 * @author nwright 043 */ 044 public class HtmlContractWriterTest { 045 046 public HtmlContractWriterTest() { 047 } 048 049 @BeforeClass 050 public static void setUpClass() throws Exception { 051 } 052 053 @AfterClass 054 public static void tearDownClass() throws Exception { 055 } 056 057 @Before 058 public void setUp() { 059 } 060 061 @After 062 public void tearDown() { 063 } 064 private static final String CORE_DIRECTORY = 065 "C:/svn/ks-1.3/ks-core/ks-core-api/src/main/java"; 066 // "C:/svn/maven-dictionary-generator/trunk/src/main/java/org/kuali/student/core"; 067 private static final String COMMON_DIRECTORY = 068 "C:/svn/ks-1.3/ks-common/ks-common-api/src/main/java"; 069 private static final String ENROLL_PROJECT_SOURCE_DIRECTORY = 070 "C:/svn/ks-1.3/ks-enroll/ks-enroll-api/src/main/java"; 071 private static final String LUM_DIRECTORY = 072 "C:/svn/ks-1.3/ks-lum/ks-lum-api/src/main/java"; 073 private static final String RICE_DIRECTORY = 074 "C:/svn/rice/rice-release-1-0-2-1-br/api/src/main/java"; 075 private static final String RICE_CORE_API_DIRECTORY = "C:/svn/rice/trunk/core/api/src/main/java"; 076 private static final String RICE_KIM_API_DIRECTORY = "C:/svn/rice/trunk/kim/kim-api/src/main/java"; 077 private static final String RICE_LOCATION_API_DIRECTORY = "C:/svn/rice/trunk/location/api/src/main/java"; 078 private static final String RICE_KEW_API_DIRECTORY = "C:/svn/rice/trunk/kew/api/src/main/java"; 079 private static final String RICE_KEN_API_DIRECTORY = "C:/svn/rice/trunk/ken/api/src/main/java"; 080 private static final String RICE_KSB_API_DIRECTORY = "C:/svn/rice/trunk/ksb/api/src/main/java"; 081 private static final String RICE_KRMS_API_DIRECTORY = "C:/svn/rice/trunk/krms/api/src/main/java"; 082 private static final String RICE_KRMS_IMPL_DIRECTORY = "C:/svn/rice/trunk/krms/impl/src/main/java"; 083 private static final String TEST_SOURCE_DIRECTORY = 084 "src/test/java/org/kuali/student/contract/model/test/source"; 085 086 private static final String KSA_DIRECTORY = "D:/svn/ks/ksa/ksa-core/src/main/java"; 087 private static final String HTML_CONTRACT_DIRECTORY = "target/html/contract"; 088 private static final String HTML_CONTRACT_DIRECTORY_TEST = HTML_CONTRACT_DIRECTORY + "/test"; 089 private static final String HTML_CONTRACT_DIRECTORY_ENROLL = HTML_CONTRACT_DIRECTORY + "/enroll"; 090 private static final String HTML_CONTRACT_DIRECTORY_RICE = HTML_CONTRACT_DIRECTORY + "/rice"; 091 private static final String HTML_CONTRACT_DIRECTORY_KSA = HTML_CONTRACT_DIRECTORY + "/ksa"; 092 private static final String HTML_CONTRACT_DIRECTORY_PESC = HTML_CONTRACT_DIRECTORY + "/pesc"; 093 private static final String RESOURCES_DIRECTORY = 094 // "C:/svn/student/ks-core/ks-core-api/src/main/java"; 095 "src/main/resources"; 096 097 private ServiceContractModel getTestModel() { 098 List<String> srcDirs = new ArrayList<String>(); 099 srcDirs.add(TEST_SOURCE_DIRECTORY); 100 // srcDirs.add(ENROLL_PROJECT_SOURCE_DIRECTORY); 101 // srcDirs.add(CORE_DIRECTORY); 102 // srcDirs.add(COMMON_DIRECTORY); 103 // srcDirs.add(LUM_DIRECTORY); 104 ServiceContractModel instance = new ServiceContractModelQDoxLoader( 105 srcDirs); 106 return new ServiceContractModelCache(instance); 107 108 } 109 110 111 private ServiceContractModel getRiceModel() { 112 List<String> srcDirs = new ArrayList<String>(); 113 // srcDirs.add(TEST_SOURCE_DIRECTORY); 114 srcDirs.add(RICE_CORE_API_DIRECTORY); 115 srcDirs.add(RICE_KIM_API_DIRECTORY); 116 srcDirs.add(RICE_LOCATION_API_DIRECTORY); 117 srcDirs.add(RICE_KEW_API_DIRECTORY); 118 srcDirs.add(RICE_KEN_API_DIRECTORY); 119 srcDirs.add(RICE_KSB_API_DIRECTORY); 120 srcDirs.add(RICE_KRMS_API_DIRECTORY); 121 srcDirs.add(RICE_KRMS_IMPL_DIRECTORY); 122 // srcDirs.add(CORE_DIRECTORY); 123 // srcDirs.add(COMMON_DIRECTORY); 124 // srcDirs.add(LUM_DIRECTORY); 125 ServiceContractModel instance = new ServiceContractModelQDoxLoader( 126 srcDirs, false); 127 return new ServiceContractModelCache(instance); 128 129 } 130 131 private ServiceContractModel getKSAModel() { 132 List<String> srcDirs = new ArrayList<String>(); 133 srcDirs.add(KSA_DIRECTORY); 134 ServiceContractModel instance = new ServiceContractModelQDoxLoader( 135 srcDirs, false); 136 return new ServiceContractModelCache(instance); 137 138 } 139 140 private ServiceContractModel getEnrollModel() { 141 List<String> srcDirs = new ArrayList<String>(); 142 // srcDirs.add(TEST_SOURCE_DIRECTORY); 143 srcDirs.add(ENROLL_PROJECT_SOURCE_DIRECTORY); 144 // srcDirs.add(CORE_DIRECTORY); 145 // srcDirs.add(COMMON_DIRECTORY); 146 // srcDirs.add(LUM_DIRECTORY); 147 ServiceContractModel instance = new ServiceContractModelQDoxLoader( 148 srcDirs); 149 return new ServiceContractModelCache(instance); 150 151 } 152 // pesc stuff 153 private static final String PESC_DIRECTORY = 154 RESOURCES_DIRECTORY + "/pesc"; 155 private static final String PESC_CORE_MAIN = PESC_DIRECTORY + "/CoreMain.xsd"; 156 private static final String PESC_ACAD_REC = PESC_DIRECTORY + "/AcademicRecord_v1.5.0.xsd"; 157 private static final String PESC_COLL_TRANS = PESC_DIRECTORY + "/CollegeTranscript_v1.2.0.xsd"; 158 159 private ServiceContractModel getPescModel() { 160 List<String> xsdFileNames = new ArrayList(); 161 // xsdFileNames.add(PESC_CORE_MAIN); 162 // xsdFileNames.add(PESC_ACAD_REC); 163 xsdFileNames.add(PESC_COLL_TRANS); 164 ServiceContractModel instance = new ServiceContractModelPescXsdLoader(xsdFileNames); 165 instance = new ServiceContractModelCache(instance); 166 validate(instance); 167 return instance; 168 } 169 170 171 private void validate(ServiceContractModel model) { 172 Collection<String> errors = 173 new ServiceContractModelValidator(model).validate(); 174 if (errors.size() > 0) { 175 StringBuilder buf = new StringBuilder(); 176 buf.append(errors.size()).append(" errors found while validating the data."); 177 int cnt = 0; 178 for (String msg : errors) { 179 cnt++; 180 buf.append("\n"); 181 buf.append("*error*").append(cnt).append(":").append(msg); 182 } 183 184 fail(buf.toString()); 185 } 186 } 187 188 /** 189 * Test of run 190 */ 191 // @Test 192 public void testRunPesc() { 193 ServiceContractModel model = null; 194 HtmlContractWriter writer = null; 195 196 model = this.getPescModel(); 197 this.validate(model); 198 writer = new HtmlContractWriter(HTML_CONTRACT_DIRECTORY_PESC, model); 199 writer.write("testVersion", DateUtility.asYMD(new Date())); 200 201 assertTrue(new File(HTML_CONTRACT_DIRECTORY_PESC + "/" + "index.html").exists()); 202 } 203 204 /** 205 * Test of run 206 */ 207 @Test 208 public void testTestRun () { 209 ServiceContractModel model = null; 210 HtmlContractWriter writer = null; 211 212 model = this.getTestModel(); 213 this.validate(model); 214 writer = new HtmlContractWriter(HTML_CONTRACT_DIRECTORY_TEST, model); 215 writer.write("testVersion", DateUtility.asYMD(new Date())); 216 217 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "index.html").exists()); 218 assertTrue( 219 new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "LprService.html").exists()); 220 assertTrue( 221 new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "LprInfo.html").exists()); 222 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "ContextInfo.html").exists()); 223 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "RichTextInfo.html").exists()); 224 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "MetaInfo.html").exists()); 225 226 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "StateService.html").exists()); 227 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "StateInfo.html").exists()); 228 229 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "TypeService.html").exists()); 230 assertTrue(new File(HTML_CONTRACT_DIRECTORY_TEST + "/" + "TypeInfo.html").exists()); 231 } 232 233 234 /** 235 * Test of run 236 */ 237 // @Test 238 public void testEnrollRun () { 239 ServiceContractModel model = null; 240 HtmlContractWriter writer = null; 241 242 model = this.getEnrollModel(); 243 this.validate(model); 244 writer = new HtmlContractWriter(HTML_CONTRACT_DIRECTORY_ENROLL, model); 245 writer.write("testVersion", DateUtility.asYMDHMInEasternTimeZone(new DateTime())); 246 247 // assertTrue(new File(HTML_CONTRACT_DIRECTORY_ENROLL + "/" + "index.html").exists()); 248 } 249 250 /** 251 * Test of run 252 */ 253 // @Test 254 public void testRiceRun () { 255 ServiceContractModel model = null; 256 HtmlContractWriter writer = null; 257 258 model = this.getRiceModel(); 259 this.validate(model); 260 writer = new HtmlContractWriter(HTML_CONTRACT_DIRECTORY_RICE, model); 261 writer.write("testVersion", DateUtility.asYMD(new Date())); 262 263 // assertTrue(new File(HTML_CONTRACT_DIRECTORY_ENROLL + "/" + "index.html").exists()); 264 } 265 /** 266 * Test of run 267 */ 268 @Test 269 @Ignore 270 // Ignored because the ksa api is not known to the test. 271 // investigate if the api can be provisioned through maven. 272 public void testKSARun () { 273 ServiceContractModel model = null; 274 HtmlContractWriter writer = null; 275 276 model = this.getKSAModel(); 277 this.validate(model); 278 writer = new HtmlContractWriter(HTML_CONTRACT_DIRECTORY_KSA, model); 279 writer.write("testVersion", DateUtility.asYMD(new Date())); 280 281 // assertTrue(new File(HTML_CONTRACT_DIRECTORY_ENROLL + "/" + "index.html").exists()); 282 } 283 }