* @throws Exception if a database error occurs.
*/
public void testFillReferencingPrimitiveIntegerKey() throws Exception
{
ForeignKeySchemaData.clearTablesInDatabase();
ForeignKeySchemaData testData
= ForeignKeySchemaData.getDefaultTestData();
testData.save();
Criteria criteria = new Criteria();
criteria.addAscendingOrderByColumn(PIntegerPkPeer.ID);
List<PIntegerPk> pkList = PIntegerPkPeer.doSelect(criteria);
assertEquals(3, pkList.size());
assertEquals(
testData.getPIntegerPkList().get(0).getId(),
pkList.get(0).getId());
// check referencing lists are not initialized
for (PIntegerPk pIntegerPk : pkList)
{
assertFalse(pIntegerPk.isRequiredPIntegerFksInitialized());
}
List<RequiredPIntegerFk> referencingFkList
= PIntegerPkPeer.fillRequiredPIntegerFks(
pkList);
// check all referencing lists are initialized
for (PIntegerPk pIntegerPk : pkList)
{
assertTrue(pIntegerPk.isRequiredPIntegerFksInitialized());
}
// returned list must contain requiredPIntegerFk2,
// requiredPIntegerFk3a, requiredPIntegerFk3b
// where the last two can be exchanged
assertEquals(3, referencingFkList.size());
assertEquals(
testData.getRequiredPIntegerFkList().get(0).getId(),
referencingFkList.get(0).getId());
assertTrue(
referencingFkList.contains(
testData.getRequiredPIntegerFkList().get(1)));
assertTrue(
referencingFkList.contains(
testData.getRequiredPIntegerFkList().get(2)));
// The second pk entry must reference requiredPIntegerFk2
// and the third pk entry must reference requiredPIntegerFk3a
// and requiredPIntegerFk3b
assertEquals(0, pkList.get(0).getRequiredPIntegerFks().size());
assertEquals(1, pkList.get(1).getRequiredPIntegerFks().size());
assertEquals(2, pkList.get(2).getRequiredPIntegerFks().size());
assertEquals(
testData.getRequiredPIntegerFkList().get(0),
pkList.get(1).getRequiredPIntegerFks().get(0));
assertTrue(
pkList.get(2).getRequiredPIntegerFks().contains(
testData.getRequiredPIntegerFkList().get(1)));
assertTrue(
pkList.get(2).getRequiredPIntegerFks().contains(
testData.getRequiredPIntegerFkList().get(2)));
// The objects in the result list must be the same objects
// as the referenced objects in the pk list
assertSame(
referencingFkList.get(0),