public void testFillReferencedManyRecords() throws Exception
{
ForeignKeySchemaData.clearTablesInDatabase();
for (int i = 1; i <= MANY; ++i)
{
NullableOIntegerFk fkObject = new NullableOIntegerFk();
fkObject.setName("nullableOIntegerFk" + i);
if (i % 10 != 0)
{
OIntegerPk pkObject = new OIntegerPk();
pkObject.setName("oIntegerPk" + i);
pkObject.setIntegerColumn(i);
pkObject.save();
fkObject.setOIntegerPk(pkObject);
fkObject.save();
}
else
{
fkObject.save();
}
}
Criteria criteria = new Criteria();
criteria.addAscendingOrderByColumn(NullableOIntegerFkPeer.ID);
List<NullableOIntegerFk> fkObjectList
= NullableOIntegerFkPeer.doSelect(criteria);
assertEquals(MANY, fkObjectList.size());
int count = 0;
for (NullableOIntegerFk fkObject : fkObjectList)
{
if (fkObject.getFk() != null && fkObject.getFk() == 0)
{
fail("fk Object with id " + fkObject.getId()
+ " on position " + count + " has foreign key 0");
}
++count;
}
// TODO assert that fkObjectList have not already loaded their pk object
List<OIntegerPk> oIntegerPkList
= NullableOIntegerFkPeer.fillOIntegerPks(fkObjectList);
assertEquals(MANY - (MANY / 10), oIntegerPkList.size());
int i = 1;
for (NullableOIntegerFk fkObject : fkObjectList)
{
if (i % 10 != 0)
{
assertEquals(
"oIntegerPk" + i,
fkObject.getOIntegerPk().getName());
}
else
{
assertNull(fkObject.getOIntegerPk());
}
++i;
}
}