ApiPlatform\Core\Tests\NelmioApiDoc\Extractor\AnnotationsProvider\ApiPlatformProviderTest::testGetAnnotations PHP Method

testGetAnnotations() public method

public testGetAnnotations ( )
    public function testGetAnnotations()
    {
        $resourceNameCollectionFactoryProphecy = $this->prophesize(ResourceNameCollectionFactoryInterface::class);
        $resourceNameCollectionFactoryProphecy->create()->willReturn(new ResourceNameCollection([Dummy::class]))->shouldBeCalled();
        $resourceNameCollectionFactory = $resourceNameCollectionFactoryProphecy->reveal();
        $apiDocumentationBuilderProphecy = $this->prophesize(NormalizerInterface::class);
        $hydraDoc = $this->getHydraDoc();
        $apiDocumentationBuilderProphecy->normalize(new Documentation(new ResourceNameCollection([Dummy::class])))->willReturn($hydraDoc)->shouldBeCalled();
        $apiDocumentationBuilder = $apiDocumentationBuilderProphecy->reveal();
        $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);
        $dummyResourceMetadata = (new ResourceMetadata())->withShortName('Dummy')->withItemOperations(['get' => ['method' => 'GET'], 'put' => ['method' => 'PUT'], 'delete' => ['method' => 'DELETE']])->withCollectionOperations(['get' => ['filters' => ['my_dummy.search'], 'method' => 'GET'], 'post' => ['method' => 'POST']]);
        $resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn($dummyResourceMetadata)->shouldBeCalled();
        $resourceMetadataFactory = $resourceMetadataFactoryProphecy->reveal();
        $dummySearchFilterProphecy = $this->prophesize(FilterInterface::class);
        $dummySearchFilterProphecy->getDescription(Dummy::class)->willReturn(['name' => ['property' => 'name', 'type' => 'string', 'required' => 'false', 'strategy' => 'partial']])->shouldBeCalled();
        $dummySearchFilter = $dummySearchFilterProphecy->reveal();
        $filters = new FilterCollection(['my_dummy.search' => $dummySearchFilter]);
        $operationMethodResolverProphecy = $this->prophesize(OperationMethodResolverInterface::class);
        $operationMethodResolverProphecy->getCollectionOperationMethod(Dummy::class, 'get')->willReturn('GET')->shouldBeCalled();
        $operationMethodResolverProphecy->getCollectionOperationMethod(Dummy::class, 'post')->willReturn('POST')->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationMethod(Dummy::class, 'get')->willReturn('GET')->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationMethod(Dummy::class, 'put')->willReturn('PUT')->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationMethod(Dummy::class, 'delete')->willReturn('DELETE')->shouldBeCalled();
        $operationMethodResolverProphecy->getCollectionOperationRoute(Dummy::class, 'get')->willReturn((new Route('/dummies'))->setMethods(['GET']))->shouldBeCalled();
        $operationMethodResolverProphecy->getCollectionOperationRoute(Dummy::class, 'post')->willReturn((new Route('/dummies'))->setMethods(['POST']))->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationRoute(Dummy::class, 'get')->willReturn((new Route('/dummies/{id}'))->setMethods(['GET']))->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationRoute(Dummy::class, 'put')->willReturn((new Route('/dummies/{id}'))->setMethods(['PUT']))->shouldBeCalled();
        $operationMethodResolverProphecy->getItemOperationRoute(Dummy::class, 'delete')->willReturn((new Route('/dummies/{id}'))->setMethods(['DELETE']))->shouldBeCalled();
        $operationMethodResolver = $operationMethodResolverProphecy->reveal();
        $apiPlatformProvider = new ApiPlatformProvider($resourceNameCollectionFactory, $apiDocumentationBuilder, $resourceMetadataFactory, $filters, $operationMethodResolver);
        $actual = $apiPlatformProvider->getAnnotations();
        $this->assertInternalType('array', $actual);
        $this->assertCount(5, $actual);
        $this->assertInstanceOf(ApiDoc::class, $actual[0]);
        $this->assertEquals('/dummies', $actual[0]->getResource());
        $this->assertEquals('Retrieves the collection of Dummy resources.', $actual[0]->getDescription());
        $this->assertEquals('Dummy', $actual[0]->getResourceDescription());
        $this->assertEquals('Dummy', $actual[0]->getSection());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::OUT_PREFIX, Dummy::class, 'get'), $actual[0]->getOutput());
        $this->assertEquals(['name' => ['property' => 'name', 'type' => 'string', 'required' => 'false', 'strategy' => 'partial']], $actual[0]->getFilters());
        $this->assertInstanceOf(Route::class, $actual[0]->getRoute());
        $this->assertEquals('/dummies', $actual[0]->getRoute()->getPath());
        $this->assertEquals(['GET'], $actual[0]->getRoute()->getMethods());
        $this->assertInstanceOf(ApiDoc::class, $actual[1]);
        $this->assertEquals('/dummies', $actual[1]->getResource());
        $this->assertEquals('Creates a Dummy resource.', $actual[1]->getDescription());
        $this->assertEquals('Dummy', $actual[1]->getResourceDescription());
        $this->assertEquals('Dummy', $actual[1]->getSection());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::IN_PREFIX, Dummy::class, 'post'), $actual[1]->getInput());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::OUT_PREFIX, Dummy::class, 'post'), $actual[1]->getOutput());
        $this->assertInstanceOf(Route::class, $actual[1]->getRoute());
        $this->assertEquals('/dummies', $actual[1]->getRoute()->getPath());
        $this->assertEquals(['POST'], $actual[1]->getRoute()->getMethods());
        $this->assertInstanceOf(ApiDoc::class, $actual[2]);
        $this->assertEquals('/dummies/{id}', $actual[2]->getResource());
        $this->assertEquals('Retrieves Dummy resource.', $actual[2]->getDescription());
        $this->assertEquals('Dummy', $actual[2]->getResourceDescription());
        $this->assertEquals('Dummy', $actual[2]->getSection());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::OUT_PREFIX, Dummy::class, 'get'), $actual[2]->getOutput());
        $this->assertInstanceOf(Route::class, $actual[2]->getRoute());
        $this->assertEquals('/dummies/{id}', $actual[2]->getRoute()->getPath());
        $this->assertEquals(['GET'], $actual[2]->getRoute()->getMethods());
        $this->assertInstanceOf(ApiDoc::class, $actual[3]);
        $this->assertEquals('/dummies/{id}', $actual[3]->getResource());
        $this->assertEquals('Replaces the Dummy resource.', $actual[3]->getDescription());
        $this->assertEquals('Dummy', $actual[3]->getResourceDescription());
        $this->assertEquals('Dummy', $actual[3]->getSection());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::IN_PREFIX, Dummy::class, 'put'), $actual[3]->getInput());
        $this->assertEquals(sprintf('%s:%s:%s', ApiPlatformParser::OUT_PREFIX, Dummy::class, 'put'), $actual[3]->getOutput());
        $this->assertInstanceOf(Route::class, $actual[3]->getRoute());
        $this->assertEquals('/dummies/{id}', $actual[3]->getRoute()->getPath());
        $this->assertEquals(['PUT'], $actual[3]->getRoute()->getMethods());
        $this->assertInstanceOf(ApiDoc::class, $actual[4]);
        $this->assertEquals('/dummies/{id}', $actual[4]->getResource());
        $this->assertEquals('Deletes the Dummy resource.', $actual[4]->getDescription());
        $this->assertEquals('Dummy', $actual[4]->getResourceDescription());
        $this->assertEquals('Dummy', $actual[4]->getSection());
        $this->assertInstanceOf(Route::class, $actual[4]->getRoute());
        $this->assertEquals('/dummies/{id}', $actual[4]->getRoute()->getPath());
        $this->assertEquals(['DELETE'], $actual[4]->getRoute()->getMethods());
    }