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)

Reply via email to