From 91e3b3234fb25d2e2f09a4bda936f91f90f1b745 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Fri, 8 Sep 2023 13:51:31 +0300 Subject: [PATCH] Refactor to use InformativeValidators instead of ModelValidation. --- app/Models/City.php | 15 +----- app/Models/Company.php | 16 +----- app/Models/Item.php | 16 +----- .../Validation/CityValidationByName.php | 18 ------- .../Validation/Messages/BaseMessages.php | 25 --------- .../Messages/CityMessagesFactory.php | 20 -------- .../Validation/ModelValidationByName.php | 50 ------------------ .../Validation/ValidationByNameInterface.php | 10 ---- app/Models/Validation/ValidationStatus.php | 40 --------------- .../Validation/CityValidationByNameTest.php | 45 ---------------- .../Validation/Messages/BaseMessagesTest.php | 51 ------------------- 11 files changed, 3 insertions(+), 303 deletions(-) delete mode 100644 app/Models/Validation/CityValidationByName.php delete mode 100644 app/Models/Validation/Messages/BaseMessages.php delete mode 100644 app/Models/Validation/Messages/CityMessagesFactory.php delete mode 100644 app/Models/Validation/ModelValidationByName.php delete mode 100644 app/Models/Validation/ValidationByNameInterface.php delete mode 100644 app/Models/Validation/ValidationStatus.php delete mode 100644 tests/Feature/Validation/CityValidationByNameTest.php delete mode 100644 tests/Unit/Validation/Messages/BaseMessagesTest.php diff --git a/app/Models/City.php b/app/Models/City.php index 43f8990..ed929e8 100644 --- a/app/Models/City.php +++ b/app/Models/City.php @@ -7,10 +7,9 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; -use App\Models\Validation\ValidationByNameInterface; use App\Models\Company; -class City extends Model implements ValidationByNameInterface +class City extends Model { use HasFactory; @@ -64,16 +63,4 @@ class City extends Model implements ValidationByNameInterface { $this->companies()->detach($company_ids); } - - public static function isExistByName(string $name): bool - { - $count = City::where('name', $name)->count(); - - return $count != 0; - } - - public static function isNameValid(string $name): bool - { - return $name != ''; - } } diff --git a/app/Models/Company.php b/app/Models/Company.php index 48cd672..814231d 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -7,9 +7,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use App\Models\Validation\ValidationByNameInterface; - -class Company extends Model implements ValidationByNameInterface +class Company extends Model { use HasFactory; @@ -36,16 +34,4 @@ class Company extends Model implements ValidationByNameInterface return $count != 0; } - - public static function isExistByName(string $name): bool - { - $count = Company::where('name', $name)->count(); - - return $count != 0; - } - - public static function isNameValid(string $name): bool - { - return $name != ''; - } } diff --git a/app/Models/Item.php b/app/Models/Item.php index f7a9601..3d1c8df 100644 --- a/app/Models/Item.php +++ b/app/Models/Item.php @@ -7,9 +7,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use App\Models\Validation\ValidationByNameInterface; - -class Item extends Model implements ValidationByNameInterface +class Item extends Model { use HasFactory; @@ -88,17 +86,5 @@ class Item extends Model implements ValidationByNameInterface return $its_company->id == $company->id; } - - public static function isExistByName(string $name): bool - { - $count = Item::where('name', $name)->count(); - - return $count != 0; - } - - public static function isNameValid(string $name): bool - { - return $name != ''; - } } diff --git a/app/Models/Validation/CityValidationByName.php b/app/Models/Validation/CityValidationByName.php deleted file mode 100644 index 6ce2b6c..0000000 --- a/app/Models/Validation/CityValidationByName.php +++ /dev/null @@ -1,18 +0,0 @@ -create(), - ); - } -} diff --git a/app/Models/Validation/Messages/BaseMessages.php b/app/Models/Validation/Messages/BaseMessages.php deleted file mode 100644 index 3b5c6d0..0000000 --- a/app/Models/Validation/Messages/BaseMessages.php +++ /dev/null @@ -1,25 +0,0 @@ -messages = $messages; - } - - public function getMessage($status): string - { - return match($status) - { - ValidationStatus::FOUND => $this->messages['found'], - ValidationStatus::NOT_FOUND => $this->messages['not_found'], - ValidationStatus::INVALID_NAME => $this->messages['invalid_name'], - }; - } -} diff --git a/app/Models/Validation/Messages/CityMessagesFactory.php b/app/Models/Validation/Messages/CityMessagesFactory.php deleted file mode 100644 index 86ad608..0000000 --- a/app/Models/Validation/Messages/CityMessagesFactory.php +++ /dev/null @@ -1,20 +0,0 @@ - 'A city with the name is valid.', - 'not_found' => 'A city with the name does not exist!!!', - 'invalid_name' => 'The city name is empty, please, write the name!!!', - ]; - - public function create() - { - return new BaseMessages($this->messages); - } -} - diff --git a/app/Models/Validation/ModelValidationByName.php b/app/Models/Validation/ModelValidationByName.php deleted file mode 100644 index eb2bd0e..0000000 --- a/app/Models/Validation/ModelValidationByName.php +++ /dev/null @@ -1,50 +0,0 @@ -name = $name; - static::$className = $className; - static::$messages = $messages; - } - - public function getStatus() - { - if(!call_user_func([static::$className, 'isNameValid'], $this->name)) - return ValidationStatus::INVALID_NAME; - - if(!call_user_func([static::$className, 'isExistByName'], $this->name)) - return ValidationStatus::NOT_FOUND; - - return ValidationStatus::FOUND; - } - - public function getMessageMap() - { - $status = $this->getStatus(); - - return [ - $status->status() => static::$messages->getMessage($status) - ]; - } - - public function isValid() - { - return $this->getStatus()->isOk(); - } -} - diff --git a/app/Models/Validation/ValidationByNameInterface.php b/app/Models/Validation/ValidationByNameInterface.php deleted file mode 100644 index bab0575..0000000 --- a/app/Models/Validation/ValidationByNameInterface.php +++ /dev/null @@ -1,10 +0,0 @@ - 'found', - ValidationStatus::NOT_FOUND => 'not_found', - ValidationStatus::INVALID_NAME => 'invalid_name', - }; - } - - public function status(): string - { - return match($this) - { - ValidationStatus::FOUND => 'ok', - ValidationStatus::NOT_FOUND => 'error', - ValidationStatus::INVALID_NAME => 'error', - }; - } - - public function isError(): bool - { - return $this->status() == 'error'; - } - - public function isOk(): bool - { - return $this->status() == 'ok'; - } -} diff --git a/tests/Feature/Validation/CityValidationByNameTest.php b/tests/Feature/Validation/CityValidationByNameTest.php deleted file mode 100644 index c1b9500..0000000 --- a/tests/Feature/Validation/CityValidationByNameTest.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - 'name' => '', - 'key' => 'error', - 'message' => 'The city name is empty, please, write the name!!!', - 'isValid' => false, - ], - 'Not Found Case' => [ - 'name' => '404 City', - 'key' => 'error', - 'message' => 'A city with the name does not exist!!!', - 'isValid' => false, - ], - 'Found Case' => [ - 'name' => 'testCity', - 'key' => 'ok', - 'message' => 'A city with the name is valid.', - 'isValid' => true, - ] - ]; - } - - /** - * @dataProvider dataProvider - */ - public function testCityValidationWithName(string $name, string $key, string $message, bool $isValid): void - { - $validator = new CityValidationByName($name); - $json = $validator->getMessageMap(); - - $this->assertEquals($json[$key], $message); - $this->assertEquals($validator->isValid(), $isValid); - } -} diff --git a/tests/Unit/Validation/Messages/BaseMessagesTest.php b/tests/Unit/Validation/Messages/BaseMessagesTest.php deleted file mode 100644 index cc8c04c..0000000 --- a/tests/Unit/Validation/Messages/BaseMessagesTest.php +++ /dev/null @@ -1,51 +0,0 @@ - 'ok', - 'not_found' => '404', - 'invalid_name' => 'invalid name', - ]; - - protected BaseMessages $base_messages; - - public function dataProvider() { - return [ - 'Invalid Case' => [ - 'status' => ValidationStatus::INVALID_NAME, - 'expected_message' => $this->messages['invalid_name'], - ], - 'Not Found Case' => [ - 'status' => ValidationStatus::NOT_FOUND, - 'expected_message' => $this->messages['not_found'], - ], - 'Found Case' => [ - 'status' => ValidationStatus::FOUND, - 'expected_message' => $this->messages['found'], - ] - ]; - } - - public function setUp(): void - { - $this->base_messages = new BaseMessages($this->messages); - } - - /** - * @dataProvider dataProvider - */ - public function testGetMessage($status, string $expected_message): void - { - $message = $this->base_messages->getMessage($status); - - $this->assertEquals($expected_message, $message); - } -}