2222use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \Issue7298 \ImageModuleResource ;
2323use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \Issue7298 \PageResource ;
2424use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \Issue7298 \TitleModuleResource ;
25+ use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \ItemUriTemplateWithCollection \Recipe ;
26+ use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \ItemUriTemplateWithCollection \RecipeCollection ;
2527use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Issue6465 \Bar ;
2628use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Issue6465 \Foo ;
29+ use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Recipe as EntityRecipe ;
2730use ApiPlatform \Tests \SetupClassResourcesTrait ;
2831use Doctrine \ORM \EntityManagerInterface ;
2932use Doctrine \ORM \Tools \SchemaTool ;
@@ -39,7 +42,20 @@ class JsonLdTest extends ApiTestCase
3942 */
4043 public static function getResources (): array
4144 {
42- return [Foo::class, Bar::class, JsonLdContextOutput::class, GenIdFalse::class, AggregateRating::class, LevelFirst::class, LevelThird::class, PageResource::class, TitleModuleResource::class, ImageModuleResource::class];
45+ return [
46+ Foo::class,
47+ Bar::class,
48+ JsonLdContextOutput::class,
49+ GenIdFalse::class,
50+ AggregateRating::class,
51+ LevelFirst::class,
52+ LevelThird::class,
53+ PageResource::class,
54+ TitleModuleResource::class,
55+ ImageModuleResource::class,
56+ Recipe::class,
57+ RecipeCollection::class,
58+ ];
4359 }
4460
4561 /**
@@ -129,6 +145,83 @@ public function testIssue7298(): void
129145 ]);
130146 }
131147
148+ public function testItemUriTemplate (): void
149+ {
150+ self ::createClient ()->request (
151+ 'GET ' ,
152+ '/item_uri_template_recipes ' ,
153+ );
154+ $ this ->assertResponseIsSuccessful ();
155+
156+ $ this ->assertJsonContains ([
157+ 'member ' => [
158+ [
159+ '@type ' => 'RecipeCollection ' ,
160+ '@id ' => '/item_uri_template_recipes/1 ' ,
161+ 'name ' => 'Dummy Recipe ' ,
162+ ],
163+ [
164+ '@type ' => 'RecipeCollection ' ,
165+ '@id ' => '/item_uri_template_recipes/2 ' ,
166+ 'name ' => 'Dummy Recipe 2 ' ,
167+ ],
168+ ],
169+ ]);
170+ }
171+
172+ public function testItemUriTemplateWithStateOption (): void
173+ {
174+ $ container = static ::getContainer ();
175+ $ registry = $ container ->get ('doctrine ' );
176+ $ manager = $ registry ->getManager ();
177+ for ($ i = 0 ; $ i < 10 ; ++$ i ) {
178+ $ recipe = new EntityRecipe ();
179+ $ recipe ->name = "Recipe $ i " ;
180+ $ recipe ->description = "Description of recipe $ i " ;
181+ $ recipe ->author = "Author $ i " ;
182+ $ recipe ->recipeIngredient = [
183+ "Ingredient 1 for recipe $ i " ,
184+ "Ingredient 2 for recipe $ i " ,
185+ ];
186+ $ recipe ->recipeInstructions = "Instructions for recipe $ i " ;
187+ $ recipe ->prepTime = '10 minutes ' ;
188+ $ recipe ->cookTime = '20 minutes ' ;
189+ $ recipe ->totalTime = '30 minutes ' ;
190+ $ recipe ->recipeCategory = "Category $ i " ;
191+ $ recipe ->recipeCuisine = "Cuisine $ i " ;
192+ $ recipe ->suitableForDiet = "Diet $ i " ;
193+
194+ $ manager ->persist ($ recipe );
195+ }
196+ $ manager ->flush ();
197+
198+ self ::createClient ()->request (
199+ 'GET ' ,
200+ '/item_uri_template_recipes_state_option ' ,
201+ );
202+ $ this ->assertResponseIsSuccessful ();
203+
204+ $ this ->assertJsonContains ([
205+ 'member ' => [
206+ [
207+ '@type ' => 'Recipe ' ,
208+ '@id ' => '/item_uri_template_recipes_state_option/1 ' ,
209+ 'name ' => 'Recipe 0 ' ,
210+ ],
211+ [
212+ '@type ' => 'Recipe ' ,
213+ '@id ' => '/item_uri_template_recipes_state_option/2 ' ,
214+ 'name ' => 'Recipe 1 ' ,
215+ ],
216+ [
217+ '@type ' => 'Recipe ' ,
218+ '@id ' => '/item_uri_template_recipes_state_option/3 ' ,
219+ 'name ' => 'Recipe 2 ' ,
220+ ],
221+ ],
222+ ]);
223+ }
224+
132225 protected function setUp (): void
133226 {
134227 self ::bootKernel ();
@@ -141,7 +234,7 @@ protected function setUp(): void
141234 }
142235
143236 $ classes = [];
144- foreach ([Foo::class, Bar::class] as $ entityClass ) {
237+ foreach ([Foo::class, Bar::class, EntityRecipe::class ] as $ entityClass ) {
145238 $ classes [] = $ manager ->getClassMetadata ($ entityClass );
146239 }
147240
0 commit comments