diff --git a/app/Models/Validation/Messages/Factories/InformativeValidatorFactory.php b/app/Models/Validation/Messages/Factories/InformativeValidatorFactory.php new file mode 100644 index 0000000..8c8e9be --- /dev/null +++ b/app/Models/Validation/Messages/Factories/InformativeValidatorFactory.php @@ -0,0 +1,11 @@ +messages = [ + 'found' => 'A item with the name is valid.', + 'not_found' => 'A item with the name does not exist!!!', + 'invalid_name' => 'The item name is empty, please, write the name!!!', + ]; + + $this->name = $name; + } + + function create(): InformativeValidator + { + $okValidator = new OkInformativeValidator($this->messages['found']); + + $nameValidator = new NextInformativeValidator( + $this->messages['not_found'], + new ItemValidatorByName($this->name, $okValidator), + $okValidator + ); + + return new NextInformativeValidator( + $this->messages['invalid_name'], + new EmptyNameValidator($this->name, $nameValidator), + $nameValidator + ); + } +} + diff --git a/tests/Feature/Validation/Factories/ItemValidatorByNameFactoryTest.php b/tests/Feature/Validation/Factories/ItemValidatorByNameFactoryTest.php new file mode 100644 index 0000000..dec6aad --- /dev/null +++ b/tests/Feature/Validation/Factories/ItemValidatorByNameFactoryTest.php @@ -0,0 +1,46 @@ + [ + 'name' => '', + 'key' => 'error', + 'message' => 'The item name is empty, please, write the name!!!', + 'isValid' => false, + ], + 'Not Found Case' => [ + 'name' => '404 Item', + 'key' => 'error', + 'message' => 'A item with the name does not exist!!!', + 'isValid' => false, + ], + 'Found Case' => [ + 'name' => 'Pizza Polo', + 'key' => 'ok', + 'message' => 'A item with the name is valid.', + 'isValid' => true, + ] + ]; + } + + /** + * @dataProvider dataProvider + */ + public function testValidatorFactory(string $name, string $key, string $message, bool $isValid): void + { + $factory = new ItemInformativeValidatorByNameFactory($name); + $validator = $factory->create(); + + $this->assertEquals($validator->getMessage(), $message); + $this->assertEquals($validator->okStatus(), [$key => $message]); + $this->assertEquals($validator->isValid(), $isValid); + } +}