2020use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \Issue7939FooResource ;
2121use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \LinkParameterProviderResource ;
2222use ApiPlatform \Tests \Fixtures \TestBundle \ApiResource \WithParameter ;
23+ use ApiPlatform \Tests \Fixtures \TestBundle \Document \Company as DocumentCompany ;
24+ use ApiPlatform \Tests \Fixtures \TestBundle \Document \CompanyBadge as DocumentCompanyBadge ;
2325use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Company ;
26+ use ApiPlatform \Tests \Fixtures \TestBundle \Entity \CompanyBadge ;
2427use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Dummy ;
2528use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Employee ;
2629use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Issue7469Dummy ;
@@ -43,15 +46,15 @@ final class LinkProviderParameterTest extends ApiTestCase
4346 */
4447 public static function getResources (): array
4548 {
46- return [WithParameter::class, Dummy::class, Employee::class, Company::class, LinkParameterProviderResource::class, Issue7469TestResource::class, Issue7469Dummy::class, Pairing::class, Plan::class, Issue7939FooResource::class, Issue7939BarResource::class, Issue7939BazResource::class];
49+ return [WithParameter::class, Dummy::class, Employee::class, Company::class, CompanyBadge::class, LinkParameterProviderResource::class, Issue7469TestResource::class, Issue7469Dummy::class, Pairing::class, Plan::class, Issue7939FooResource::class, Issue7939BarResource::class, Issue7939BazResource::class];
4750 }
4851
4952 /**
5053 * @throws \Throwable
5154 */
5255 protected function setUp (): void
5356 {
54- $ this ->recreateSchema ([Dummy::class, RelatedOwnedDummy::class, RelatedDummy::class, Employee::class, Company::class, Issue7469Dummy::class, Plan::class, Pairing::class]);
57+ $ this ->recreateSchema ([Dummy::class, RelatedOwnedDummy::class, RelatedDummy::class, Employee::class, Company::class, CompanyBadge::class, Issue7469Dummy::class, Plan::class, Pairing::class]);
5558 }
5659
5760 public function testReadDummyProviderFromQueryParameter (): void
@@ -147,6 +150,30 @@ public function testLinkSecurityWithSlug(): void
147150 self ::assertResponseStatusCodeSame (200 );
148151 }
149152
153+ public function testPutCreateUnderSlugParentLink (): void
154+ {
155+ $ companyClass = $ this ->isMongoDB () ? DocumentCompany::class : Company::class;
156+ $ badgeClass = $ this ->isMongoDB () ? DocumentCompanyBadge::class : CompanyBadge::class;
157+
158+ $ manager = $ this ->getManager ();
159+ $ company = new $ companyClass ();
160+ $ company ->setName ('Test ' );
161+ $ manager ->persist ($ company );
162+ $ manager ->flush ();
163+ $ companyId = $ company ->getId ();
164+
165+ self ::createClient ()->request ('PUT ' , '/companies-by-name/Test/badges/gold ' , [
166+ 'headers ' => ['Content-Type ' => 'application/ld+json ' ],
167+ 'json ' => ['label ' => 'Gold ' ],
168+ ]);
169+ self ::assertResponseStatusCodeSame (201 );
170+
171+ $ manager ->clear ();
172+ $ badge = $ manager ->getRepository ($ badgeClass )->find ('gold ' );
173+ self ::assertNotNull ($ badge );
174+ self ::assertSame ($ companyId , $ badge ->company ->getId ());
175+ }
176+
150177 /**
151178 * See https://github.com/api-platform/core/issues/7061.
152179 */
0 commit comments