[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:26:12 EDT 2012
[ https://issues.jboss.org/browse/ARQ-1015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nicklas Karlsson updated ARQ-1015:
----------------------------------
Description:
It would be handy to automagically be able to test JPA queries with a method like
{code}
@Test
@UsingDataSet("all.xls")
@ShouldMatchDataSet("hits.xls")
public List<Customer> getAllowedCustomers() {
return em.createNamedQuery("customers", Customer.class).getResultList();
}
{code}
for methods with signatures returning List<?>. Currently I have functionality like
{code}
@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);
}
{code}
and
{code}
public 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);
}
}
}
{code}
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.
was:
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.
> 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
> {code}
> @Test
> @UsingDataSet("all.xls")
> @ShouldMatchDataSet("hits.xls")
> public List<Customer> getAllowedCustomers() {
> return em.createNamedQuery("customers", Customer.class).getResultList();
> }
> {code}
> for methods with signatures returning List<?>. Currently I have functionality like
> {code}
> @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);
> }
> {code}
> and
> {code}
> public 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);
> }
> }
> }
> {code}
> 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