001 /*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005 package org.kuali.student.contract.model.impl;
006
007 import org.kuali.student.contract.model.MessageStructure;
008 import org.kuali.student.contract.model.Service;
009 import org.kuali.student.contract.model.ServiceContractModel;
010 import org.kuali.student.contract.model.ServiceMethod;
011 import org.kuali.student.contract.model.ServiceMethodParameter;
012 import org.kuali.student.contract.model.XmlType;
013 import org.kuali.student.contract.model.util.MessageStructureDumper;
014 import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
015 import org.kuali.student.validation.decorator.mojo.ValidationDecoratorWriterForOneService;
016 import org.slf4j.Logger;
017 import org.slf4j.LoggerFactory;
018
019 import java.util.ArrayList;
020 import java.util.Collection;
021 import java.util.List;
022
023 import org.junit.After;
024 import org.junit.AfterClass;
025 import org.junit.Before;
026 import org.junit.BeforeClass;
027 import org.junit.Test;
028
029 import static org.junit.Assert.*;
030
031 /**
032 *
033 * @author nwright
034 */
035 public class ServiceContractModelPescXsdLoaderTest {
036
037 private static Logger log = LoggerFactory.getLogger(ServiceContractModelPescXsdLoaderTest.class);
038
039
040 public ServiceContractModelPescXsdLoaderTest() {
041 }
042
043 @BeforeClass
044 public static void setUpClass() throws Exception {
045 }
046
047 @AfterClass
048 public static void tearDownClass() throws Exception {
049 }
050
051 @Before
052 public void setUp() {
053 }
054
055 @After
056 public void tearDown() {
057 }
058 private static final String RESOURCES_DIRECTORY =
059 // "C:/svn/student/ks-core/ks-core-api/src/main/java";
060 "src/main/resources";
061 private static final String PESC_DIRECTORY =
062 RESOURCES_DIRECTORY + "/pesc";
063 private static final String PESC_CORE_MAIN = PESC_DIRECTORY + "/CoreMain.xsd";
064 private static final String PESC_ACAD_REC = PESC_DIRECTORY + "/AcademicRecord_v1.5.0.xsd";
065 private static final String PESC_COLL_TRANS = PESC_DIRECTORY + "/CollegeTranscript_v1.2.0.xsd";
066
067 private ServiceContractModel getModel() {
068 List<String> xsdFileNames = new ArrayList();
069 // xsdFileNames.add(PESC_CORE_MAIN);
070 // xsdFileNames.add(PESC_ACAD_REC);
071 xsdFileNames.add(PESC_COLL_TRANS);
072 ServiceContractModel instance = new ServiceContractModelPescXsdLoader(xsdFileNames);
073 instance = new ServiceContractModelCache(instance);
074 validate(instance);
075 return instance;
076 }
077
078 private String dump(ServiceMethod method) {
079 StringBuilder bldr = new StringBuilder();
080 bldr.append(method.getName());
081 String comma = "";
082 bldr.append("(");
083 for (ServiceMethodParameter param : method.getParameters()) {
084 bldr.append(comma);
085 comma = ", ";
086 bldr.append(param.getType());
087 bldr.append(" ");
088 bldr.append(param.getName());
089 }
090 bldr.append(")");
091 return bldr.toString();
092 }
093
094 private void validate(ServiceContractModel model) {
095 Collection<String> errors =
096 new ServiceContractModelValidator(model).validate();
097 if (errors.size() > 0) {
098 StringBuilder buf = new StringBuilder();
099 buf.append(errors.size()).append(" errors found while validating the data.");
100 int cnt = 0;
101 for (String msg : errors) {
102 cnt++;
103 buf.append("\n");
104 buf.append("*error*").append(cnt).append(":").append(msg);
105 }
106
107 fail(buf.toString());
108 }
109 }
110
111 /**
112 * Test of getServiceMethods method, of class ServiceContractModelQDoxLoader.
113 */
114 @Test
115 public void testGetServiceMethods() {
116 log.info("getServiceMethods");
117 ServiceContractModel model = getModel();
118 List<ServiceMethod> result = model.getServiceMethods();
119 log.info("Number of methods=" + result.size());
120 for (ServiceMethod method : result) {
121 log.info(dump(method));
122 }
123 if (result.size() < 1) {
124 fail("too few: " + result.size());
125 }
126 }
127
128 /**
129 * Test of getSourceNames method, of class ServiceContractModelQDoxLoader.
130 */
131 @Test
132 public void testGetSourceNames() {
133 log.info("getSourceNames");
134 ServiceContractModel model = getModel();
135 List<String> expResult = new ArrayList();
136 expResult.add(PESC_COLL_TRANS);
137 List result = model.getSourceNames();
138 assertEquals(expResult, result);
139 }
140
141 /**
142 * Test of getServices method, of class ServiceContractModelQDoxLoader.
143 */
144 @Test
145 public void testGetServices() {
146 log.info("getServices");
147 ServiceContractModel model = getModel();
148 List<Service> result = model.getServices();
149 assertEquals(1, result.size());
150 for (Service service : result) {
151 log.info(service.getKey() + " " + service.getName() + " "
152 + service.getVersion() + " " + service.getStatus()
153 + " " + service.getComments()
154 + " " + service.getUrl());
155 }
156 }
157
158 /**
159 * Test of getXmlTypes method, of class ServiceContractModelQDoxLoader.
160 */
161 @Test
162 public void testGetXmlTypes() {
163 log.info("getXmlTypes");
164 ServiceContractModel model = getModel();
165 List<XmlType> result = model.getXmlTypes();
166 if (result.size() < 10) {
167 fail("too few: " + result.size());
168 }
169 }
170
171 /**
172 * Test of getMessageStructures method, of class ServiceContractModelQDoxLoader.
173 */
174 @Test
175 public void testGetMessageStructures() {
176 log.info("getMessageStructures");
177 ServiceContractModel model = getModel();
178 List<MessageStructure> result = model.getMessageStructures();
179 if (result.size() < 10) {
180 fail("too few: " + result.size());
181 }
182 for (MessageStructure ms : result) {
183 new MessageStructureDumper(ms, System.out).dump();
184 }
185 }
186 }