|
14 | 14 | use HyperfTest\Validation\Cases\Stub\ValidatesAttributesStub;
|
15 | 15 | use PHPUnit\Framework\Attributes\CoversNothing;
|
16 | 16 | use PHPUnit\Framework\TestCase;
|
| 17 | +use Stringable; |
17 | 18 |
|
18 | 19 | /**
|
19 | 20 | * @internal
|
@@ -93,4 +94,41 @@ public function testValidateAscii()
|
93 | 94 | $this->assertFalse($validator->validateAscii('', 'ユニコードを基盤技術と-_123'));
|
94 | 95 | $this->assertFalse($validator->validateAscii('', 'नमस्कार-_'));
|
95 | 96 | }
|
| 97 | + |
| 98 | + public function testValidateJson() |
| 99 | + { |
| 100 | + $validator = new ValidatesAttributesStub(); |
| 101 | + // null |
| 102 | + $this->assertFalse($validator->validateJson('', null)); |
| 103 | + $this->assertTrue($validator->validateJson('', 'null')); |
| 104 | + // int |
| 105 | + $this->assertTrue($validator->validateJson('', '3')); |
| 106 | + $this->assertFalse($validator->validateJson('', 3)); |
| 107 | + // float |
| 108 | + $this->assertTrue($validator->validateJson('', '3.14')); |
| 109 | + $this->assertFalse($validator->validateJson('', 3.14)); |
| 110 | + // string |
| 111 | + $this->assertFalse($validator->validateJson('', 'plain_text')); |
| 112 | + $this->assertTrue($validator->validateJson('', '{"foo": "bar"}')); |
| 113 | + $this->assertFalse($validator->validateJson('', '{"foo": "bar",a}')); |
| 114 | + // array |
| 115 | + $this->assertTrue($validator->validateJson('', '[3.14]')); |
| 116 | + $this->assertFalse($validator->validateJson('', [3.14])); |
| 117 | + $this->assertTrue($validator->validateJson('', '["a"]')); |
| 118 | + // object |
| 119 | + $this->assertFalse($validator->validateJson('', new class() {})); |
| 120 | + $this->assertTrue($validator->validateJson('', new class() implements Stringable { |
| 121 | + public function __toString(): string |
| 122 | + { |
| 123 | + return json_encode(['foo' => 'bar'], JSON_UNESCAPED_UNICODE); |
| 124 | + } |
| 125 | + })); |
| 126 | + |
| 127 | + $this->assertTrue($validator->validateJson('', new class() { |
| 128 | + public function __toString(): string |
| 129 | + { |
| 130 | + return json_encode(['foo' => 'bar'], JSON_UNESCAPED_UNICODE); |
| 131 | + } |
| 132 | + })); |
| 133 | + } |
96 | 134 | }
|
0 commit comments