public function testUniqueValueGenerationWithDynamicArray()
{
$data = [\stdClass::class => ['related_dummy{1..2}' => ['name' => '<current()>'], 'dummy1' => ['relatedDummies (unique)' => '2x @related_dummy*'], 'dummy2' => ['relatedDummies (unique)' => '2x @related_dummy*']]];
$result = $this->loader->loadData($data);
$self = $this;
$assertEachValuesInRelatedDummiesAreUnique = function (ObjectSet $set) use($self) {
$self->assertEquals(0, count($set->getParameters()));
$self->assertEquals(4, count($set->getObjects()));
$dummy = $set->getObjects()['dummy1'];
$self->assertCount(2, $dummy->relatedDummies);
foreach ($dummy->relatedDummies as $relatedDummy) {
$this->assertEquals($relatedDummy, $set->getObjects()['related_dummy' . $relatedDummy->name]);
}
$self->assertNotEquals($dummy->relatedDummies[0], $dummy->relatedDummies[1]);
$anotherDummy = $set->getObjects()['dummy2'];
$self->assertCount(2, $anotherDummy->relatedDummies);
foreach ($anotherDummy->relatedDummies as $relatedDummy) {
$this->assertEquals($relatedDummy, $set->getObjects()['related_dummy' . $relatedDummy->name]);
}
$self->assertNotEquals($anotherDummy->relatedDummies[0], $anotherDummy->relatedDummies[1]);
};
$assertEachValuesInRelatedDummiesAreUnique($result);
// Do another check with range/list where a temporary fixture is being used for the unique key
$data = [\stdClass::class => ['related_dummy{1..2}' => ['name' => '<current()>'], 'dummy{1..2}' => ['relatedDummies (unique)' => '2x @related_dummy*']]];
$result = $this->loader->loadData($data);
$assertEachValuesInRelatedDummiesAreUnique($result);
try {
$this->loader->loadData([\stdClass::class => ['related_dummy' => ['name' => 'unique'], 'dummy' => ['relatedDummies (unique)' => '2x @related_dummy*']]]);
$this->fail('Expected exception to be thrown.');
} catch (UnresolvableValueDuringGenerationException $exception) {
$this->assertInstanceOf(UniqueValueGenerationLimitReachedException::class, $exception->getPrevious());
}
}