Skip to content

Commit 1695963

Browse files
tomtomautheofidry
authored andcommitted
Allow usage of dots in the ReferenceRangeNameDenormalizer (#933)
Closes #932
1 parent 12d7bce commit 1695963

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

src/FixtureBuilder/Denormalizer/Fixture/Chainable/ReferenceRangeNameDenormalizer.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ final class ReferenceRangeNameDenormalizer implements ChainableFixtureDenormaliz
3333
{
3434
use IsAServiceTrait;
3535

36-
private const REGEX = '/.+\{(?<expression>@(?<name>([A-Za-z0-9-_]+))(?<flag>(\*+))?)\}/';
36+
private const REGEX = '/.+\{(?<expression>@(?<name>([A-Za-z0-9-_\.]+))(?<flag>(\*+))?)\}/';
3737

3838
/**
3939
* @var FlagParserInterface|null

tests/Loader/LoaderIntegrationTest.php

+35
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,41 @@ public function testLoadReferenceRange()
665665
$this->assertSame($objects['user1'], $objects['userdetail_single_user1']->getUser());
666666
}
667667

668+
public function testLoadReferenceRangeWithDotInName()
669+
{
670+
$data = [
671+
User::class => [
672+
'foo.user.{1..3}' => [
673+
'id' => '<uuid()>',
674+
'name' => '<username()>',
675+
],
676+
],
677+
UserDetail::class => [
678+
'foo.user_detail.{@foo.user.*}' => [
679+
'email' => '<email()>',
680+
'user' => '<current()>',
681+
],
682+
],
683+
];
684+
685+
$set = $this->loader->loadData($data);
686+
687+
$objects = $set->getObjects();
688+
$this->assertCount(6, $objects);
689+
690+
$this->assertArrayHasKey('foo.user.1', $objects);
691+
$this->assertArrayHasKey('foo.user.2', $objects);
692+
$this->assertArrayHasKey('foo.user.3',$objects);
693+
694+
$this->assertInstanceOf(User::class, $objects['foo.user_detail.foo.user.1']->getUser());
695+
$this->assertInstanceOf(User::class, $objects['foo.user_detail.foo.user.2']->getUser());
696+
$this->assertInstanceOf(User::class, $objects['foo.user_detail.foo.user.3']->getUser());
697+
698+
$this->assertSame($objects['foo.user.1'], $objects['foo.user_detail.foo.user.1']->getUser());
699+
$this->assertSame($objects['foo.user.2'], $objects['foo.user_detail.foo.user.2']->getUser());
700+
$this->assertSame($objects['foo.user.3'], $objects['foo.user_detail.foo.user.3']->getUser());
701+
}
702+
668703
public function testTemplatesAreKeptBetweenFiles()
669704
{
670705
$expected = new ObjectSet(

0 commit comments

Comments
 (0)