[arquillian-issues] [JBoss JIRA] (ARQ-1809) @ShouldMatchDataSet is broken when ordering by non-string columns

Bartosz Majsak (JIRA) issues at jboss.org
Wed Sep 3 19:18:59 EDT 2014


    [ https://issues.jboss.org/browse/ARQ-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998606#comment-12998606 ] 

Bartosz Majsak commented on ARQ-1809:
-------------------------------------

I cannot reproduce this behaviour, but I have improved sorted and filtered sets so that they have now proper metadata. 
As for the suggested fix : both YAML and JSON implementation are based on FlatXML data sets, where datatype is also set to unknown. If I understand DBUnit right, the real types are then extracted from underlying db and conversion is applied. But this might be wrong reasoning :) I will take a closer look.

In the meantime, could you try to run your test against [latest master|https://github.com/arquillian/arquillian-extension-persistence] and let me know? Does this error occurs each and every time you run the test?

> @ShouldMatchDataSet is broken when ordering by non-string columns
> -----------------------------------------------------------------
>
>                 Key: ARQ-1809
>                 URL: https://issues.jboss.org/browse/ARQ-1809
>             Project: Arquillian
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Extension - Persistence
>    Affects Versions: persistence_1.0.0.Alpha7
>            Reporter: Steven Dodd
>            Assignee: Bartosz Majsak
>             Fix For: persistence_1.0.0.next
>
>
> Steps to reproduce:
> 1. Create a table, "test", with a single column, an integer primary key, "id".
> 2. Try the following test case under the persistence extension:
> {code}
> @UsingDataSet({test.yml})
> @ShouldMatchDataSet(value={test.yml})
> @Test
> public void test() {
>     // do nothing
> }
> {code}
> {code:title=test.yml}
> test:
>   - id: -1
>   - id: -2
> {code}
> Result: test fails like so:
> {code}
> java.lang.AssertionError: Test failed in 2 cases. 
> test | In row 0: expected value of id "-1" but was "-2".
> test | In row 1: expected value of id "-2" but was "-1".
> {code}
> Reason:
> The expected dataset is loaded by the YamlDataSetProducer, and has all of its column types set to UNKNOWN.
> The actual dataset is loaded by <whatever>, and has all of its column types set to their actual types in the database.
> DataSetComparator wraps each dataset in a SortedTable, to provide a consistent row ordering for comparison.
> SortedTable ends up sorting every column of the expected dataset as strings, because the column types are UNKNOWN, but it sorts the actual dataset columns using their actual column types, e.g. numeric sort in the test case above.
> As a result, the rows of the expected and actual datasets are not consistently sorted for comparison, which results in totally inaccurate comparison results.
> Suggested Fix:
> The expected dataset needs to have accurate column types assigned, not UNKNOWN.



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)


More information about the arquillian-issues mailing list