@@ -228,10 +228,45 @@ public function testJsonApiIncludesSchema(): void
228228 $ this ->tester ->run (['command ' => 'api:json-schema:generate ' , 'resource ' => 'ApiPlatform\Tests\Fixtures\TestBundle\Entity\Question ' , '--type ' => 'output ' , '--format ' => 'jsonapi ' ]);
229229 $ result = $ this ->tester ->getDisplay ();
230230 $ json = json_decode ($ result , associative: true );
231+ $ properties = $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['data ' ]['properties ' ];
232+ $ included = $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['included ' ];
231233
232- $ this ->assertArrayHasKey ('answer ' , $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['data ' ]['properties ' ]['relationships ' ]['properties ' ]);
233- $ this ->assertArrayHasKey ('anyOf ' , $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['included ' ]['items ' ]);
234- $ this ->assertArrayHasKey ('$ref ' , $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['included ' ]['items ' ]['anyOf ' ][0 ]);
235- $ this ->assertSame ('#/definitions/Answer.jsonapi ' , $ json ['definitions ' ]['Question.jsonapi ' ]['properties ' ]['included ' ]['items ' ]['anyOf ' ][0 ]['$ref ' ]);
234+ $ this ->assertArrayHasKey ('answer ' , $ properties ['relationships ' ]['properties ' ]);
235+ $ this ->assertArrayHasKey ('anyOf ' , $ included ['items ' ]);
236+ $ this ->assertCount (1 , $ included ['items ' ]['anyOf ' ]);
237+ $ this ->assertArrayHasKey ('$ref ' , $ included ['items ' ]['anyOf ' ][0 ]);
238+ $ this ->assertSame ('#/definitions/Answer.jsonapi ' , $ included ['items ' ]['anyOf ' ][0 ]['$ref ' ]);
239+
240+ $ this ->tester ->run (['command ' => 'api:json-schema:generate ' , 'resource ' => 'ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\AnimalObservation ' , '--type ' => 'output ' , '--format ' => 'jsonapi ' ]);
241+ $ result = $ this ->tester ->getDisplay ();
242+ $ json = json_decode ($ result , associative: true );
243+ $ properties = $ json ['definitions ' ]['AnimalObservation.jsonapi ' ]['properties ' ]['data ' ]['properties ' ];
244+ $ included = $ json ['definitions ' ]['AnimalObservation.jsonapi ' ]['properties ' ]['included ' ];
245+
246+ $ this ->assertArrayHasKey ('individuals ' , $ properties ['relationships ' ]['properties ' ]);
247+ $ this ->assertArrayNotHasKey ('individuals ' , $ properties ['attributes ' ]['properties ' ]);
248+ $ this ->assertArrayHasKey ('anyOf ' , $ included ['items ' ]);
249+ $ this ->assertCount (1 , $ included ['items ' ]['anyOf ' ]);
250+ $ this ->assertSame ('#/definitions/Animal.jsonapi ' , $ included ['items ' ]['anyOf ' ][0 ]['$ref ' ]);
251+
252+ $ this ->tester ->run (['command ' => 'api:json-schema:generate ' , 'resource ' => 'ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Animal ' , '--type ' => 'output ' , '--format ' => 'jsonapi ' ]);
253+ $ result = $ this ->tester ->getDisplay ();
254+ $ json = json_decode ($ result , associative: true );
255+ $ properties = $ json ['definitions ' ]['Animal.jsonapi ' ]['properties ' ]['data ' ]['properties ' ];
256+ $ included = $ json ['definitions ' ]['Animal.jsonapi ' ]['properties ' ]['included ' ];
257+
258+ $ this ->assertArrayHasKey ('species ' , $ properties ['relationships ' ]['properties ' ]);
259+ $ this ->assertArrayNotHasKey ('species ' , $ properties ['attributes ' ]['properties ' ]);
260+ $ this ->assertArrayHasKey ('anyOf ' , $ included ['items ' ]);
261+ $ this ->assertCount (1 , $ included ['items ' ]['anyOf ' ]);
262+ $ this ->assertSame ('#/definitions/Species.jsonapi ' , $ included ['items ' ]['anyOf ' ][0 ]['$ref ' ]);
263+
264+ $ this ->tester ->run (['command ' => 'api:json-schema:generate ' , 'resource ' => 'ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Species ' , '--type ' => 'output ' , '--format ' => 'jsonapi ' ]);
265+ $ result = $ this ->tester ->getDisplay ();
266+ $ json = json_decode ($ result , associative: true );
267+ $ properties = $ json ['definitions ' ]['Species.jsonapi ' ]['properties ' ]['data ' ]['properties ' ];
268+
269+ $ this ->assertArrayHasKey ('kingdom ' , $ properties ['attributes ' ]['properties ' ]);
270+ $ this ->assertArrayHasKey ('phylum ' , $ properties ['attributes ' ]['properties ' ]);
236271 }
237272}
0 commit comments