/** @test */ public function test_it() { $fooA = new \stdClass(); $fooB = new \stdClass(); $barA = new \stdClass(); $dip = new DestinationIdentityMap(); $this->assertFalse($dip->has('foo', 'a')); $this->assertFalse($dip->has('bar', 'a')); $dip->set('foo', 'a', $fooA); $this->assertTrue($dip->has('foo', 'a')); $this->assertFalse($dip->has('bar', 'a')); $this->assertSame($fooA, $dip->get('foo', 'a')); try { $dip->get('bar', 'a'); } catch (\RuntimeException $e) { $this->assertInstanceOf('\\RuntimeException', $e); } $dip->set('bar', 'a', $barA); $this->assertTrue($dip->has('foo', 'a')); $this->assertTrue($dip->has('bar', 'a')); $this->assertSame($fooA, $dip->get('foo', 'a')); $this->assertSame($barA, $dip->get('bar', 'a')); $dip->set('foo', 'b', $fooB); $this->assertSame($fooB, $dip->get('foo', 'b')); $this->assertSame($fooA, $dip->get('foo', 'a')); }
/** @test */ public function it_loads_one_type_several_relations_from_the_destination_identity_map() { $id1 = 'ups'; $id2 = 'yep'; $data1 = new \stdClass(); $data2 = new \ArrayObject(); $destinationIdentityMap = new DestinationIdentityMap(); $destinationIdentityMap->set('foo1', $id1, $data1); $destinationIdentityMap->set('foo2', $id2, $data2); $relationTypeProcessorObtainer = new MockeryCallableMock(); $relationLoader = new CallableRelationLoader(); $loader = new RelationsToLoadLoader($relationTypeProcessorObtainer, $destinationIdentityMap, $relationLoader); $oneRelationTypeProcessor = new OneRelationTypeProcessor(); $relationTypeProcessorObtainer->should()->with('one')->andReturn($oneRelationTypeProcessor); $loaderInfo1 = new MockeryCallableMock(); $loaderInfo2 = new MockeryCallableMock(); $destinationDef1 = new DestinationMetadata('foo1', $loaderInfo1); $destinationDef2 = new DestinationMetadata('foo2', $loaderInfo2); $relationDef1 = new RelationMetadata('bar', 'one', $destinationDef1); $relationDef2 = new RelationMetadata('bar', 'one', $destinationDef2); $relationsToLoad = [new RelationToLoad($relationDef1, new IdOneTypeNotLoadedRelation($id1)), new RelationToLoad($relationDef2, new IdOneTypeNotLoadedRelation($id2))]; $result = $loader($relationsToLoad); $expected = [new LoadedRelation($relationsToLoad[0], $data1), new LoadedRelation($relationsToLoad[1], $data2)]; $this->assertEquals($expected, $result); }