diff --git a/src/Schemas/ArraySchema.php b/src/Schemas/ArraySchema.php index 089dc35862a377cd6ea7fbccfed3e86a7e79ff57..e452ff70ffa9453ec50caf8a5995ebf9976869a1 100644 --- a/src/Schemas/ArraySchema.php +++ b/src/Schemas/ArraySchema.php @@ -16,12 +16,14 @@ class ArraySchema extends BaseSchema /** * @inheritDoc + * * @throws Exception */ protected function validateSchema(mixed $value): void { if (!is_array($value)) { - $this->error($this->customMessages['type'] ?? "Provided value must be an array"); + $this->error($this->customMessages['type'] ?? 'Provided value must be an array'); + return; } diff --git a/src/Schemas/BaseSchema.php b/src/Schemas/BaseSchema.php index 25a07d38499bdc3282cac78d75a04f5311271776..0a4fbaa20474d3fb54eccb12b3ad928aef941ab6 100644 --- a/src/Schemas/BaseSchema.php +++ b/src/Schemas/BaseSchema.php @@ -58,7 +58,7 @@ abstract class BaseSchema return $this; } - public function refine(callable $callback, $customMessage = "Custom validation error"): static + public function refine(callable $callback, $customMessage = 'Custom validation error'): static { $this->customMessages['refine'] = $customMessage; $this->callback = $callback(...); @@ -100,7 +100,7 @@ abstract class BaseSchema * * @return void */ - protected final function error(string $message): void + final protected function error(string $message): void { $this->errorMessages[] = $message; } @@ -110,7 +110,7 @@ abstract class BaseSchema * * @return void */ - protected final function setErrorMessages(array $errors): void + final protected function setErrorMessages(array $errors): void { $this->errorMessages = $errors; } diff --git a/src/Schemas/NumericSchema.php b/src/Schemas/NumericSchema.php index 917da3f2402b44d9499dee90ff9a8197b195f085..e9b66aab76840227faf05023430cb88c18306a35 100644 --- a/src/Schemas/NumericSchema.php +++ b/src/Schemas/NumericSchema.php @@ -17,7 +17,7 @@ class NumericSchema extends BaseSchema /** * @return $this */ - public function integer(string $customMessage = "Value must be an integer"): static + public function integer(string $customMessage = 'Value must be an integer'): static { $this->integerOnly = true; $this->customMessages['integerOnly'] = $customMessage; @@ -28,7 +28,7 @@ class NumericSchema extends BaseSchema /** * @return $this */ - public function float(string $customMessage = "Value must be a float"): static + public function float(string $customMessage = 'Value must be a float'): static { $this->floatOnly = true; $this->customMessages['floatOnly'] = $customMessage; @@ -39,7 +39,7 @@ class NumericSchema extends BaseSchema /** * @return $this */ - public function positive(string $customMessage = "Value must be positive"): static + public function positive(string $customMessage = 'Value must be positive'): static { $this->positiveOnly = true; $this->customMessages['positiveOnly'] = $customMessage; @@ -53,7 +53,7 @@ class NumericSchema extends BaseSchema protected function validateSchema(mixed $value): void { if (!is_numeric($value)) { - $this->error($this->customMessages['type'] ?? "Value must be a number"); + $this->error($this->customMessages['type'] ?? 'Value must be a number'); } if (!is_null($this->min) && $value < $this->min) { diff --git a/src/Schemas/ObjectSchema.php b/src/Schemas/ObjectSchema.php index 0d161a7f4475fb7058ed3f0fcd8f7c39a48b5486..4e9b1ac68ee4bd810ed056735e4af7e7d4f975b1 100644 --- a/src/Schemas/ObjectSchema.php +++ b/src/Schemas/ObjectSchema.php @@ -9,7 +9,8 @@ class ObjectSchema extends ArraySchema protected function validateSchema(mixed $value): void { if (!is_object($value)) { - $this->error($this->customMessages['type'] ?? "Provided value must be an object"); + $this->error($this->customMessages['type'] ?? 'Provided value must be an object'); + return; } diff --git a/src/Schemas/StringSchema.php b/src/Schemas/StringSchema.php index 19cfbdfd8fe01fede00c9cdaab959718e2b36794..be60c21ce0e3ea7e6173443a4435feade389642c 100644 --- a/src/Schemas/StringSchema.php +++ b/src/Schemas/StringSchema.php @@ -19,7 +19,7 @@ class StringSchema extends BaseSchema protected function validateSchema(mixed $value): void { if (!is_string($value)) { - $this->error($this->customMessages['type'] ?? "Value must be a string"); + $this->error($this->customMessages['type'] ?? 'Value must be a string'); } if (!is_null($this->min)) { diff --git a/src/Validator.php b/src/Validator.php index efcc896a1a4af48d7b713c82cb6ffb068dd27cb7..22a868a45780596b82866869c7ca17d507f867e2 100644 --- a/src/Validator.php +++ b/src/Validator.php @@ -3,7 +3,6 @@ namespace Webdevcave\SchemaValidator; use Webdevcave\SchemaValidator\Schemas\ArraySchema; -use Webdevcave\SchemaValidator\Schemas\BaseSchema; use Webdevcave\SchemaValidator\Schemas\NumericSchema; use Webdevcave\SchemaValidator\Schemas\ObjectSchema; use Webdevcave\SchemaValidator\Schemas\StringSchema; diff --git a/tests/Schemas/ArraySchemaTest.php b/tests/Schemas/ArraySchemaTest.php index b1c78a4e3102346131cb0c7231d2515fc1c3f94d..c01c236ecfa43080694b0985a6fff1166d539b6a 100644 --- a/tests/Schemas/ArraySchemaTest.php +++ b/tests/Schemas/ArraySchemaTest.php @@ -22,24 +22,24 @@ class ArraySchemaTest extends TestCase { $schema = Validator::array(); - $this->assertFalse($schema->validate(1), "Array schema should not validate integers"); - $this->assertFalse($schema->validate(1.1), "Array schema should not validate floats"); - $this->assertFalse($schema->validate('str'), "Array schema should not validate strings"); - $this->assertFalse($schema->validate(new stdClass()), "Array schema should not validate objects"); + $this->assertFalse($schema->validate(1), 'Array schema should not validate integers'); + $this->assertFalse($schema->validate(1.1), 'Array schema should not validate floats'); + $this->assertFalse($schema->validate('str'), 'Array schema should not validate strings'); + $this->assertFalse($schema->validate(new stdClass()), 'Array schema should not validate objects'); - $this->assertTrue($schema->validate([1, 2, 3]), "Array schema should validate arrays"); + $this->assertTrue($schema->validate([1, 2, 3]), 'Array schema should validate arrays'); } public function testDataValidation(): void { $positiveIntCheckMessage = 'must be positive'; - $schema = Validator::array(['name' => Validator::string()->min(3), 'age' => Validator::numeric()->integer()->positive($positiveIntCheckMessage),]); + $schema = Validator::array(['name' => Validator::string()->min(3), 'age' => Validator::numeric()->integer()->positive($positiveIntCheckMessage)]); - $validData = ['name' => 'Carlos', 'age' => 35,]; - $this->assertTrue($schema->validate($validData), "Should return true when dataset is valid"); + $validData = ['name' => 'Carlos', 'age' => 35]; + $this->assertTrue($schema->validate($validData), 'Should return true when dataset is valid'); - $invalidData = ['name' => 'John', 'age' => -10,]; - $this->assertFalse($schema->validate($invalidData), "Should return false when dataset is not valid"); + $invalidData = ['name' => 'John', 'age' => -10]; + $this->assertFalse($schema->validate($invalidData), 'Should return false when dataset is not valid'); $this->assertEquals(['age' => [$positiveIntCheckMessage]], $schema->errorMessages(), 'Error messages doesn\'t match'); } @@ -49,10 +49,10 @@ class ArraySchemaTest extends TestCase $schema = Validator::array(['*' => Validator::numeric()->integer($errorMessage)]); $validData = [1, 2, 3]; - $this->assertTrue($schema->validate($validData), "Error evaluating wildcard index with valid data"); + $this->assertTrue($schema->validate($validData), 'Error evaluating wildcard index with valid data'); $invalidData = [null]; - $this->assertFalse($schema->validate($invalidData), "Error evaluating wildcard index with invalid data"); + $this->assertFalse($schema->validate($invalidData), 'Error evaluating wildcard index with invalid data'); } public function testOptionalCheckShouldPassOnEmptyArray(): void @@ -74,6 +74,6 @@ class ArraySchemaTest extends TestCase $data = [ 'name' => str_repeat('a', 10), ]; - $this->assertTrue($schema->validate($data), "Array schema should accept double rule"); + $this->assertTrue($schema->validate($data), 'Array schema should accept double rule'); } } diff --git a/tests/Schemas/BaseSchemaTest.php b/tests/Schemas/BaseSchemaTest.php index 44467e4de34c706d404a608f7153676ee5bb477e..465f23ed12fa1d2cdff09674fb0a5b89b94eccff 100644 --- a/tests/Schemas/BaseSchemaTest.php +++ b/tests/Schemas/BaseSchemaTest.php @@ -43,7 +43,8 @@ class BaseSchemaTest extends TestCase $this->schema->equals($value); $this->assertEquals( - $value, $this->schema->equals(), + $value, + $this->schema->equals(), 'Schema should be able to set and get a rule value' ); } diff --git a/tests/Schemas/NumericSchemaTest.php b/tests/Schemas/NumericSchemaTest.php index d897a3aeda40a14809c03418789d8a2d36147362..65f2c11874a24706526ede1fb86ae87322ca3da7 100644 --- a/tests/Schemas/NumericSchemaTest.php +++ b/tests/Schemas/NumericSchemaTest.php @@ -19,9 +19,9 @@ class NumericSchemaTest extends TestCase $schema = new NumericSchema(); $schema->min(10); - $this->assertTrue($schema->validate(10), "Failed asserting equals than minimum value"); - $this->assertTrue($schema->validate(11), "Failed asserting number greater than minimum value"); - $this->assertFalse($schema->validate(9), "Failed asserting number lower than minimum value"); + $this->assertTrue($schema->validate(10), 'Failed asserting equals than minimum value'); + $this->assertTrue($schema->validate(11), 'Failed asserting number greater than minimum value'); + $this->assertFalse($schema->validate(9), 'Failed asserting number lower than minimum value'); } public function testMaxValue(): void @@ -29,9 +29,9 @@ class NumericSchemaTest extends TestCase $schema = new NumericSchema(); $schema->max(10); - $this->assertTrue($schema->validate(10), "Failed asserting equals than maximum value"); - $this->assertFalse($schema->validate(11), "Failed asserting number greater than maximum value"); - $this->assertTrue($schema->validate(9), "Failed asserting number lower than maximum value"); + $this->assertTrue($schema->validate(10), 'Failed asserting equals than maximum value'); + $this->assertFalse($schema->validate(11), 'Failed asserting number greater than maximum value'); + $this->assertTrue($schema->validate(9), 'Failed asserting number lower than maximum value'); } public function testRequirePositive(): void @@ -39,20 +39,20 @@ class NumericSchemaTest extends TestCase $schema = new NumericSchema(); $schema->positive(); - $this->assertTrue($schema->validate(1), "Failed asserting positive value"); - $this->assertFalse($schema->validate(-1), "Failed asserting negative value (positive required)"); + $this->assertTrue($schema->validate(1), 'Failed asserting positive value'); + $this->assertFalse($schema->validate(-1), 'Failed asserting negative value (positive required)'); } public function testTypeValidation(): void { $schema = new NumericSchema(); - $this->assertFalse($schema->validate('str'), "Numeric schema should not validate strings"); - $this->assertFalse($schema->validate(new stdClass()), "Numeric schema should not validate objects"); - $this->assertFalse($schema->validate([1,2,3]), "Numeric schema should validate arrays"); + $this->assertFalse($schema->validate('str'), 'Numeric schema should not validate strings'); + $this->assertFalse($schema->validate(new stdClass()), 'Numeric schema should not validate objects'); + $this->assertFalse($schema->validate([1, 2, 3]), 'Numeric schema should validate arrays'); - $this->assertTrue($schema->validate(1), "Numeric schema should validate integers"); - $this->assertTrue($schema->validate(1.1), "Numeric schema should validate floats"); + $this->assertTrue($schema->validate(1), 'Numeric schema should validate integers'); + $this->assertTrue($schema->validate(1.1), 'Numeric schema should validate floats'); } public function testExclusiveIntegerValidation(): void @@ -60,8 +60,8 @@ class NumericSchemaTest extends TestCase $schema = new NumericSchema(); $schema->integer(); - $this->assertTrue($schema->validate(1), "Numeric schema should validate integers (int only)"); - $this->assertFalse($schema->validate(1.1), "Numeric schema should not validate floats (int only)"); + $this->assertTrue($schema->validate(1), 'Numeric schema should validate integers (int only)'); + $this->assertFalse($schema->validate(1.1), 'Numeric schema should not validate floats (int only)'); } public function testExclusiveFloatValidation(): void @@ -69,7 +69,7 @@ class NumericSchemaTest extends TestCase $schema = new NumericSchema(); $schema->float(); - $this->assertFalse($schema->validate(1), "Numeric schema should not validate integers (floats only)"); - $this->assertTrue($schema->validate(1.1), "Numeric schema should validate floats (floats only)"); + $this->assertFalse($schema->validate(1), 'Numeric schema should not validate integers (floats only)'); + $this->assertTrue($schema->validate(1.1), 'Numeric schema should validate floats (floats only)'); } } diff --git a/tests/Schemas/ObjectSchemaTest.php b/tests/Schemas/ObjectSchemaTest.php index 94f7e4d258f1ebe19b6679a62675506755be10ae..829b039d393b87789d003a0ef7aef65a7b92a0fc 100644 --- a/tests/Schemas/ObjectSchemaTest.php +++ b/tests/Schemas/ObjectSchemaTest.php @@ -3,11 +3,11 @@ namespace Webdevcave\SchemaValidator\Tests\Schemas; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\TestCase; use stdClass; use Webdevcave\SchemaValidator\Schemas\ArraySchema; use Webdevcave\SchemaValidator\Schemas\BaseSchema; use Webdevcave\SchemaValidator\Schemas\ObjectSchema; -use PHPUnit\Framework\TestCase; use Webdevcave\SchemaValidator\Validator; #[CoversClass(ObjectSchema::class)] @@ -20,11 +20,11 @@ class ObjectSchemaTest extends TestCase { $schema = Validator::object(); - $this->assertFalse($schema->validate(1), "Array schema should not validate integers"); - $this->assertFalse($schema->validate(1.1), "Array schema should not validate floats"); - $this->assertFalse($schema->validate('str'), "Array schema should not validate strings"); - $this->assertFalse($schema->validate([1, 2, 3]), "Array schema should not validate arrays"); + $this->assertFalse($schema->validate(1), 'Array schema should not validate integers'); + $this->assertFalse($schema->validate(1.1), 'Array schema should not validate floats'); + $this->assertFalse($schema->validate('str'), 'Array schema should not validate strings'); + $this->assertFalse($schema->validate([1, 2, 3]), 'Array schema should not validate arrays'); - $this->assertTrue($schema->validate(new stdClass()), "Array schema should validate object"); + $this->assertTrue($schema->validate(new stdClass()), 'Array schema should validate object'); } } diff --git a/tests/Schemas/StringSchemaTest.php b/tests/Schemas/StringSchemaTest.php index 7be2dfc8059c3dcae7db7df9575ea2758302f08f..8a417a4d657f473bd1f5457384ea56d392f6d1b6 100644 --- a/tests/Schemas/StringSchemaTest.php +++ b/tests/Schemas/StringSchemaTest.php @@ -3,10 +3,10 @@ namespace Webdevcave\SchemaValidator\Tests\Schemas; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\TestCase; use stdClass; use Webdevcave\SchemaValidator\Schemas\BaseSchema; use Webdevcave\SchemaValidator\Schemas\StringSchema; -use PHPUnit\Framework\TestCase; use Webdevcave\SchemaValidator\Validator; #[CoversClass(Validator::class)] @@ -21,7 +21,7 @@ class StringSchemaTest extends TestCase $this->assertFalse($schema->validate(1), 'Should not validate integers'); $this->assertFalse($schema->validate(1.2), 'Should not validate floats'); $this->assertFalse($schema->validate([]), 'Should not validate arrays'); - $this->assertFalse($schema->validate(new stdClass), 'Should not validate objects'); + $this->assertFalse($schema->validate(new stdClass()), 'Should not validate objects'); $this->assertFalse($schema->validate(null), 'Should not validate null'); $this->assertTrue($schema->validate('my string'), 'Should validate strings'); } diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index ba26e57c90b09c114751b421a11030daf6202f66..a7f1f4ddd7d1024a6fcc18c83fd9abcef0c605a1 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -3,12 +3,12 @@ namespace Webdevcave\SchemaValidator\Tests; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\TestCase; use Webdevcave\SchemaValidator\Schemas\ArraySchema; use Webdevcave\SchemaValidator\Schemas\NumericSchema; use Webdevcave\SchemaValidator\Schemas\ObjectSchema; use Webdevcave\SchemaValidator\Schemas\StringSchema; use Webdevcave\SchemaValidator\Validator; -use PHPUnit\Framework\TestCase; #[CoversClass(Validator::class)] #[CoversClass(StringSchema::class)]