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