24
24
use ApiPlatform \Metadata \Resource \Factory \ResourceMetadataCollectionFactoryInterface ;
25
25
use ApiPlatform \Metadata \Resource \ResourceMetadataCollection ;
26
26
use ApiPlatform \Tests \Fixtures \TestBundle \Entity \AttributeResource ;
27
+ use ApiPlatform \Tests \Fixtures \TestBundle \Metadata \Get as CustomGet ;
27
28
use ApiPlatform \Tests \ProphecyTrait ;
28
29
use PHPUnit \Framework \TestCase ;
29
30
use Prophecy \Argument ;
@@ -68,8 +69,8 @@ class: AttributeResource::class
68
69
new ApiResource (
69
70
shortName: 'AttributeResource ' ,
70
71
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),
72
72
'_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),
73
74
],
74
75
uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
75
76
class: AttributeResource::class
@@ -88,8 +89,55 @@ class: AttributeResource::class
88
89
new ApiResource (
89
90
shortName: 'AttributeResource ' ,
90
91
operations: [
92
+ '_api_AttributeResource_get_collection ' => new GetCollection (controller: 'api_platform.action.placeholder ' , shortName: 'AttributeResource ' , class: AttributeResource::class),
91
93
'_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: [
92
139
'_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),
93
141
],
94
142
uriVariables: ['id ' => new Link (fromClass: AttributeResource::class, identifiers: ['id ' ])],
95
143
class: AttributeResource::class
0 commit comments