Skip to content

Commit 76e7cef

Browse files
bendaviesabluchet
authored andcommitted
expand test coverage of IdentifiersExtractors
1 parent 89276bd commit 76e7cef

File tree

2 files changed

+117
-72
lines changed

2 files changed

+117
-72
lines changed

tests/Api/CachedIdentifiersExtractorTest.php

Lines changed: 64 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,21 @@
2929
*/
3030
class CachedIdentifiersExtractorTest extends TestCase
3131
{
32-
public function identifiersProvider()
32+
public function itemProvider()
3333
{
34-
yield [1, 1];
35-
yield [$uuid = new Uuid(), $uuid->__toString()];
34+
$dummy = new Dummy();
35+
$dummy->setId($id = 1);
36+
yield [$dummy, ['id' => $id]];
37+
38+
$dummy = new Dummy();
39+
$dummy->setId($id = new Uuid());
40+
yield [$dummy, ['id' => $id]];
3641
}
3742

3843
/**
39-
* @dataProvider identifiersProvider
44+
* @dataProvider itemProvider
4045
*/
41-
public function testFirstPass($identifier, $identifierValue)
46+
public function testFirstPass($item, $expected)
4247
{
4348
$key = 'iri_identifiers'.md5(Dummy::class);
4449

@@ -50,29 +55,25 @@ public function testFirstPass($identifier, $identifierValue)
5055
$cacheItemPool->getItem($key)->shouldBeCalled()->willReturn($cacheItem);
5156
$cacheItemPool->save($cacheItem)->shouldBeCalled();
5257

53-
$dummy = new Dummy();
54-
$dummy->setId($identifier);
55-
5658
$decoration = $this->prophesize(IdentifiersExtractorInterface::class);
57-
$decoration->getIdentifiersFromItem($dummy)->shouldBeCalled()->willReturn(['id' => $identifierValue]);
59+
$decoration->getIdentifiersFromItem($item)->shouldBeCalled()->willReturn($expected);
5860

5961
$identifiersExtractor = new CachedIdentifiersExtractor($cacheItemPool->reveal(), $decoration->reveal(), null, $this->getResourceClassResolver());
6062

61-
$expectedResult = ['id' => $identifierValue];
62-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy));
63-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy), 'Trigger the local cache');
63+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
64+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item), 'Trigger the local cache');
6465

6566
$decoration->getIdentifiersFromResourceClass(Dummy::class)->shouldBeCalled()->willReturn(['id']);
6667

6768
$expectedResult = ['id'];
68-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
69-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class), 'Trigger the local cache');
69+
$this->assertSame($expectedResult, $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
70+
$this->assertSame($expectedResult, $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class), 'Trigger the local cache');
7071
}
7172

7273
/**
73-
* @dataProvider identifiersProvider
74+
* @dataProvider itemProvider
7475
*/
75-
public function testSecondPass($identifier, $identifierValue)
76+
public function testSecondPass($item, $expected)
7677
{
7778
$key = 'iri_identifiers'.md5(Dummy::class);
7879

@@ -83,20 +84,49 @@ public function testSecondPass($identifier, $identifierValue)
8384
$cacheItemPool = $this->prophesize(CacheItemPoolInterface::class);
8485
$cacheItemPool->getItem($key)->shouldBeCalled()->willReturn($cacheItem);
8586

86-
$dummy = new Dummy();
87-
$dummy->setId($identifier);
88-
8987
$decoration = $this->prophesize(IdentifiersExtractorInterface::class);
90-
$decoration->getIdentifiersFromItem($dummy)->shouldNotBeCalled();
88+
$decoration->getIdentifiersFromItem($item)->shouldNotBeCalled();
9189

9290
$identifiersExtractor = new CachedIdentifiersExtractor($cacheItemPool->reveal(), $decoration->reveal(), null, $this->getResourceClassResolver());
9391

94-
$expectedResult = ['id' => $identifierValue];
95-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy));
96-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy), 'Trigger the local cache');
92+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
93+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item), 'Trigger the local cache');
9794
}
9895

99-
public function testFirstPassWithRelated()
96+
public function identifiersRelatedProvider()
97+
{
98+
$related = new RelatedDummy();
99+
$related->setId($relatedId = 2);
100+
101+
$dummy = new Dummy();
102+
$dummy->setId($id = 1);
103+
$dummy->setRelatedDummy($related);
104+
105+
yield [$dummy, ['id' => $id, 'relatedDummy' => $relatedId]];
106+
107+
$related = new RelatedDummy();
108+
$related->setId($relatedId = 1);
109+
110+
$dummy = new Dummy();
111+
$dummy->setId($id = new Uuid());
112+
$dummy->setRelatedDummy($related);
113+
114+
yield [$dummy, ['id' => $id, 'relatedDummy' => $relatedId]];
115+
116+
$related = new RelatedDummy();
117+
$related->setId($relatedId = new Uuid());
118+
119+
$dummy = new Dummy();
120+
$dummy->setId($id = new Uuid());
121+
$dummy->setRelatedDummy($related);
122+
123+
yield [$dummy, ['id' => $id, 'relatedDummy' => $relatedId]];
124+
}
125+
126+
/**
127+
* @dataProvider identifiersRelatedProvider
128+
*/
129+
public function testFirstPassWithRelated($item, $expected)
100130
{
101131
$key = 'iri_identifiers'.md5(Dummy::class);
102132
$keyRelated = 'iri_identifiers'.md5(RelatedDummy::class);
@@ -112,24 +142,19 @@ public function testFirstPassWithRelated()
112142
$cacheItemPool->getItem($key)->shouldBeCalled()->willReturn($cacheItem);
113143
$cacheItemPool->getItem($keyRelated)->shouldBeCalled()->willReturn($cacheItemRelated);
114144

115-
$related = new RelatedDummy();
116-
$related->setId(1);
117-
118-
$dummy = new Dummy();
119-
$dummy->setId(1);
120-
$dummy->setRelatedDummy($related);
121-
122145
$decoration = $this->prophesize(IdentifiersExtractorInterface::class);
123-
$decoration->getIdentifiersFromItem($dummy)->shouldBeCalled()->willReturn(['id' => 1, 'relatedDummy' => 1]);
146+
$decoration->getIdentifiersFromItem($item)->shouldBeCalled()->willReturn($expected);
124147

125148
$identifiersExtractor = new CachedIdentifiersExtractor($cacheItemPool->reveal(), $decoration->reveal(), null, $this->getResourceClassResolver());
126149

127-
$expectedResult = ['id' => 1, 'relatedDummy' => 1];
128-
$this->assertEquals(['id' => 1, 'relatedDummy' => 1], $identifiersExtractor->getIdentifiersFromItem($dummy));
129-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy), 'Trigger the local cache');
150+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
151+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item), 'Trigger the local cache');
130152
}
131153

132-
public function testSecondPassWithRelated()
154+
/**
155+
* @dataProvider identifiersRelatedProvider
156+
*/
157+
public function testSecondPassWithRelated($item, $expected)
133158
{
134159
$key = 'iri_identifiers'.md5(Dummy::class);
135160
$keyRelated = 'iri_identifiers'.md5(RelatedDummy::class);
@@ -146,21 +171,13 @@ public function testSecondPassWithRelated()
146171
$cacheItemPool->getItem($key)->shouldBeCalled()->willReturn($cacheItem);
147172
$cacheItemPool->getItem($keyRelated)->shouldBeCalled()->willReturn($cacheItemRelated);
148173

149-
$related = new RelatedDummy();
150-
$related->setId(1);
151-
152-
$dummy = new Dummy();
153-
$dummy->setId(1);
154-
$dummy->setRelatedDummy($related);
155-
156174
$decoration = $this->prophesize(IdentifiersExtractorInterface::class);
157-
$decoration->getIdentifiersFromItem($dummy)->shouldNotBeCalled();
175+
$decoration->getIdentifiersFromItem($item)->shouldNotBeCalled();
158176

159177
$identifiersExtractor = new CachedIdentifiersExtractor($cacheItemPool->reveal(), $decoration->reveal(), null, $this->getResourceClassResolver());
160178

161-
$expectedResult = ['id' => 1, 'relatedDummy' => 1];
162-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy));
163-
$this->assertEquals($expectedResult, $identifiersExtractor->getIdentifiersFromItem($dummy), 'Trigger the local cache');
179+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
180+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item), 'Trigger the local cache');
164181
}
165182

166183
/**

tests/Api/IdentifiersExtractorTest.php

Lines changed: 53 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function testGetIdentifiersFromResourceClass()
5757

5858
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
5959

60-
$this->assertEquals(['id'], $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
60+
$this->assertSame(['id'], $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
6161
}
6262

6363
public function testGetCompositeIdentifiersFromResourceClass()
@@ -66,62 +66,90 @@ public function testGetCompositeIdentifiersFromResourceClass()
6666

6767
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
6868

69-
$this->assertEquals(['id', 'name'], $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
69+
$this->assertSame(['id', 'name'], $identifiersExtractor->getIdentifiersFromResourceClass(Dummy::class));
7070
}
7171

72-
public function testGetIdentifiersFromItem()
72+
public function itemProvider()
7373
{
74-
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(Dummy::class, ['id']);
75-
76-
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
77-
7874
$dummy = new Dummy();
7975
$dummy->setId(1);
76+
yield [$dummy, ['id' => 1]];
8077

81-
$this->assertEquals(['id' => 1], $identifiersExtractor->getIdentifiersFromItem($dummy));
78+
$uuid = new Uuid();
79+
$dummy = new Dummy();
80+
$dummy->setId($uuid);
81+
yield [$dummy, ['id' => $uuid]];
8282
}
8383

84-
public function testUseObjectIdentifier()
84+
/**
85+
* @dataProvider itemProvider
86+
*/
87+
public function testGetIdentifiersFromItem($item, $expected)
8588
{
8689
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(Dummy::class, ['id']);
8790

8891
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
8992

90-
$uuid = new Uuid();
91-
$dummy = new Dummy();
92-
$dummy->setId($uuid);
93-
94-
$this->assertEquals(['id' => $uuid], $identifiersExtractor->getIdentifiersFromItem($dummy));
93+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
9594
}
9695

97-
public function testGetCompositeIdentifiersFromItem()
96+
public function itemProviderComposite()
9897
{
99-
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(Dummy::class, ['id', 'name']);
100-
101-
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
102-
10398
$dummy = new Dummy();
10499
$dummy->setId(1);
105100
$dummy->setName('foo');
101+
yield [$dummy, ['id' => 1, 'name' => 'foo']];
106102

107-
$this->assertEquals(['id' => 1, 'name' => 'foo'], $identifiersExtractor->getIdentifiersFromItem($dummy));
103+
$dummy = new Dummy();
104+
$dummy->setId($uuid = new Uuid());
105+
$dummy->setName('foo');
106+
yield [$dummy, ['id' => $uuid, 'name' => 'foo']];
108107
}
109108

110-
public function testGetRelatedIdentifiersFromItem()
109+
/**
110+
* @dataProvider itemProviderComposite
111+
*/
112+
public function testGetCompositeIdentifiersFromItem($item, $expected)
111113
{
112-
$prophecies = $this->getMetadataFactoryProphecies(Dummy::class, ['id', 'relatedDummy']);
113-
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(RelatedDummy::class, ['id'], $prophecies);
114+
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(Dummy::class, ['id', 'name']);
114115

115116
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
116117

118+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
119+
}
120+
121+
public function itemProviderRelated()
122+
{
117123
$related = new RelatedDummy();
118124
$related->setId(2);
119125

120126
$dummy = new Dummy();
121127
$dummy->setId(1);
122128
$dummy->setRelatedDummy($related);
129+
yield [$dummy, ['id' => 1, 'relatedDummy' => 2]];
130+
131+
$uuid2 = new Uuid();
132+
$related = new RelatedDummy();
133+
$related->setId($uuid2);
134+
135+
$uuid = new Uuid();
136+
$dummy = new Dummy();
137+
$dummy->setId($uuid);
138+
$dummy->setRelatedDummy($related);
139+
yield [$dummy, ['id' => $uuid, 'relatedDummy' => $uuid2]];
140+
}
141+
142+
/**
143+
* @dataProvider itemProviderRelated
144+
*/
145+
public function testGetRelatedIdentifiersFromItem($item, $expected)
146+
{
147+
$prophecies = $this->getMetadataFactoryProphecies(Dummy::class, ['id', 'relatedDummy']);
148+
list($propertyNameCollectionFactoryProphecy, $propertyMetadataFactoryProphecy) = $this->getMetadataFactoryProphecies(RelatedDummy::class, ['id'], $prophecies);
149+
150+
$identifiersExtractor = new IdentifiersExtractor($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), null, $this->getResourceClassResolver());
123151

124-
$this->assertEquals(['id' => 1, 'relatedDummy' => 2], $identifiersExtractor->getIdentifiersFromItem($dummy));
152+
$this->assertSame($expected, $identifiersExtractor->getIdentifiersFromItem($item));
125153
}
126154

127155
/**
@@ -172,6 +200,6 @@ public function testLegacyGetIdentifiersFromItem()
172200
$dummy = new Dummy();
173201
$dummy->setId(1);
174202

175-
$this->assertEquals(['id' => 1], $identifiersExtractor->getIdentifiersFromItem($dummy));
203+
$this->assertSame(['id' => 1], $identifiersExtractor->getIdentifiersFromItem($dummy));
176204
}
177205
}

0 commit comments

Comments
 (0)