Konrad Windszus created SLING-12833:
---------------------------------------
Summary: Better description of mismatch in
ResourcePropertiesMatcher
Key: SLING-12833
URL: https://issues.apache.org/jira/browse/SLING-12833
Project: Sling
Issue Type: Improvement
Components: Testing
Affects Versions: Testing Hamcrest 1.0.2
Reporter: Konrad Windszus
When using ResourcePropertiesMatcher with lots of properties it is hard to spot
the actual difference from the output message. It should highlight
- the first property name where a difference occurs
- the expected value and type vs the actual value and type for that property
Current example output of 1.0.2
{code}
java.lang.AssertionError:
Expected: Resource with properties
[<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test
%&special test
characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>]
but: was Resource with properties
[<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test
%&special test
characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>]
(resource: <ValueMapResource,
type=aem-dictionary-translator/components/combining-message-entry,
path=/mnt/dictionary/content/dictionaries/fruit/i18n/test\u000D\u000A\u0025&special
test characters>)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at
be.orbinson.aem.dictionarytranslator.services.impl.CombiningMessageEntryResourceProviderTest.syntheticMessageEntryPathShouldReturnProperResource(CombiningMessageEntryResourceProviderTest.java:109)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
{code}
Proposed improved Output
{code}
java.lang.AssertionError:
Expected: Resource with properties
[<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test
%&special test
characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>]
but: was Resource with properties
[<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test
%&special test
characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>]
(resource: <ValueMapResource,
type=aem-dictionary-translator/components/combining-message-entry,
path=/mnt/dictionary/content/dictionaries/fruit/i18n/test\u000D\u000A\u0025&special
test characters>)
First mismatch in property "validationMessages": expected value [] of type
"[Ljava.lang.String;" but was value <[]> of type "java.util.TreeSet"
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
at
be.orbinson.aem.dictionarytranslator.services.impl.CombiningMessageEntryResourceProviderTest.syntheticMessageEntryPathShouldReturnProperResource(CombiningMessageEntryResourceProviderTest.java:109)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)