Skip to content

Commit be95110

Browse files
committed
Add test coverage for new model config params.
1 parent b92d28c commit be95110

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

tests/unit/Providers/Models/DTO/ModelConfigTest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
use JsonSerializable;
88
use PHPUnit\Framework\TestCase;
9+
use WordPress\AiClient\Files\Enums\FileTypeEnum;
10+
use WordPress\AiClient\Files\Enums\MediaOrientationEnum;
911
use WordPress\AiClient\Messages\Enums\ModalityEnum;
1012
use WordPress\AiClient\Providers\Models\DTO\ModelConfig;
1113
use WordPress\AiClient\Tools\DTO\Tool;
@@ -53,8 +55,11 @@ public function testDefaultConstructor(): void
5355
$this->assertNull($config->getLogprobs());
5456
$this->assertNull($config->getTopLogprobs());
5557
$this->assertNull($config->getTools());
58+
$this->assertNull($config->getOutputFileType());
5659
$this->assertNull($config->getOutputMimeType());
5760
$this->assertNull($config->getOutputSchema());
61+
$this->assertNull($config->getOutputMediaOrientation());
62+
$this->assertNull($config->getOutputMediaAspectRatio());
5863
$this->assertEquals([], $config->getCustomOptions());
5964
}
6065

@@ -138,6 +143,18 @@ public function testSettersAndGetters(): void
138143
$config->setOutputSchema($outputSchema);
139144
$this->assertEquals($outputSchema, $config->getOutputSchema());
140145

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+
141158
// Test custom options
142159
$customOptions = ['custom_param' => 'value', 'another_param' => 123];
143160
$config->setCustomOptions($customOptions);
@@ -173,8 +190,11 @@ public function testGetJsonSchema(): void
173190
ModelConfig::KEY_LOGPROBS,
174191
ModelConfig::KEY_TOP_LOGPROBS,
175192
ModelConfig::KEY_TOOLS,
193+
ModelConfig::KEY_OUTPUT_FILE_TYPE,
176194
ModelConfig::KEY_OUTPUT_MIME_TYPE,
177195
ModelConfig::KEY_OUTPUT_SCHEMA,
196+
ModelConfig::KEY_OUTPUT_MEDIA_ORIENTATION,
197+
ModelConfig::KEY_OUTPUT_MEDIA_ASPECT_RATIO,
178198
ModelConfig::KEY_CUSTOM_OPTIONS
179199
];
180200

@@ -190,6 +210,9 @@ public function testGetJsonSchema(): void
190210
$this->assertEquals('boolean', $schema['properties'][ModelConfig::KEY_LOGPROBS]['type']);
191211
$this->assertEquals('string', $schema['properties'][ModelConfig::KEY_OUTPUT_MIME_TYPE]['type']);
192212
$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']);
193216
$this->assertEquals('object', $schema['properties'][ModelConfig::KEY_CUSTOM_OPTIONS]['type']);
194217

195218
// Check constraints
@@ -223,8 +246,11 @@ public function testToArrayAllProperties(): void
223246
$config->setLogprobs(true);
224247
$config->setTopLogprobs(10);
225248
$config->setTools([$tool]);
249+
$config->setOutputFileType(FileTypeEnum::remote());
226250
$config->setOutputMimeType('application/json');
227251
$config->setOutputSchema(['type' => 'object']);
252+
$config->setOutputMediaOrientation(MediaOrientationEnum::portrait());
253+
$config->setOutputMediaAspectRatio('9:16');
228254
$config->setCustomOptions(['key' => 'value']);
229255

230256
$array = $config->toArray();
@@ -243,8 +269,11 @@ public function testToArrayAllProperties(): void
243269
$this->assertTrue($array[ModelConfig::KEY_LOGPROBS]);
244270
$this->assertEquals(10, $array[ModelConfig::KEY_TOP_LOGPROBS]);
245271
$this->assertCount(1, $array[ModelConfig::KEY_TOOLS]);
272+
$this->assertEquals('remote', $array[ModelConfig::KEY_OUTPUT_FILE_TYPE]);
246273
$this->assertEquals('application/json', $array[ModelConfig::KEY_OUTPUT_MIME_TYPE]);
247274
$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]);
248277
$this->assertEquals(['key' => 'value'], $array[ModelConfig::KEY_CUSTOM_OPTIONS]);
249278
}
250279

@@ -320,6 +349,9 @@ public function testFromArrayAllProperties(): void
320349
],
321350
ModelConfig::KEY_OUTPUT_MIME_TYPE => 'application/json',
322351
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',
323355
ModelConfig::KEY_CUSTOM_OPTIONS => ['custom' => true]
324356
];
325357

@@ -343,6 +375,9 @@ public function testFromArrayAllProperties(): void
343375
$this->assertCount(1, $config->getTools());
344376
$this->assertEquals('application/json', $config->getOutputMimeType());
345377
$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());
346381
$this->assertEquals(['custom' => true], $config->getCustomOptions());
347382
}
348383

@@ -374,6 +409,9 @@ public function testArrayRoundTrip(): void
374409
$original->setMaxTokens(1500);
375410
$original->setStopSequences(['END', 'STOP']);
376411
$original->setLogprobs(true);
412+
$original->setOutputFileType(FileTypeEnum::inline());
413+
$original->setOutputMediaOrientation(MediaOrientationEnum::square());
414+
$original->setOutputMediaAspectRatio('1:1');
377415
$original->setCustomOptions(['test' => 'value']);
378416

379417
$array = $original->toArray();
@@ -384,6 +422,9 @@ public function testArrayRoundTrip(): void
384422
$this->assertEquals($original->getMaxTokens(), $restored->getMaxTokens());
385423
$this->assertEquals($original->getStopSequences(), $restored->getStopSequences());
386424
$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());
387428
$this->assertEquals($original->getCustomOptions(), $restored->getCustomOptions());
388429
}
389430

0 commit comments

Comments
 (0)