1 package org.kuali.student.lum.dto.test;
2
3 import static org.junit.Assert.fail;
4
5 import java.lang.reflect.Field;
6 import java.util.ArrayList;
7 import java.util.Arrays;
8 import java.util.LinkedHashSet;
9 import java.util.List;
10 import java.util.Set;
11
12 import org.junit.Test;
13 import org.kuali.student.r1.common.dictionary.service.impl.ComplexSubstructuresHelper;
14 import org.kuali.student.r2.core.statement.dto.StatementInfo;
15 import org.kuali.student.r2.lum.clu.dto.AccreditationInfo;
16 import org.kuali.student.r2.lum.clu.dto.AdminOrgInfo;
17 import org.kuali.student.r2.lum.clu.dto.AffiliatedOrgInfo;
18 import org.kuali.student.r2.lum.clu.dto.CluAccountingInfo;
19 import org.kuali.student.r2.lum.clu.dto.CluCluRelationInfo;
20 import org.kuali.student.r2.lum.clu.dto.CluFeeInfo;
21 import org.kuali.student.r2.lum.clu.dto.CluFeeRecordInfo;
22 import org.kuali.student.r2.lum.clu.dto.CluIdentifierInfo;
23 import org.kuali.student.r2.lum.clu.dto.CluInfo;
24 import org.kuali.student.r2.lum.clu.dto.CluInstructorInfo;
25 import org.kuali.student.r2.lum.clu.dto.CluLoRelationInfo;
26 import org.kuali.student.r2.lum.clu.dto.CluPublicationInfo;
27 import org.kuali.student.r2.lum.clu.dto.CluResultInfo;
28 import org.kuali.student.r2.lum.clu.dto.CluSetInfo;
29 import org.kuali.student.r2.lum.clu.dto.CluSetTreeViewInfo;
30 import org.kuali.student.r2.lum.clu.dto.ExpenditureInfo;
31 import org.kuali.student.r2.lum.clu.dto.FeeInfo;
32 import org.kuali.student.r2.lum.clu.dto.FieldInfo;
33 import org.kuali.student.r2.lum.clu.dto.LuCodeInfo;
34 import org.kuali.student.r2.lum.clu.dto.MembershipQueryInfo;
35 import org.kuali.student.r2.lum.clu.dto.ResultOptionInfo;
36 import org.kuali.student.r2.lum.clu.dto.RevenueInfo;
37 import org.kuali.student.r2.lum.course.dto.ActivityInfo;
38 import org.kuali.student.r2.lum.course.dto.CourseCrossListingInfo;
39 import org.kuali.student.r2.lum.course.dto.CourseExpenditureInfo;
40 import org.kuali.student.r2.lum.course.dto.CourseFeeInfo;
41 import org.kuali.student.r2.lum.course.dto.CourseInfo;
42 import org.kuali.student.r2.lum.course.dto.CourseJointInfo;
43 import org.kuali.student.r2.lum.course.dto.CourseRevenueInfo;
44 import org.kuali.student.r2.lum.course.dto.CourseVariationInfo;
45 import org.kuali.student.r2.lum.course.dto.FormatInfo;
46 import org.kuali.student.r2.lum.course.dto.LoDisplayInfo;
47
48 public class TestDTOEqualXMLBeanDefinition {
49
50 private String formatAsString(List<String> errors) {
51 int i = 0;
52 StringBuilder builder = new StringBuilder();
53 for (String error : errors) {
54 i++;
55 builder.append(i + ". " + error + "\n");
56 }
57 return builder.toString();
58 }
59
60 @Test
61 public void getLinkedListFields() {
62 ComplexSubstructuresHelper helpme = new ComplexSubstructuresHelper();
63 ArrayList<Field> fields = new ArrayList<Field>();
64 fields = helpme.getAllFields(fields, StatementInfo.class);
65 for (Field field : fields) {
66 System.out.println(field.getName());
67 }
68 }
69
70 @Test
71 public void testCluDTOsAgainstDataDictionary() {
72 System.out.println("testing statement dictionary");
73
74 Set<String> startingClasses = new LinkedHashSet();
75 startingClasses.add(AccreditationInfo.class.getName());
76 startingClasses.add(AdminOrgInfo.class.getName());
77 startingClasses.add(AffiliatedOrgInfo.class.getName());
78 startingClasses.add(CluAccountingInfo.class.getName());
79 startingClasses.add(CluCluRelationInfo.class.getName());
80 startingClasses.add(CluFeeInfo.class.getName());
81 startingClasses.add(CluFeeRecordInfo.class.getName());
82 startingClasses.add(CluIdentifierInfo.class.getName());
83 startingClasses.add(CluInfo.class.getName());
84 startingClasses.add(CluInstructorInfo.class.getName());
85 startingClasses.add(CluLoRelationInfo.class.getName());
86 startingClasses.add(CluPublicationInfo.class.getName());
87 startingClasses.add(CluResultInfo.class.getName());
88 startingClasses.add(CluSetInfo.class.getName());
89 startingClasses.add(CluSetTreeViewInfo.class.getName());
90 startingClasses.add(ExpenditureInfo.class.getName());
91 startingClasses.add(FeeInfo.class.getName());
92 startingClasses.add(FieldInfo.class.getName());
93 startingClasses.add(LuCodeInfo.class.getName());
94 startingClasses.add(MembershipQueryInfo.class.getName());
95 startingClasses.add(ResultOptionInfo.class.getName());
96 startingClasses.add(RevenueInfo.class.getName());
97
98 String contextFile = "ks-cluInfo-dictionary-context";
99 String outFile = "target/" + contextFile + ".txt";
100 DictionaryDiscrepencyTesterHelper helper = new DictionaryDiscrepencyTesterHelper(
101 outFile, startingClasses, contextFile + ".xml", false);
102 helper.setPrintDescrepenciesOnly(true);
103 List<String> errors = helper.doTest();
104 if (errors.size() > 0) {
105 fail("failed dictionary validation:\n" + formatAsString(errors));
106 }
107
108 }
109
110 @Test
111 public void testCourseDTOsAgainstDataDictionary() {
112 System.out.println("testing statement dictionary");
113 Set<String> startingClasses = new LinkedHashSet();
114 List<String> exclusions = Arrays.asList("searchCourseVersions", "cluset", "findCourse");
115 startingClasses.add(ActivityInfo.class.getName());
116 startingClasses.add(CourseCrossListingInfo.class.getName());
117 startingClasses.add(CourseExpenditureInfo.class.getName());
118 startingClasses.add(CourseFeeInfo.class.getName());
119 startingClasses.add(CourseInfo.class.getName());
120 startingClasses.add(CourseJointInfo.class.getName());
121 startingClasses.add(CourseRevenueInfo.class.getName());
122 startingClasses.add(CourseVariationInfo.class.getName());
123 startingClasses.add(FormatInfo.class.getName());
124 startingClasses.add(LoDisplayInfo.class.getName());
125
126 String contextFile = "ks-courseInfo-dictionary-context";
127 String outFile = "target/" + contextFile + ".txt";
128 DictionaryDiscrepencyTesterHelper helper = new DictionaryDiscrepencyTesterHelper(
129 outFile, startingClasses, contextFile + ".xml", false, exclusions);
130 helper.setPrintDescrepenciesOnly(true);
131 List<String> errors = helper.doTest();
132 if (errors.size() > 0) {
133 fail("failed dictionary validation:\n" + formatAsString(errors));
134 }
135
136 }
137 }