mirror of
https://github.com/Respect/Validation.git
synced 2024-06-09 01:02:16 +02:00
Apply contribution guidelines to "LanguageCode" rule
Co-authored-by: Henrique Moody <henriquemoody@gmail.com>
This commit is contained in:
parent
d6699a3daf
commit
9595b3fd6c
|
@ -1,8 +1,9 @@
|
|||
# LanguageCode
|
||||
|
||||
- `LanguageCode()`
|
||||
- `LanguageCode(string $set)`
|
||||
|
||||
Validates a language code based on ISO 639:
|
||||
Validates whether the input is language code based on ISO 639.
|
||||
|
||||
```php
|
||||
v::languageCode()->validate('pt'); // true
|
||||
|
@ -12,7 +13,7 @@ v::languageCode('alpha-3')->validate('ita'); // true
|
|||
v::languageCode('alpha-3')->validate('eng'); // true
|
||||
```
|
||||
|
||||
You can choose between alpha-2 and alpha-3, alpha-2 is set by default.
|
||||
You can choose between `alpha-2` and `alpha-3`; `alpha-2` is set by default set.
|
||||
|
||||
## Changelog
|
||||
|
||||
|
|
|
@ -13,14 +13,22 @@ declare(strict_types=1);
|
|||
|
||||
namespace Respect\Validation\Exceptions;
|
||||
|
||||
class LanguageCodeException extends ValidationException
|
||||
/**
|
||||
* @author Danilo Benevides <danilobenevides01@gmail.com>
|
||||
* @author Emmerson Siqueira <emmersonsiqueira@gmail.com>
|
||||
* @author Henrique Moody <henriquemoody@gmail.com>
|
||||
*/
|
||||
final class LanguageCodeException extends ValidationException
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $defaultTemplates = [
|
||||
self::MODE_DEFAULT => [
|
||||
self::STANDARD => '{{name}} must be a valid language',
|
||||
self::STANDARD => '{{name}} must be a valid ISO 639 {{set}} language code',
|
||||
],
|
||||
self::MODE_NEGATIVE => [
|
||||
self::STANDARD => '{{name}} must not be a valid language',
|
||||
self::STANDARD => '{{name}} must not be a valid ISO 639 {{set}} language code',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
38
tests/integration/rules/languageCode.phpt
Normal file
38
tests/integration/rules/languageCode.phpt
Normal file
|
@ -0,0 +1,38 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\LanguageCodeException;
|
||||
use Respect\Validation\Exceptions\NestedValidationException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::languageCode()->check(null);
|
||||
} catch (LanguageCodeException $exception) {
|
||||
echo $exception->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::languageCode())->check('pt');
|
||||
} catch (LanguageCodeException $exception) {
|
||||
echo $exception->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::languageCode()->assert('por');
|
||||
} catch (NestedValidationException $exception) {
|
||||
echo $exception->getFullMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::languageCode())->assert('en');
|
||||
} catch (NestedValidationException $exception) {
|
||||
echo $exception->getFullMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
`NULL` must be a valid ISO 639 "alpha-2" language code
|
||||
"pt" must not be a valid ISO 639 "alpha-2" language code
|
||||
- "por" must be a valid ISO 639 "alpha-2" language code
|
||||
- "en" must not be a valid ISO 639 "alpha-2" language code
|
|
@ -1,24 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Rules\LanguageCode;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
v::languageCode()->assert('pt');
|
||||
v::languageCode()->assert('en');
|
||||
v::languageCode()->assert('it');
|
||||
|
||||
v::languageCode()->check('pt');
|
||||
v::languageCode()->check('en');
|
||||
v::languageCode()->check('it');
|
||||
|
||||
v::languageCode('alpha-3')->assert('por');
|
||||
v::languageCode('alpha-3')->assert('eng');
|
||||
v::languageCode('alpha-3')->assert('ita');
|
||||
|
||||
v::languageCode('alpha-3')->check('por');
|
||||
v::languageCode('alpha-3')->check('eng');
|
||||
v::languageCode('alpha-3')->check('ita');
|
||||
?>
|
||||
--EXPECTF--
|
|
@ -1,38 +0,0 @@
|
|||
--FILE--
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use Respect\Validation\Exceptions\AllOfException;
|
||||
use Respect\Validation\Exceptions\LanguageCodeException;
|
||||
use Respect\Validation\Validator as v;
|
||||
|
||||
try {
|
||||
v::languageCode('alpha-3')->check('pt');
|
||||
} catch (LanguageCodeException $e) {
|
||||
echo $e->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::languageCode()->assert('eng');
|
||||
} catch (AllOfException $e) {
|
||||
echo $e->getFullMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::languageCode())->assert('en');
|
||||
} catch (AllOfException $e) {
|
||||
echo $e->getFullMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
try {
|
||||
v::not(v::languageCode())->check('pt');
|
||||
} catch (LanguageCodeException $e) {
|
||||
echo $e->getMessage().PHP_EOL;
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
"pt" must be a valid language
|
||||
- "eng" must be a valid language
|
||||
- "en" must not be a valid language
|
||||
"pt" must not be a valid language
|
|
@ -13,43 +13,69 @@ declare(strict_types=1);
|
|||
|
||||
namespace Respect\Validation\Rules;
|
||||
|
||||
use Respect\Validation\Exceptions\ComponentException;
|
||||
use Respect\Validation\Test\RuleTestCase;
|
||||
|
||||
/**
|
||||
* @group rule
|
||||
* @group rule
|
||||
*
|
||||
* @covers \Respect\Validation\Rules\LanguageCode
|
||||
*
|
||||
* @author Danilo Benevides <danilobenevides01@gmail.com>
|
||||
* @author Emmerson Siqueira <emmersonsiqueira@gmail.com>
|
||||
* @author Henrique Moody <henriquemoody@gmail.com>
|
||||
*/
|
||||
class LanguageCodeTest extends RuleTestCase
|
||||
final class LanguageCodeTest extends RuleTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerForValidInput(): array
|
||||
{
|
||||
$ruleAlpha2 = new LanguageCode();
|
||||
$ruleAlpha3 = new LanguageCode('alpha-3');
|
||||
$sutAlpha2 = new LanguageCode(LanguageCode::ALPHA2);
|
||||
$sutAlpha3 = new LanguageCode(LanguageCode::ALPHA3);
|
||||
|
||||
return [
|
||||
[$ruleAlpha2, 'pt'],
|
||||
[$ruleAlpha3, 'por'],
|
||||
[$ruleAlpha2, 'en'],
|
||||
[$ruleAlpha3, 'eng'],
|
||||
[$ruleAlpha2, 'it'],
|
||||
[$ruleAlpha3, 'ita'],
|
||||
[$ruleAlpha2, 'la'],
|
||||
[$ruleAlpha3, 'lat'],
|
||||
'alpha-2: en' => [$sutAlpha2, 'en'],
|
||||
'alpha-2: it' => [$sutAlpha2, 'it'],
|
||||
'alpha-2: la' => [$sutAlpha2, 'la'],
|
||||
'alpha-2: pt' => [$sutAlpha2, 'pt'],
|
||||
'alpha-3: eng' => [$sutAlpha3, 'eng'],
|
||||
'alpha-3: ita' => [$sutAlpha3, 'ita'],
|
||||
'alpha-3: lat' => [$sutAlpha3, 'lat'],
|
||||
'alpha-3: por' => [$sutAlpha3, 'por'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function providerForInvalidInput(): array
|
||||
{
|
||||
$ruleAlpha2 = new LanguageCode();
|
||||
$ruleAlpha3 = new LanguageCode('alpha-3');
|
||||
$sutAlpha2 = new LanguageCode(LanguageCode::ALPHA2);
|
||||
$sutAlpha3 = new LanguageCode(LanguageCode::ALPHA3);
|
||||
|
||||
return [
|
||||
[$ruleAlpha2, 'por'],
|
||||
[$ruleAlpha2, ''],
|
||||
[$ruleAlpha2, null],
|
||||
[$ruleAlpha2, false],
|
||||
[$ruleAlpha2, []],
|
||||
[$ruleAlpha3, 'pt'],
|
||||
'alpha-2: alpha-3 code' => [$sutAlpha2, 'por'],
|
||||
'alpha-2: boolean' => [$sutAlpha2, false],
|
||||
'alpha-2: empty array' => [$sutAlpha2, []],
|
||||
'alpha-2: empty' => [$sutAlpha2, ''],
|
||||
'alpha-2: null' => [$sutAlpha2, null],
|
||||
'alpha-3: alpha-2 code' => [$sutAlpha3, 'pt'],
|
||||
'alpha-3: boolean' => [$sutAlpha3, true],
|
||||
'alpha-3: empty array' => [$sutAlpha3, []],
|
||||
'alpha-3: empty' => [$sutAlpha3, ''],
|
||||
'alpha-3: null' => [$sutAlpha3, ''],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldThrowAnExceptionWhenSetIsInvalid(): void
|
||||
{
|
||||
$this->expectExceptionObject(new ComponentException('"foo" is not a valid language set for ISO 639'));
|
||||
|
||||
new LanguageCode('foo');
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue