Author: Kévin Dunglas (dunglas@gmail.com)
Example #1
0
 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 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));
 }
Example #5
0
 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));
 }
Example #6
0
 /**
  * @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 testNormalizeReadableLinks()
 {
     $relatedDummy = new RelatedDummy();
     $dummy = new Dummy();
     $dummy->setRelatedDummy($relatedDummy);
     $dummy->relatedDummies->add(new RelatedDummy());
     $propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class);
     $propertyNameCollectionFactoryProphecy->create(Dummy::class, [])->willReturn(new PropertyNameCollection(['relatedDummy', 'relatedDummies']))->shouldBeCalled();
     $propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class);
     $propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy', [])->willReturn(new PropertyMetadata(new Type(Type::BUILTIN_TYPE_OBJECT, false, RelatedDummy::class), '', true, false, true))->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, true))->shouldBeCalled();
     $iriConverterProphecy = $this->prophesize(IriConverterInterface::class);
     $propertyAccessorProphecy = $this->prophesize(PropertyAccessorInterface::class);
     $propertyAccessorProphecy->getValue($dummy, 'relatedDummy')->willReturn($relatedDummy)->shouldBeCalled();
     $propertyAccessorProphecy->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($relatedDummy, null, Argument::type('array'))->willReturn(['foo' => 'hello'])->shouldBeCalled();
     $serializerProphecy->normalize(['foo' => 'hello'], null, Argument::type('array'))->willReturn(['foo' => 'hello'])->shouldBeCalled();
     $serializerProphecy->normalize([['foo' => 'hello']], null, Argument::type('array'))->willReturn([['foo' => 'hello']])->shouldBeCalled();
     $normalizer = $this->getMockForAbstractClass(AbstractItemNormalizer::class, [$propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $iriConverterProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $propertyAccessorProphecy->reveal()]);
     $normalizer->setSerializer($serializerProphecy->reveal());
     $this->assertEquals(['relatedDummy' => ['foo' => 'hello'], 'relatedDummies' => [['foo' => 'hello']]], $normalizer->normalize($dummy));
 }
Example #8
0
 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));
 }