@@ -62,7 +62,7 @@ final class MockRequestBuilder
6262
6363 private string |null $ content = null ;
6464
65- /** @var mixed[] |null */
65+ /** @var array<string, array{filename?: string|null, mimetype?: string|null, content?: string|null}> |null */
6666 private array |null $ multiparts = null ;
6767
6868 /** @var callable(MockRequestBuilder $expectation, MockRequestBuilder $realRequest): ?string|null */
@@ -277,27 +277,43 @@ public function hasRequestParams(): bool
277277 return (bool ) preg_match ('/[^=]+=[^=]*(&[^=]+=[^=]*)*/ ' , (string ) $ this ->content ) && !$ this ->isJson ();
278278 }
279279
280- public function multipartFile (string $ name , string |null $ filename , string $ mimetype , int $ size ): self
281- {
280+ public function multipart (
281+ string $ name ,
282+ string |null $ mimetype = null ,
283+ string |null $ filename = null ,
284+ string |null $ content = null ,
285+ ): self {
282286 $ this ->multiparts ??= [];
283- $ this ->multiparts [$ name ] = [
284- 'type ' => $ filename !== null ? 'file ' : 'data ' ,
285- 'filename ' => $ filename ,
286- 'mimetype ' => $ mimetype ,
287- 'size ' => $ size ,
288- ];
287+ $ this ->multiparts [$ name ] = [];
288+
289+ if ($ mimetype !== null ) {
290+ $ this ->multiparts [$ name ]['mimetype ' ] = $ mimetype ;
291+ }
292+
293+ if ($ filename !== null ) {
294+ $ this ->multiparts [$ name ]['filename ' ] = $ filename ;
295+ }
296+
297+ if ($ content !== null ) {
298+ $ this ->multiparts [$ name ]['content ' ] = $ content ;
299+ }
289300
290301 return $ this ;
291302 }
292303
293- public function multipartFileFromFile (string $ name , File $ file ): self
304+ public function multipartFromFile (string $ name , File $ file ): self
294305 {
295- $ this ->multipartFile ($ name , $ file ->getBasename (), $ file ->getMimeType (), $ file ->getSize ());
306+ $ this ->multipart (
307+ $ name ,
308+ mimetype: $ file ->getMimeType (),
309+ filename: $ file ->getBasename (),
310+ content: $ file ->getContent (),
311+ );
296312
297313 return $ this ;
298314 }
299315
300- /** @return mixed[] |null */
316+ /** @return array<string, array{filename?: string|null, mimetype?: string|null, content?: string|null}> |null */
301317 public function getMultiparts (): array |null
302318 {
303319 return $ this ->multiparts ;
0 commit comments