6
6
7
7
use JsonSerializable ;
8
8
use PHPUnit \Framework \TestCase ;
9
+ use WordPress \AiClient \Files \Enums \FileTypeEnum ;
10
+ use WordPress \AiClient \Files \Enums \MediaOrientationEnum ;
9
11
use WordPress \AiClient \Messages \Enums \ModalityEnum ;
10
12
use WordPress \AiClient \Providers \Models \DTO \ModelConfig ;
11
13
use WordPress \AiClient \Tools \DTO \Tool ;
@@ -53,8 +55,11 @@ public function testDefaultConstructor(): void
53
55
$ this ->assertNull ($ config ->getLogprobs ());
54
56
$ this ->assertNull ($ config ->getTopLogprobs ());
55
57
$ this ->assertNull ($ config ->getTools ());
58
+ $ this ->assertNull ($ config ->getOutputFileType ());
56
59
$ this ->assertNull ($ config ->getOutputMimeType ());
57
60
$ this ->assertNull ($ config ->getOutputSchema ());
61
+ $ this ->assertNull ($ config ->getOutputMediaOrientation ());
62
+ $ this ->assertNull ($ config ->getOutputMediaAspectRatio ());
58
63
$ this ->assertEquals ([], $ config ->getCustomOptions ());
59
64
}
60
65
@@ -138,6 +143,18 @@ public function testSettersAndGetters(): void
138
143
$ config ->setOutputSchema ($ outputSchema );
139
144
$ this ->assertEquals ($ outputSchema , $ config ->getOutputSchema ());
140
145
146
+ // Test output file type
147
+ $ config ->setOutputFileType (FileTypeEnum::inline ());
148
+ $ this ->assertEquals (FileTypeEnum::inline (), $ config ->getOutputFileType ());
149
+
150
+ // Test output media orientation
151
+ $ config ->setOutputMediaOrientation (MediaOrientationEnum::landscape ());
152
+ $ this ->assertEquals (MediaOrientationEnum::landscape (), $ config ->getOutputMediaOrientation ());
153
+
154
+ // Test output media aspect ratio
155
+ $ config ->setOutputMediaAspectRatio ('4:3 ' );
156
+ $ this ->assertEquals ('4:3 ' , $ config ->getOutputMediaAspectRatio ());
157
+
141
158
// Test custom options
142
159
$ customOptions = ['custom_param ' => 'value ' , 'another_param ' => 123 ];
143
160
$ config ->setCustomOptions ($ customOptions );
@@ -173,8 +190,11 @@ public function testGetJsonSchema(): void
173
190
ModelConfig::KEY_LOGPROBS ,
174
191
ModelConfig::KEY_TOP_LOGPROBS ,
175
192
ModelConfig::KEY_TOOLS ,
193
+ ModelConfig::KEY_OUTPUT_FILE_TYPE ,
176
194
ModelConfig::KEY_OUTPUT_MIME_TYPE ,
177
195
ModelConfig::KEY_OUTPUT_SCHEMA ,
196
+ ModelConfig::KEY_OUTPUT_MEDIA_ORIENTATION ,
197
+ ModelConfig::KEY_OUTPUT_MEDIA_ASPECT_RATIO ,
178
198
ModelConfig::KEY_CUSTOM_OPTIONS
179
199
];
180
200
@@ -190,6 +210,9 @@ public function testGetJsonSchema(): void
190
210
$ this ->assertEquals ('boolean ' , $ schema ['properties ' ][ModelConfig::KEY_LOGPROBS ]['type ' ]);
191
211
$ this ->assertEquals ('string ' , $ schema ['properties ' ][ModelConfig::KEY_OUTPUT_MIME_TYPE ]['type ' ]);
192
212
$ this ->assertEquals ('object ' , $ schema ['properties ' ][ModelConfig::KEY_OUTPUT_SCHEMA ]['type ' ]);
213
+ $ this ->assertEquals ('string ' , $ schema ['properties ' ][ModelConfig::KEY_OUTPUT_FILE_TYPE ]['type ' ]);
214
+ $ this ->assertEquals ('string ' , $ schema ['properties ' ][ModelConfig::KEY_OUTPUT_MEDIA_ORIENTATION ]['type ' ]);
215
+ $ this ->assertEquals ('string ' , $ schema ['properties ' ][ModelConfig::KEY_OUTPUT_MEDIA_ASPECT_RATIO ]['type ' ]);
193
216
$ this ->assertEquals ('object ' , $ schema ['properties ' ][ModelConfig::KEY_CUSTOM_OPTIONS ]['type ' ]);
194
217
195
218
// Check constraints
@@ -223,8 +246,11 @@ public function testToArrayAllProperties(): void
223
246
$ config ->setLogprobs (true );
224
247
$ config ->setTopLogprobs (10 );
225
248
$ config ->setTools ([$ tool ]);
249
+ $ config ->setOutputFileType (FileTypeEnum::remote ());
226
250
$ config ->setOutputMimeType ('application/json ' );
227
251
$ config ->setOutputSchema (['type ' => 'object ' ]);
252
+ $ config ->setOutputMediaOrientation (MediaOrientationEnum::portrait ());
253
+ $ config ->setOutputMediaAspectRatio ('9:16 ' );
228
254
$ config ->setCustomOptions (['key ' => 'value ' ]);
229
255
230
256
$ array = $ config ->toArray ();
@@ -243,8 +269,11 @@ public function testToArrayAllProperties(): void
243
269
$ this ->assertTrue ($ array [ModelConfig::KEY_LOGPROBS ]);
244
270
$ this ->assertEquals (10 , $ array [ModelConfig::KEY_TOP_LOGPROBS ]);
245
271
$ this ->assertCount (1 , $ array [ModelConfig::KEY_TOOLS ]);
272
+ $ this ->assertEquals ('remote ' , $ array [ModelConfig::KEY_OUTPUT_FILE_TYPE ]);
246
273
$ this ->assertEquals ('application/json ' , $ array [ModelConfig::KEY_OUTPUT_MIME_TYPE ]);
247
274
$ this ->assertEquals (['type ' => 'object ' ], $ array [ModelConfig::KEY_OUTPUT_SCHEMA ]);
275
+ $ this ->assertEquals ('portrait ' , $ array [ModelConfig::KEY_OUTPUT_MEDIA_ORIENTATION ]);
276
+ $ this ->assertEquals ('9:16 ' , $ array [ModelConfig::KEY_OUTPUT_MEDIA_ASPECT_RATIO ]);
248
277
$ this ->assertEquals (['key ' => 'value ' ], $ array [ModelConfig::KEY_CUSTOM_OPTIONS ]);
249
278
}
250
279
@@ -320,6 +349,9 @@ public function testFromArrayAllProperties(): void
320
349
],
321
350
ModelConfig::KEY_OUTPUT_MIME_TYPE => 'application/json ' ,
322
351
ModelConfig::KEY_OUTPUT_SCHEMA => ['type ' => 'array ' , 'items ' => ['type ' => 'string ' ]],
352
+ ModelConfig::KEY_OUTPUT_FILE_TYPE => 'inline ' ,
353
+ ModelConfig::KEY_OUTPUT_MEDIA_ORIENTATION => 'landscape ' ,
354
+ ModelConfig::KEY_OUTPUT_MEDIA_ASPECT_RATIO => '16:9 ' ,
323
355
ModelConfig::KEY_CUSTOM_OPTIONS => ['custom ' => true ]
324
356
];
325
357
@@ -343,6 +375,9 @@ public function testFromArrayAllProperties(): void
343
375
$ this ->assertCount (1 , $ config ->getTools ());
344
376
$ this ->assertEquals ('application/json ' , $ config ->getOutputMimeType ());
345
377
$ this ->assertEquals (['type ' => 'array ' , 'items ' => ['type ' => 'string ' ]], $ config ->getOutputSchema ());
378
+ $ this ->assertEquals (FileTypeEnum::inline (), $ config ->getOutputFileType ());
379
+ $ this ->assertEquals (MediaOrientationEnum::landscape (), $ config ->getOutputMediaOrientation ());
380
+ $ this ->assertEquals ('16:9 ' , $ config ->getOutputMediaAspectRatio ());
346
381
$ this ->assertEquals (['custom ' => true ], $ config ->getCustomOptions ());
347
382
}
348
383
@@ -374,6 +409,9 @@ public function testArrayRoundTrip(): void
374
409
$ original ->setMaxTokens (1500 );
375
410
$ original ->setStopSequences (['END ' , 'STOP ' ]);
376
411
$ original ->setLogprobs (true );
412
+ $ original ->setOutputFileType (FileTypeEnum::inline ());
413
+ $ original ->setOutputMediaOrientation (MediaOrientationEnum::square ());
414
+ $ original ->setOutputMediaAspectRatio ('1:1 ' );
377
415
$ original ->setCustomOptions (['test ' => 'value ' ]);
378
416
379
417
$ array = $ original ->toArray ();
@@ -384,6 +422,9 @@ public function testArrayRoundTrip(): void
384
422
$ this ->assertEquals ($ original ->getMaxTokens (), $ restored ->getMaxTokens ());
385
423
$ this ->assertEquals ($ original ->getStopSequences (), $ restored ->getStopSequences ());
386
424
$ this ->assertEquals ($ original ->getLogprobs (), $ restored ->getLogprobs ());
425
+ $ this ->assertEquals ($ original ->getOutputFileType (), $ restored ->getOutputFileType ());
426
+ $ this ->assertEquals ($ original ->getOutputMediaOrientation (), $ restored ->getOutputMediaOrientation ());
427
+ $ this ->assertEquals ($ original ->getOutputMediaAspectRatio (), $ restored ->getOutputMediaAspectRatio ());
387
428
$ this ->assertEquals ($ original ->getCustomOptions (), $ restored ->getCustomOptions ());
388
429
}
389
430
0 commit comments