/**
  * Test translateFail method.
  * @covers Rentalhost\VanillaValidation\ValidationLocalize::translateFail
  * @covers Rentalhost\VanillaValidation\ValidationLocalize::maskKey
  * @covers Rentalhost\VanillaValidation\ValidationLocalize::configureLocale
  */
 public function testTranslateFail()
 {
     $defaultLocale = Validation::option('locale');
     Validation::option('locale', 'pt-BR');
     $validation = new Validation();
     $validation->field('username', '')->required();
     $validationFails = $validation->validate()->getFails();
     static::assertSame('o campo "username" é obrigatório', $validationFails[0]->getLocalized());
     $validationFails = Validation::required()->validate('')->getFails();
     static::assertSame('o campo é obrigatório', $validationFails[0]->getLocalized());
     Validation::option('locale', ['unknow', 'pt-BR', 'en']);
     $validationFails = Validation::cpf()->validate('11122244405')->getFails();
     static::assertSame('o campo deve ser um CPF válido', $validationFails[0]->getLocalized());
     Validation::option('locale', $defaultLocale);
 }
 /**
  * Configure translator locale.
  */
 public static function configureLocale()
 {
     $localeOption = Validation::option('locale');
     if (!is_array($localeOption)) {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setLocale($localeOption);
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setFallbackLocales([$localeOption]);
     } else {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setLocale(array_shift($localeOption));
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setFallbackLocales($localeOption);
     }
 }
 /**
  * Test locale.
  * @covers Rentalhost\VanillaValidation\Result\Fail::getLocalized
  */
 public function testLocale()
 {
     $optionLocale = Validation::option('locale');
     // Valid.
     Validation::option('locale', ['pt-BR']);
     $validation = Validation::required()->validate('');
     static::assertCount(1, $validation->getFails());
     $validationFail = $validation->getFails()[0];
     static::assertSame('o campo é obrigatório', $validationFail->getLocalized());
     Validation::option('locale', 'pt-BR');
     static::assertSame('o campo é obrigatório', $validationFail->getLocalized());
     Validation::option('locale', ['unknow', 'pt-BR']);
     static::assertSame('o campo é obrigatório', $validationFail->getLocalized());
     // Fail.
     Validation::option('locale', ['unknow']);
     static::assertSame('fail:required', $validationFail->getLocalized());
     Validation::option('locale', 'unknow');
     static::assertSame('fail:required', $validationFail->getLocalized());
     Validation::option('locale', $optionLocale);
 }
 /**
  * Test option method.
  * @covers Rentalhost\VanillaValidation\Validation::option
  */
 public function testOption()
 {
     $defaultLocale = Validation::option('locale');
     static::assertNotEmpty($defaultLocale);
     Validation::option('locale', null);
     static::assertNull(Validation::option('locale'));
     Validation::option('locale', 'pt-BR');
     static::assertSame('pt-BR', Validation::option('locale'));
     static::assertNull(Validation::option('unexistentOption'));
     Validation::option('unexistentOption', 'value');
     static::assertNull(Validation::option('unexistentOption'));
     Validation::option('locale', $defaultLocale);
 }