Add CityValidationByName.
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	
				
					
				
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	
							parent
							
								
									f437d777a5
								
							
						
					
					
						commit
						1a7c585aa7
					
				@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace App\Models\Validation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use App\Models\Validation\ModelValidationByName;
 | 
				
			||||||
 | 
					use App\Models\Validation\Messages\CityMessagesFactory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CityValidationByName extends ModelValidationByName
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function __construct(string $name)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        parent::__construct(
 | 
				
			||||||
 | 
					            $name,
 | 
				
			||||||
 | 
					            'App\Models\City',
 | 
				
			||||||
 | 
					            (new CityMessagesFactory())->create(),
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace App\Models\Validation\Messages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use App\Models\Validation\Messages\BaseMessages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CityMessagesFactory
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    protected array $messages = [
 | 
				
			||||||
 | 
					        'found' => '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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests\Feature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Tests\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use App\Models\Validation\CityValidationByName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CityValidationByNameTest extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function dataProvider() {
 | 
				
			||||||
 | 
					        return [
 | 
				
			||||||
 | 
					            'Invalid Case' => [
 | 
				
			||||||
 | 
					                '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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
<?php
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Tests\Feature;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
 | 
					 | 
				
			||||||
use Illuminate\Foundation\Testing\WithFaker;
 | 
					 | 
				
			||||||
use Tests\TestCase;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use App\Models\City;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class CityValidationTest extends TestCase
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public function testCityWithEmptyName(): void
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $json = City::validateWithName('');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->assertEquals($json['error'], 'The city name is empty, please, write the name!!!');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function testNotExistingCityWithName(): void
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $name = '404 City';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $json = City::validateWithName($name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->assertEquals($json['error'], 'A city with the name does not exist!!!');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function testValidCityWithName(): void
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $name = 'testCity';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $json = City::validateWithName($name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->assertEquals($json['ok'], 'A city with the name is valid.');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue