|
13 | 13 |
|
14 | 14 | use HyperfTest\Validation\Cases\Stub\ValidatesAttributesStub;
|
15 | 15 | use PHPUnit\Framework\TestCase;
|
| 16 | +use Stringable; |
16 | 17 |
|
17 | 18 | /**
|
18 | 19 | * @internal
|
@@ -68,4 +69,41 @@ public function testValidateDate()
|
68 | 69 |
|
69 | 70 | $this->assertFalse($validator->validateDate('', 123));
|
70 | 71 | }
|
| 72 | + |
| 73 | + public function testValidateJson() |
| 74 | + { |
| 75 | + $validator = new ValidatesAttributesStub(); |
| 76 | + // null |
| 77 | + $this->assertFalse($validator->validateJson('', null)); |
| 78 | + $this->assertTrue($validator->validateJson('', 'null')); |
| 79 | + // int |
| 80 | + $this->assertTrue($validator->validateJson('', '3')); |
| 81 | + $this->assertFalse($validator->validateJson('', 3)); |
| 82 | + // float |
| 83 | + $this->assertTrue($validator->validateJson('', '3.14')); |
| 84 | + $this->assertFalse($validator->validateJson('', 3.14)); |
| 85 | + // string |
| 86 | + $this->assertFalse($validator->validateJson('', 'plain_text')); |
| 87 | + $this->assertTrue($validator->validateJson('', '{"foo": "bar"}')); |
| 88 | + $this->assertFalse($validator->validateJson('', '{"foo": "bar",a}')); |
| 89 | + // array |
| 90 | + $this->assertTrue($validator->validateJson('', '[3.14]')); |
| 91 | + $this->assertFalse($validator->validateJson('', [3.14])); |
| 92 | + $this->assertTrue($validator->validateJson('', '["a"]')); |
| 93 | + // object |
| 94 | + $this->assertFalse($validator->validateJson('', new class() {})); |
| 95 | + $this->assertTrue($validator->validateJson('', new class() implements Stringable { |
| 96 | + public function __toString(): string |
| 97 | + { |
| 98 | + return json_encode(['foo' => 'bar'], JSON_UNESCAPED_UNICODE); |
| 99 | + } |
| 100 | + })); |
| 101 | + |
| 102 | + $this->assertTrue($validator->validateJson('', new class() { |
| 103 | + public function __toString(): string |
| 104 | + { |
| 105 | + return json_encode(['foo' => 'bar'], JSON_UNESCAPED_UNICODE); |
| 106 | + } |
| 107 | + })); |
| 108 | + } |
71 | 109 | }
|
0 commit comments