public function testNormalize() { $dummy = new Dummy(); $dummy->setName('hello'); $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class); $resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadata('Dummy')); $propertyNameCollection = new PropertyNameCollection(['name']); $propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class); $propertyNameCollectionFactoryProphecy->create(Dummy::class, [])->willReturn($propertyNameCollection)->shouldBeCalled(); $propertyMetadataFactory = new PropertyMetadata(null, null, true); $propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class); $propertyMetadataFactoryProphecy->create(Dummy::class, 'name', [])->willReturn($propertyMetadataFactory)->shouldBeCalled(); $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); $iriConverterProphecy->getIriFromItem($dummy)->willReturn('/dummies/1988')->shouldBeCalled(); $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); $resourceClassResolverProphecy->getResourceClass($dummy, null, true)->willReturn(Dummy::class)->shouldBeCalled(); $serializerProphecy = $this->prophesize(SerializerInterface::class); $serializerProphecy->willImplement(NormalizerInterface::class); $serializerProphecy->normalize('hello', null, Argument::type('array'))->willReturn('hello')->shouldBeCalled(); $contextBuilderProphecy = $this->prophesize(ContextBuilderInterface::class); $contextBuilderProphecy->getResourceContextUri(Dummy::class)->willReturn('/contexts/Dummy'); $normalizer = new ItemNormalizer($resourceMetadataFactoryProphecy->reveal(), $propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $contextBuilderProphecy->reveal()); $normalizer->setSerializer($serializerProphecy->reveal()); $expected = ['@context' => '/contexts/Dummy', '@id' => '/dummies/1988', '@type' => 'Dummy', 'name' => 'hello']; $this->assertEquals($expected, $normalizer->normalize($dummy)); }
public function testNormalize() { $relatedDummy = new RelatedDummy(); $dummy = new Dummy(); $dummy->setName('foo'); $dummy->setRelatedDummy($relatedDummy); $dummy->relatedDummies->add(new RelatedDummy()); $propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class); $propertyNameCollectionFactoryProphecy->create(Dummy::class, [])->willReturn(new PropertyNameCollection(['name', 'relatedDummy', 'relatedDummies']))->shouldBeCalled(); $propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class); $propertyMetadataFactoryProphecy->create(Dummy::class, 'name', [])->willReturn(new PropertyMetadata(new Type(Type::BUILTIN_TYPE_STRING), '', true))->shouldBeCalled(); $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy', [])->willReturn(new PropertyMetadata(new Type(Type::BUILTIN_TYPE_OBJECT, false, RelatedDummy::class), '', true, false, false))->shouldBeCalled(); $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummies', [])->willReturn(new PropertyMetadata(new Type(Type::BUILTIN_TYPE_OBJECT, false, ArrayCollection::class, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_OBJECT, false, RelatedDummy::class)), '', true, false, false))->shouldBeCalled(); $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); $iriConverterProphecy->getIriFromItem($relatedDummy)->willReturn('/dummies/2')->shouldBeCalled(); $propertyAccesorProphecy = $this->prophesize(PropertyAccessorInterface::class); $propertyAccesorProphecy->getValue($dummy, 'name')->willReturn('foo')->shouldBeCalled(); $propertyAccesorProphecy->getValue($dummy, 'relatedDummy')->willReturn($relatedDummy)->shouldBeCalled(); $propertyAccesorProphecy->getValue($dummy, 'relatedDummies')->willReturn(new ArrayCollection([$relatedDummy]))->shouldBeCalled(); $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); $resourceClassResolverProphecy->getResourceClass($dummy, null, true)->willReturn(Dummy::class)->shouldBeCalled(); $resourceClassResolverProphecy->isResourceClass(RelatedDummy::class)->willReturn(RelatedDummy::class)->shouldBeCalled(); $serializerProphecy = $this->prophesize(SerializerInterface::class); $serializerProphecy->willImplement(NormalizerInterface::class); $serializerProphecy->normalize('foo', null, Argument::type('array'))->willReturn('foo')->shouldBeCalled(); $serializerProphecy->normalize(['/dummies/2'], null, Argument::type('array'))->willReturn(['/dummies/2'])->shouldBeCalled(); $normalizer = $this->getMockForAbstractClass(AbstractItemNormalizer::class, [$propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccesorProphecy->reveal()]); $normalizer->setSerializer($serializerProphecy->reveal()); $this->assertEquals(['name' => 'foo', 'relatedDummy' => '/dummies/2', 'relatedDummies' => ['/dummies/2']], $normalizer->normalize($dummy)); }
public function testIsResourceClassWithIntendedClassName() { $dummy = new Dummy(); $dummy->setName('Smail'); $resourceNameCollectionFactoryProphecy = $this->prophesize(ResourceNameCollectionFactoryInterface::class); $resourceNameCollectionFactoryProphecy->create()->willReturn(new ResourceNameCollection([Dummy::class]))->shouldBeCalled(); $resourceClassResolver = new ResourceClassResolver($resourceNameCollectionFactoryProphecy->reveal()); $resourceClass = $resourceClassResolver->isResourceClass(Dummy::class); $this->assertTrue($resourceClass); }
public function testGetItem() { $dummy = new Dummy(); $dummy->setName('Lucie'); $firstDataProvider = $this->prophesize(ItemDataProviderInterface::class); $firstDataProvider->getItem(Dummy::class, 1, null, [])->willThrow(ResourceClassNotSupportedException::class); $secondDataProvider = $this->prophesize(ItemDataProviderInterface::class); $secondDataProvider->getItem(Dummy::class, 1, null, [])->willReturn($dummy); $thirdDataProvider = $this->prophesize(ItemDataProviderInterface::class); $thirdDataProvider->getItem(Dummy::class, 1, null, [])->willReturn(new \stdClass()); $chainItemDataProvider = new ChainItemDataProvider([$firstDataProvider->reveal(), $secondDataProvider->reveal(), $thirdDataProvider->reveal()]); $this->assertEquals($dummy, $chainItemDataProvider->getItem(Dummy::class, 1)); }
public function testGetCollection() { $dummy = new Dummy(); $dummy->setName('Rosa'); $dummy2 = new Dummy(); $dummy2->setName('Parks'); $firstDataProvider = $this->prophesize(CollectionDataProviderInterface::class); $firstDataProvider->getCollection(Dummy::class, null)->willReturn([$dummy, $dummy2])->willThrow(ResourceClassNotSupportedException::class); $secondDataProvider = $this->prophesize(CollectionDataProviderInterface::class); $secondDataProvider->getCollection(Dummy::class, null)->willReturn([$dummy, $dummy2]); $thirdDataProvider = $this->prophesize(CollectionDataProviderInterface::class); $thirdDataProvider->getCollection(Dummy::class, null)->willReturn([$dummy]); $chainItemDataProvider = new ChainCollectionDataProvider([$firstDataProvider->reveal(), $secondDataProvider->reveal(), $thirdDataProvider->reveal()]); $this->assertEquals([$dummy, $dummy2], $chainItemDataProvider->getCollection(Dummy::class)); }
public function testNormalize() { $dummy = new Dummy(); $dummy->setName('hello'); $propertyNameCollection = new PropertyNameCollection(['name']); $propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class); $propertyNameCollectionFactoryProphecy->create(Dummy::class, [])->willReturn($propertyNameCollection)->shouldBeCalled(); $propertyMetadataFactory = new PropertyMetadata(null, null, true); $propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class); $propertyMetadataFactoryProphecy->create(Dummy::class, 'name', [])->willReturn($propertyMetadataFactory)->shouldBeCalled(); $iriConverterProphecy = $this->prophesize(IriConverterInterface::class); $resourceClassResolverProphecy = $this->prophesize(ResourceClassResolverInterface::class); $resourceClassResolverProphecy->getResourceClass($dummy, null, true)->willReturn(Dummy::class)->shouldBeCalled(); $serializerProphecy = $this->prophesize(SerializerInterface::class); $serializerProphecy->willImplement(NormalizerInterface::class); $serializerProphecy->normalize('hello', null, Argument::type('array'))->willReturn('hello')->shouldBeCalled(); $normalizer = new ItemNormalizer($propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal()); $normalizer->setSerializer($serializerProphecy->reveal()); $this->assertEquals(['name' => 'hello'], $normalizer->normalize($dummy)); }
/** * @Given there is :nb dummy objects with dummyBoolean :bool */ public function thereIsDummyObjectsWithDummyBoolean($nb, $bool) { $descriptions = ['Smart dummy.', 'Not so smart dummy.']; for ($i = 1; $i <= $nb; ++$i) { $dummy = new Dummy(); $dummy->setName('Dummy #' . $i); $dummy->setAlias('Alias #' . ($nb - $i)); $dummy->setDescription($descriptions[($i - 1) % 2]); $dummy->setDummyBoolean((bool) $bool); $this->manager->persist($dummy); } $this->manager->flush(); }
public function testOnKernelViewWithNoManager() { $dummy = new Dummy(); $dummy->setName('Dummyrino'); $managerRegistryProphecy = $this->prophesize(ManagerRegistry::class); $managerRegistryProphecy->getManagerForClass('Dummy')->willReturn(null); $writeListener = new WriteListener($managerRegistryProphecy->reveal()); $httpKernelProphecy = $this->prophesize(HttpKernelInterface::class); $request = new Request(); $request->setMethod(Request::METHOD_DELETE); $request->attributes->set('_api_resource_class', 'Dummy'); $event = new GetResponseForControllerResultEvent($httpKernelProphecy->reveal(), $request, HttpKernelInterface::MASTER_REQUEST, $dummy); $this->assertNull($writeListener->onKernelView($event)); $this->assertNotEquals($dummy, $writeListener->onKernelView($event)); }