@@ -111,6 +111,23 @@ public function providerFlatten(): iterable
111111 ],
112112 ];
113113
114+ yield [
115+ 'data ' => ['nested ' => ['pet ' => $ pet ]],
116+ 'expected ' => [
117+ 'nested[pet][id] ' => $ data ['id ' ],
118+ 'nested[pet][name] ' => $ data ['name ' ],
119+ 'nested[pet][photo_urls][0] ' => $ data ['photo_urls ' ][0 ],
120+ 'nested[pet][photo_urls][1] ' => $ data ['photo_urls ' ][1 ],
121+ 'nested[pet][status] ' => $ data ['status ' ],
122+ 'nested[pet][category][id] ' => (string ) $ data ['category ' ]['id ' ],
123+ 'nested[pet][category][name] ' => $ data ['category ' ]['name ' ],
124+ 'nested[pet][tags][0][id] ' => (string ) $ data ['tags ' ][0 ]['id ' ],
125+ 'nested[pet][tags][0][name] ' => $ data ['tags ' ][0 ]['name ' ],
126+ 'nested[pet][tags][1][id] ' => (string ) $ data ['tags ' ][1 ]['id ' ],
127+ 'nested[pet][tags][1][name] ' => $ data ['tags ' ][1 ]['name ' ],
128+ ],
129+ ];
130+
114131 yield [
115132 'data ' => ['key ' => new DateTime ('2021-10-06T20:17:16 ' )],
116133 'expected ' => ['key ' => '2021-10-06T20:17:16+00:00 ' ],
@@ -151,6 +168,25 @@ public function testHasFile(): void
151168 $ this ->assertTrue ($ formDataProcessor ->has_file );
152169 }
153170
171+ public function testHasFileNested (): void
172+ {
173+ $ filepath = realpath (__DIR__ . '/../.openapi-generator/VERSION ' );
174+ $ file = new SplFileObject ($ filepath );
175+
176+ $ pet = new Model \PetWithFile ([]);
177+ $ pet ->setId (123 )
178+ ->setName ('Spike ' )
179+ ->setFile ($ file );
180+
181+ $ formDataProcessor = new FormDataProcessor ();
182+
183+ $ this ->assertFalse ($ formDataProcessor ->has_file );
184+ $ formData = $ formDataProcessor ->prepare (['nested ' => ['pet ' => $ pet ]]);
185+
186+ $ this ->assertIsResource ($ formData ['nested ' ]['pet ' ]['file ' ][0 ]);
187+ $ this ->assertTrue ($ formDataProcessor ->has_file );
188+ }
189+
154190 public function testHasFileMultiple (): void
155191 {
156192 $ filepath = realpath (__DIR__ . '/../.openapi-generator/VERSION ' );
@@ -169,4 +205,23 @@ public function testHasFileMultiple(): void
169205 $ this ->assertIsResource ($ formData ['pet ' ]['multiple_files ' ][0 ]);
170206 $ this ->assertTrue ($ formDataProcessor ->has_file );
171207 }
208+
209+ public function testHasFileMultipleNested (): void
210+ {
211+ $ filepath = realpath (__DIR__ . '/../.openapi-generator/VERSION ' );
212+ $ file = new SplFileObject ($ filepath );
213+
214+ $ pet = new Model \PetWithFile ([]);
215+ $ pet ->setId (123 )
216+ ->setName ('Spike ' )
217+ ->setMultipleFiles ([$ file ]);
218+
219+ $ formDataProcessor = new FormDataProcessor ();
220+
221+ $ this ->assertFalse ($ formDataProcessor ->has_file );
222+ $ formData = $ formDataProcessor ->prepare (['nested ' => ['pet ' => $ pet ]]);
223+
224+ $ this ->assertIsResource ($ formData ['nested ' ]['pet ' ]['multiple_files ' ][0 ]);
225+ $ this ->assertTrue ($ formDataProcessor ->has_file );
226+ }
172227}
0 commit comments