diff --git a/app/Http/Controllers/API/v2/CartController.php b/app/Http/Controllers/API/v2/CartController.php index 69f765f..9f97624 100644 --- a/app/Http/Controllers/API/v2/CartController.php +++ b/app/Http/Controllers/API/v2/CartController.php @@ -22,7 +22,7 @@ use App\DotsAPI\Fetcher\v2\AuthApiSender; use App\Http\Resources\API\v2\CartItemCollection; use App\Models\Validation\UserValidationByMatrixUsername; -use App\Models\Validation\CityValidationByName; +use App\Models\Validation\Validators\Informative\Factories\CityInformativeValidatorByNameFactory; use App\Models\Validation\Validators\Informative\Factories\CompanyInformativeValidatorByNameFactory; use App\Models\Validation\Validators\Informative\Factories\ItemInformativeValidatorByNameFactory; @@ -123,9 +123,9 @@ class CartController extends Controller if(!$validator->isValid()) return response()->json($validator->getMessageMap()); - $validator = new CityValidationByName($cityName); + $validator = (new CityInformativeValidatorByNameFactory($cityName))->create(); if(!$validator->isValid()) - return response()->json($validator->getMessageMap()); + return response()->json($validator->getOkStatus()); // Get objects $user = User::where('matrix_username', $matrixUsername)->first(); diff --git a/app/Models/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactory.php b/app/Models/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactory.php new file mode 100644 index 0000000..fb77f53 --- /dev/null +++ b/app/Models/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactory.php @@ -0,0 +1,26 @@ +setMessages((new MessageByNameFactory('city'))->create()); + + $this->setName($name); + } + + public function getValidatorByName(InformativeValidator $okValidator): Validator + { + return new CityValidatorByName($this->name, $okValidator); + } +} + diff --git a/tests/Feature/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactoryTest.php b/tests/Feature/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactoryTest.php new file mode 100644 index 0000000..13c4dc6 --- /dev/null +++ b/tests/Feature/Validation/Validators/Informative/Factories/CityInformativeValidatorByNameFactoryTest.php @@ -0,0 +1,47 @@ + [ + 'name' => 'testCity', + 'key' => 'ok', + 'message' => 'A city with the name is valid.', + 'isValid' => true, + ], + 'Not Found Case' => [ + 'name' => '404 City', + 'key' => 'error', + 'message' => 'A city with the name does not exist!!!', + 'isValid' => false, + ], + 'Invalid Case' => [ + 'name' => '', + 'key' => 'error', + 'message' => 'The city name is empty, please, write the name!!!', + 'isValid' => false, + ], + ]; + } + + /** + * @dataProvider dataProvider + */ + public function testValidatorFactory(string $name, string $key, string $message, bool $isValid): void + { + $factory = new CityInformativeValidatorByNameFactory($name); + $validator = $factory->create(); + + $this->assertEquals($validator->getMessage(), $message); + $this->assertEquals($validator->getOkStatus(), [$key => $message]); + $this->assertEquals($validator->isValid(), $isValid); + } +} +