11
11
import java .util .List ;
12
12
13
13
import static org .junit .jupiter .api .Assertions .assertEquals ;
14
+ import static org .lfenergy .compas .scl .validator .xsd .XSDErrorHandler .DEFAULT_PREFIX ;
15
+ import static org .lfenergy .compas .scl .validator .xsd .XSDErrorHandler .DEFAULT_RULE_NAME ;
14
16
15
17
class XSDErrorHandlerTest {
16
18
private List <ValidationError > errorList = new ArrayList <>();
@@ -57,4 +59,62 @@ private void assertValidationError(ValidationError validationError, String messa
57
59
assertEquals (linenumber , validationError .getLinenumber ());
58
60
assertEquals (columnNumber , validationError .getColumnNumber ());
59
61
}
62
+
63
+ @ Test
64
+ void getRuleName_WhenXSDMessageContainsNoRule_ThenDefaultXSDRuleNameReturned () {
65
+ var xsdMessage = "Duplicate match in scope for field \" depth\" " ;
66
+
67
+ var ruleName = handler .getRuleName (xsdMessage );
68
+
69
+ assertEquals (DEFAULT_RULE_NAME , ruleName );
70
+ }
71
+
72
+ @ Test
73
+ void getRuleName_WhenXSDMessageContainsRuleWithSpaces_ThenDefaultXSDRuleNameReturned () {
74
+ var xsdMessage = "SOME SPACES RULE: Duplicate match in scope for field \" depth\" " ;
75
+
76
+ var ruleName = handler .getRuleName (xsdMessage );
77
+
78
+ assertEquals (DEFAULT_RULE_NAME , ruleName );
79
+ }
80
+
81
+ @ Test
82
+ void getRuleName_WhenXSDMessageContainsRule_ThenRuleNameReturned () {
83
+ var expectedRuleName = "cvc-complex-type.2.1" ;
84
+ var xsdMessage = expectedRuleName + ": Element 'depth' must have no character or element information " +
85
+ "item [children], because the type's content type is empty." ;
86
+
87
+ var ruleName = handler .getRuleName (xsdMessage );
88
+
89
+ assertEquals (DEFAULT_PREFIX + expectedRuleName , ruleName );
90
+ }
91
+
92
+ @ Test
93
+ void getMessage_WhenXSDMessageContainsNoRule_ThenOriginalMessageReturned () {
94
+ var xsdMessage = "Duplicate match in scope for field \" depth\" " ;
95
+
96
+ var message = handler .getMessage (xsdMessage );
97
+
98
+ assertEquals (xsdMessage , message );
99
+ }
100
+
101
+ @ Test
102
+ void getMessage_WhenXSDMessageContainsRuleWithSpaces_ThenOriginalMessageReturned () {
103
+ var xsdMessage = "SOME SPACES RULE: Duplicate match in scope for field \" depth\" " ;
104
+
105
+ var message = handler .getMessage (xsdMessage );
106
+
107
+ assertEquals (xsdMessage , message );
108
+ }
109
+
110
+ @ Test
111
+ void getMessage_WhenXSDMessageContainsRule_ThenRuleNameIsStrippedFromMessage () {
112
+ var ruleName = "cvc-complex-type.2.1" ;
113
+ var expectedMessage = "Element 'depth' must have no character or element information item [children], " +
114
+ "because the type's content type is empty." ;
115
+
116
+ var message = handler .getMessage (ruleName + ": " + expectedMessage );
117
+
118
+ assertEquals (expectedMessage , message );
119
+ }
60
120
}
0 commit comments