Nelmio\Alice\Loader\LoaderIntegrationTest::testUniqueValueGenerationWithDynamicArray PHP Method

testUniqueValueGenerationWithDynamicArray() public method

    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());
        }
    }