2424use ApiPlatform \Metadata \Resource \Factory \ResourceMetadataCollectionFactoryInterface ;
2525use ApiPlatform \Metadata \Resource \ResourceMetadataCollection ;
2626use ApiPlatform \Tests \Fixtures \TestBundle \Entity \AttributeResource ;
27+ use ApiPlatform \Tests \Fixtures \TestBundle \Metadata \Get as CustomGet ;
2728use ApiPlatform \Tests \ProphecyTrait ;
2829use PHPUnit \Framework \TestCase ;
2930use Prophecy \Argument ;
@@ -68,8 +69,8 @@ class: AttributeResource::class
6869 new ApiResource (
6970 shortName: 'AttributeResource ' ,
7071 operations: [
71- '_api_AttributeResource_get ' => new Get (uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])], controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
7272 '_api_AttributeResource_get_collection ' => new GetCollection (controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
73+ '_api_AttributeResource_get ' => new Get (uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])], controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
7374 ],
7475 uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
7576 class: AttributeResource::class
@@ -88,8 +89,55 @@ class: AttributeResource::class
8889 new ApiResource (
8990 shortName: 'AttributeResource ' ,
9091 operations: [
92+ '_api_AttributeResource_get_collection ' => new GetCollection (controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
9193 '_api_AttributeResource_get ' => new Get (uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])], controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
94+ ],
95+ uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
96+ class: AttributeResource::class
97+ ),
98+ ]),
99+ $ factory ->create (AttributeResource::class)
100+ );
101+ }
102+
103+ public function testItIgnoresResourcesWithAnItemOperationUsingCustomClass ()
104+ {
105+ $ linkFactoryProphecy = $ this ->prophesize (LinkFactoryInterface::class);
106+ $ linkFactoryProphecy ->createLinksFromIdentifiers (Argument::type (HttpOperation::class))->shouldNotBeCalled ();
107+
108+ $ resourceCollectionMetadataFactoryProphecy = $ this ->prophesize (ResourceMetadataCollectionFactoryInterface::class);
109+ $ resourceCollectionMetadataFactoryProphecy ->create (AttributeResource::class)->willReturn (
110+ new ResourceMetadataCollection (AttributeResource::class, [
111+ new ApiResource (
112+ shortName: 'AttributeResource ' ,
113+ operations: [],
114+ class: AttributeResource::class
115+ ),
116+ new ApiResource (
117+ shortName: 'AttributeResource ' ,
118+ operations: [
119+ '_api_AttributeResource_get_collection ' => new GetCollection (controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
120+ '_api_AttributeResource_get ' => new CustomGet (uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])], controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
121+ ],
122+ uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
123+ class: AttributeResource::class
124+ ),
125+ ]),
126+ );
127+
128+ $ factory = new NotExposedOperationResourceMetadataCollectionFactory ($ linkFactoryProphecy ->reveal (), $ resourceCollectionMetadataFactoryProphecy ->reveal ());
129+ $ this ->assertEquals (
130+ new ResourceMetadataCollection (AttributeResource::class, [
131+ new ApiResource (
132+ shortName: 'AttributeResource ' ,
133+ operations: [],
134+ class: AttributeResource::class
135+ ),
136+ new ApiResource (
137+ shortName: 'AttributeResource ' ,
138+ operations: [
92139 '_api_AttributeResource_get_collection ' => new GetCollection (controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
140+ '_api_AttributeResource_get ' => new CustomGet (uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])], controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
93141 ],
94142 uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
95143 class: AttributeResource::class
0 commit comments