[arquillian-issues] [JBoss JIRA] (ARQ-1015) Testing of JPA queries with @UsingDataSet and @ShouldMatchDataSet

Nicklas Karlsson (JIRA) jira-events at lists.jboss.org
Fri Jun 29 02:24:12 EDT 2012


Nicklas Karlsson created ARQ-1015:
-------------------------------------

             Summary: Testing of JPA queries with @UsingDataSet and @ShouldMatchDataSet
                 Key: ARQ-1015
                 URL: https://issues.jboss.org/browse/ARQ-1015
             Project: Arquillian
          Issue Type: Feature Request
      Security Level: Public (Everyone can see)
          Components: Extension - Persistence
    Affects Versions: persistence_1.0.0.Alpha4
            Reporter: Nicklas Karlsson
            Assignee: Bartosz Majsak


It would be handy to automagically be able to test JPA queries with a method like

@Test
@UsingDataSet("all.xls")
@ShouldMatchDataSet("hits.xls")
public List<Customer> getAllowedCustomers() {
  return em.createNamedQuery("customers", Customer.class).getResultList();
}

for methods with signatures returning List<?>. Currently I have functionality like 

    @Test
    @UsingDataSet("all.xls")
    public void testCustomers() throws Exception
    {
	IDataSet expected = new XlsDataSet(getClass().getResourceAsStream("/hits.xls"));
	ITableMetaData metadata = expected.getTableMetaData(expected.getTableNames()[0]);
	IDataSet real = new PojoDataSet(em.createNamedQuery("customers", Customer.class).getResultList(), metadata);
	Assertion.assertEquals(expected, real);
    }

and


ublic class PojoDataSet extends DefaultDataSet
{

    public PojoDataSet(List<?> entities, ITableMetaData metaData)
    {
	try
	{
	    DefaultTable table = new DefaultTable(metaData);
	    for (Object entity : entities)
	    {
		List<Object> values = new ArrayList<Object>();
		for (Column column : metaData.getColumns())
		{
		    values.add(BeanUtils.getNestedProperty(entity, column.getColumnName()));
		}
		table.addRow(values.toArray());
	    }
	    addTable(table);
	} catch (Exception e)
	{
	    throw new IllegalArgumentException(e);
	}
    }

}

With the column names in the metadata (from the xls) mapped to Apache BeanUtils nested properties. This approach only verifies the identities of the top-level objects (OK, it can descend @OneToOne relations) and doesn't cover the whole POJO structure. 

It would be nice if this process could somehow be automated with Arquillian-persistence.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the arquillian-issues mailing list