Skip to content

Commit 61af8b6

Browse files
Merge pull request #40 from WordPress/enhance/phpcs-tests
2 parents 7faa773 + 76492ab commit 61af8b6

28 files changed

+817
-578
lines changed

phpcs.xml.dist

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
<!-- Scan these files -->
66
<file>src</file>
7+
<file>tests</file>
78

89
<!-- Ignore vendor directory -->
910
<exclude-pattern>*/vendor/*</exclude-pattern>
@@ -19,7 +20,4 @@
1920

2021
<!-- Enable colors in output -->
2122
<arg name="colors"/>
22-
23-
<!-- Check PHP syntax -->
24-
<arg name="parallel" value="8"/>
2523
</ruleset>

tests/traits/ArrayTransformationTestTrait.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ protected function assertArrayRoundTrip($original, callable $assertCallback): vo
5353
$array = $original->toArray();
5454
$className = get_class($original);
5555
$restored = $className::fromArray($array);
56-
56+
5757
$this->assertInstanceOf($className, $restored, 'fromArray() should return instance of ' . $className);
5858
$assertCallback($original, $restored);
5959
}
@@ -85,4 +85,4 @@ protected function assertArrayNotHasKeys(array $array, array $unexpectedKeys): v
8585
$this->assertArrayNotHasKey($key, $array, "Array should not contain key: {$key}");
8686
}
8787
}
88-
}
88+
}

tests/unit/Common/AbstractDataValueObjectTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,10 @@ public static function getJsonSchema(): array
545545
};
546546

547547
// Verify interface implementations
548-
$this->assertInstanceOf(\WordPress\AiClient\Common\Contracts\WithArrayTransformationInterface::class, $testObject);
548+
$this->assertInstanceOf(
549+
\WordPress\AiClient\Common\Contracts\WithArrayTransformationInterface::class,
550+
$testObject
551+
);
549552
$this->assertInstanceOf(\WordPress\AiClient\Common\Contracts\WithJsonSchemaInterface::class, $testObject);
550553
$this->assertInstanceOf(JsonSerializable::class, $testObject);
551554

tests/unit/Common/AbstractEnumTest.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ public function testFromWithValidValue(): void
3535
public function testFromWithInvalidValueThrowsException(): void
3636
{
3737
$this->expectException(InvalidArgumentException::class);
38-
$this->expectExceptionMessage('invalid is not a valid backing value for enum WordPress\AiClient\Tests\mocks\Enums\ValidTestEnum');
38+
$this->expectExceptionMessage(
39+
'invalid is not a valid backing value for enum WordPress\AiClient\Tests\mocks\Enums\ValidTestEnum'
40+
);
3941
ValidTestEnum::from('invalid');
4042
}
4143

@@ -193,10 +195,11 @@ public function testIsValidValue(): void
193195
public function testPropertiesAreReadOnly(): void
194196
{
195197
$enum = ValidTestEnum::firstName();
198+
$className = ValidTestEnum::class;
196199

197200
$this->expectException(BadMethodCallException::class);
198201
$this->expectExceptionMessage(
199-
'Cannot modify property WordPress\AiClient\Tests\mocks\Enums\ValidTestEnum::value - enum properties are read-only'
202+
'Cannot modify property ' . $className . '::value - enum properties are read-only'
200203
);
201204
$enum->value = 'modified';
202205
}
@@ -207,10 +210,11 @@ public function testPropertiesAreReadOnly(): void
207210
public function testInvalidPropertyAccessThrowsException(): void
208211
{
209212
$enum = ValidTestEnum::firstName();
213+
$className = ValidTestEnum::class;
210214

211215
$this->expectException(BadMethodCallException::class);
212216
$this->expectExceptionMessage(
213-
'Property WordPress\AiClient\Tests\mocks\Enums\ValidTestEnum::invalid does not exist'
217+
'Property ' . $className . '::invalid does not exist'
214218
);
215219
$enum->invalid;
216220
}

tests/unit/Files/DTO/FileTest.php

Lines changed: 49 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public function testCreateFromUrl(): void
2323
{
2424
$url = 'https://example.com/image.jpg';
2525
$mimeType = 'image/jpeg';
26-
26+
2727
$file = new File($url, $mimeType);
28-
28+
2929
$this->assertEquals(FileTypeEnum::remote(), $file->getFileType());
3030
$this->assertEquals($url, $file->getUrl());
3131
$this->assertNull($file->getBase64Data());
@@ -42,9 +42,9 @@ public function testCreateFromUrl(): void
4242
public function testCreateFromUrlWithInferredMimeType(): void
4343
{
4444
$url = 'https://example.com/document.pdf';
45-
45+
4646
$file = new File($url);
47-
47+
4848
$this->assertEquals(FileTypeEnum::remote(), $file->getFileType());
4949
$this->assertEquals($url, $file->getUrl());
5050
$this->assertEquals('application/pdf', $file->getMimeType());
@@ -60,9 +60,9 @@ public function testCreateFromDataUri(): void
6060
{
6161
$base64Data = 'SGVsbG8gV29ybGQ=';
6262
$dataUri = 'data:text/plain;base64,' . $base64Data;
63-
63+
6464
$file = new File($dataUri);
65-
65+
6666
$this->assertEquals(FileTypeEnum::inline(), $file->getFileType());
6767
$this->assertNull($file->getUrl());
6868
$this->assertEquals($base64Data, $file->getBase64Data());
@@ -81,9 +81,9 @@ public function testCreateFromDataUriWithMimeTypeOverride(): void
8181
$base64Data = 'SGVsbG8gV29ybGQ=';
8282
$dataUri = 'data:text/plain;base64,' . $base64Data;
8383
$overrideMimeType = 'text/html';
84-
84+
8585
$file = new File($dataUri, $overrideMimeType);
86-
86+
8787
$this->assertEquals(FileTypeEnum::inline(), $file->getFileType());
8888
$this->assertEquals($base64Data, $file->getBase64Data());
8989
$this->assertEquals($overrideMimeType, $file->getMimeType());
@@ -99,9 +99,9 @@ public function testCreateFromPlainBase64(): void
9999
{
100100
$base64Data = 'SGVsbG8gV29ybGQ=';
101101
$mimeType = 'text/plain';
102-
102+
103103
$file = new File($base64Data, $mimeType);
104-
104+
105105
$this->assertEquals(FileTypeEnum::inline(), $file->getFileType());
106106
$this->assertNull($file->getUrl());
107107
$this->assertEquals($base64Data, $file->getBase64Data());
@@ -117,8 +117,10 @@ public function testCreateFromPlainBase64(): void
117117
public function testPlainBase64WithoutMimeTypeThrowsException(): void
118118
{
119119
$this->expectException(InvalidArgumentException::class);
120-
$this->expectExceptionMessage('MIME type is required when providing plain base64 data without data URI format.');
121-
120+
$this->expectExceptionMessage(
121+
'MIME type is required when providing plain base64 data without data URI format.'
122+
);
123+
122124
new File('SGVsbG8gV29ybGQ=');
123125
}
124126

@@ -132,10 +134,10 @@ public function testCreateFromLocalFile(): void
132134
// Create a temporary file
133135
$tempFile = tempnam(sys_get_temp_dir(), 'test');
134136
file_put_contents($tempFile, 'Hello World');
135-
137+
136138
try {
137139
$file = new File($tempFile, 'text/plain');
138-
140+
139141
$this->assertEquals(FileTypeEnum::inline(), $file->getFileType());
140142
$this->assertNull($file->getUrl());
141143
$this->assertEquals(base64_encode('Hello World'), $file->getBase64Data());
@@ -154,7 +156,7 @@ public function testInvalidFileFormatThrowsException(): void
154156
{
155157
$this->expectException(InvalidArgumentException::class);
156158
$this->expectExceptionMessage('Invalid file provided. Expected URL, base64 data, or valid local file path.');
157-
159+
158160
new File('not-a-valid-file-or-url', 'text/plain');
159161
}
160162

@@ -167,7 +169,7 @@ public function testNonExistentLocalFileThrowsException(): void
167169
{
168170
$this->expectException(InvalidArgumentException::class);
169171
$this->expectExceptionMessage('Invalid file provided. Expected URL, base64 data, or valid local file path.');
170-
172+
171173
new File('/path/to/non/existent/file.txt', 'text/plain');
172174
}
173175

@@ -181,11 +183,13 @@ public function testDirectoryThrowsException(): void
181183
// Create a directory instead of a file
182184
$tempDir = sys_get_temp_dir() . '/test_dir_' . uniqid();
183185
mkdir($tempDir);
184-
186+
185187
try {
186188
$this->expectException(InvalidArgumentException::class);
187-
$this->expectExceptionMessage('Invalid file provided. Expected URL, base64 data, or valid local file path.');
188-
189+
$this->expectExceptionMessage(
190+
'Invalid file provided. Expected URL, base64 data, or valid local file path.'
191+
);
192+
189193
new File($tempDir, 'text/plain');
190194
} finally {
191195
rmdir($tempDir);
@@ -200,7 +204,7 @@ public function testDirectoryThrowsException(): void
200204
public function testMimeTypeMethods(): void
201205
{
202206
$file = new File('https://example.com/video.mp4');
203-
207+
204208
$this->assertEquals('video/mp4', $file->getMimeType());
205209
$this->assertInstanceOf(\WordPress\AiClient\Files\ValueObjects\MimeType::class, $file->getMimeTypeObject());
206210
$this->assertTrue($file->isVideo());
@@ -221,27 +225,33 @@ public function testMimeTypeMethods(): void
221225
public function testJsonSchema(): void
222226
{
223227
$schema = File::getJsonSchema();
224-
228+
225229
$this->assertIsArray($schema);
226230
$this->assertEquals('object', $schema['type']);
227231
$this->assertArrayHasKey('oneOf', $schema);
228232
$this->assertCount(2, $schema['oneOf']);
229-
233+
230234
// Check remote file schema
231235
$remoteSchema = $schema['oneOf'][0];
232236
$this->assertArrayHasKey('properties', $remoteSchema);
233237
$this->assertArrayHasKey(File::KEY_FILE_TYPE, $remoteSchema['properties']);
234238
$this->assertArrayHasKey(File::KEY_MIME_TYPE, $remoteSchema['properties']);
235239
$this->assertArrayHasKey(File::KEY_URL, $remoteSchema['properties']);
236-
$this->assertEquals([File::KEY_FILE_TYPE, File::KEY_MIME_TYPE, File::KEY_URL], $remoteSchema['required']);
237-
240+
$this->assertEquals(
241+
[File::KEY_FILE_TYPE, File::KEY_MIME_TYPE, File::KEY_URL],
242+
$remoteSchema['required']
243+
);
244+
238245
// Check inline file schema
239246
$inlineSchema = $schema['oneOf'][1];
240247
$this->assertArrayHasKey('properties', $inlineSchema);
241248
$this->assertArrayHasKey(File::KEY_FILE_TYPE, $inlineSchema['properties']);
242249
$this->assertArrayHasKey(File::KEY_MIME_TYPE, $inlineSchema['properties']);
243250
$this->assertArrayHasKey(File::KEY_BASE64_DATA, $inlineSchema['properties']);
244-
$this->assertEquals([File::KEY_FILE_TYPE, File::KEY_MIME_TYPE, File::KEY_BASE64_DATA], $inlineSchema['required']);
251+
$this->assertEquals(
252+
[File::KEY_FILE_TYPE, File::KEY_MIME_TYPE, File::KEY_BASE64_DATA],
253+
$inlineSchema['required']
254+
);
245255
}
246256

247257
/**
@@ -253,10 +263,10 @@ public function testDataUriWithoutMimeType(): void
253263
{
254264
$base64Data = 'SGVsbG8gV29ybGQ=';
255265
$dataUri = 'data:;base64,' . $base64Data;
256-
266+
257267
$this->expectException(InvalidArgumentException::class);
258268
$this->expectExceptionMessage('Unable to determine MIME type. Please provide it explicitly.');
259-
269+
260270
new File($dataUri);
261271
}
262272

@@ -269,7 +279,7 @@ public function testUrlWithUnknownExtension(): void
269279
{
270280
$this->expectException(InvalidArgumentException::class);
271281
$this->expectExceptionMessage('Unable to determine MIME type. Please provide it explicitly.');
272-
282+
273283
new File('https://example.com/file.unknown');
274284
}
275285

@@ -282,7 +292,7 @@ public function testToArrayRemoteFile(): void
282292
{
283293
$file = new File('https://example.com/image.jpg', 'image/jpeg');
284294
$json = $file->toArray();
285-
295+
286296
$this->assertIsArray($json);
287297
$this->assertEquals(\WordPress\AiClient\Files\Enums\FileTypeEnum::remote()->value, $json[File::KEY_FILE_TYPE]);
288298
$this->assertEquals('image/jpeg', $json[File::KEY_MIME_TYPE]);
@@ -301,7 +311,7 @@ public function testToArrayInlineFile(): void
301311
$dataUri = 'data:text/plain;base64,' . $base64Data;
302312
$file = new File($dataUri);
303313
$json = $file->toArray();
304-
314+
305315
$this->assertIsArray($json);
306316
$this->assertEquals(\WordPress\AiClient\Files\Enums\FileTypeEnum::inline()->value, $json[File::KEY_FILE_TYPE]);
307317
$this->assertEquals('text/plain', $json[File::KEY_MIME_TYPE]);
@@ -321,9 +331,9 @@ public function testFromArrayRemoteFile(): void
321331
File::KEY_MIME_TYPE => 'image/png',
322332
File::KEY_URL => 'https://example.com/test.png'
323333
];
324-
334+
325335
$file = File::fromArray($json);
326-
336+
327337
$this->assertInstanceOf(File::class, $file);
328338
$this->assertTrue($file->getFileType()->isRemote());
329339
$this->assertEquals('image/png', $file->getMimeType());
@@ -344,9 +354,9 @@ public function testFromArrayInlineFile(): void
344354
File::KEY_MIME_TYPE => 'text/plain',
345355
File::KEY_BASE64_DATA => $base64Data
346356
];
347-
357+
348358
$file = File::fromArray($json);
349-
359+
350360
$this->assertInstanceOf(File::class, $file);
351361
$this->assertTrue($file->getFileType()->isInline());
352362
$this->assertEquals('text/plain', $file->getMimeType());
@@ -365,17 +375,17 @@ public function testArrayRoundTrip(): void
365375
$remoteFile = new File('https://example.com/doc.pdf', 'application/pdf');
366376
$remoteJson = $remoteFile->toArray();
367377
$restoredRemote = File::fromArray($remoteJson);
368-
378+
369379
$this->assertEquals($remoteFile->getFileType()->value, $restoredRemote->getFileType()->value);
370380
$this->assertEquals($remoteFile->getMimeType(), $restoredRemote->getMimeType());
371381
$this->assertEquals($remoteFile->getUrl(), $restoredRemote->getUrl());
372-
382+
373383
// Test inline file
374384
$dataUri = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
375385
$inlineFile = new File($dataUri);
376386
$inlineJson = $inlineFile->toArray();
377387
$restoredInline = File::fromArray($inlineJson);
378-
388+
379389
$this->assertEquals($inlineFile->getFileType()->value, $restoredInline->getFileType()->value);
380390
$this->assertEquals($inlineFile->getMimeType(), $restoredInline->getMimeType());
381391
$this->assertEquals($inlineFile->getBase64Data(), $restoredInline->getBase64Data());
@@ -389,11 +399,10 @@ public function testArrayRoundTrip(): void
389399
public function testImplementsWithArrayTransformationInterface(): void
390400
{
391401
$file = new File('https://example.com/test.jpg');
392-
402+
393403
$this->assertInstanceOf(
394404
\WordPress\AiClient\Common\Contracts\WithArrayTransformationInterface::class,
395405
$file
396406
);
397-
398407
}
399-
}
408+
}

tests/unit/Files/Enums/FileTypeEnumTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,4 @@ public function testSpecificEnumMethods(): void
5353
$this->assertTrue($remote->isRemote());
5454
$this->assertFalse($remote->isInline());
5555
}
56-
}
56+
}

0 commit comments

Comments
 (0)