Increase test coverage of the following Rules

- Base64
- Base
- Bsn
- Contains
- Executable
- FilterVar
- In
- Ip
- Isbn
- NoWhiteSpace
- Pesel
- Phone
- PolishIdCard
- PortugueseNif
- PublicDomainSuffix
- StartsWith
- Subset
- Version
- VideoUrl
This commit is contained in:
Danilo Correa 2024-04-21 13:57:44 -03:00
parent 2ae1df177a
commit 5084aaebde
19 changed files with 86 additions and 0 deletions

View file

@ -55,6 +55,11 @@ final class Base64Test extends RuleTestCase
$rule = new Base64();
return [
[$rule, []],
[$rule, 1.2],
[$rule, false],
[$rule, 123],
[$rule, null],
[$rule, ''],
[$rule, 'hello!'],
[$rule, '=c3VyZS4'],

View file

@ -11,12 +11,23 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\Test;
use Respect\Validation\Exceptions\InvalidRuleConstructorException;
use Respect\Validation\Test\RuleTestCase;
#[Group('rule')]
#[CoversClass(Base::class)]
final class BaseTest extends RuleTestCase
{
#[Test]
public function itShouldThrowsExceptionWhenBaseIsNotValid(): void
{
$this->expectException(InvalidRuleConstructorException::class);
$this->expectExceptionMessage('a base between 1 and 62 is required');
(new Base(63))->evaluate('011010001');
}
/** @return iterable<array{Base, mixed}> */
public static function providerForValidInput(): iterable
{

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(Bsn::class)]
@ -42,6 +43,9 @@ final class BsnTest extends RuleTestCase
$rule = new Bsn();
return [
[$rule, []],
[$rule, new stdClass()],
[$rule, null],
[$rule, '1234567890'],
[$rule, '0987654321'],
[$rule, '13579024'],

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(Contains::class)]
@ -40,10 +41,17 @@ final class ContainsTest extends RuleTestCase
public static function providerForInvalidInput(): iterable
{
return [
[new Contains('', false), 'abc'],
[new Contains(null, false), null],
[new Contains(null, false), []],
[new Contains(new stdClass(), false), new stdClass()],
[new Contains('foo', false), ''],
[new Contains('bat', false), ['bar', 'foo']],
[new Contains('foo', false), 'barfaabaz'],
[new Contains('foo', false), 'faabarbaz'],
[new Contains(null, true), null],
[new Contains(null, true), []],
[new Contains(new stdClass(), true), new stdClass()],
[new Contains('foo', true), ''],
[new Contains('bat', true), ['BAT', 'foo']],
[new Contains('bat', true), ['BaT', 'Batata']],

View file

@ -14,6 +14,7 @@ use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use SplFileInfo;
use SplFileObject;
use stdClass;
#[Group('rule')]
#[CoversClass(Executable::class)]
@ -37,6 +38,9 @@ final class ExecutableTest extends RuleTestCase
$rule = new Executable();
return [
[$rule, []],
[$rule, new stdClass()],
[$rule, null],
[$rule, 'tests/fixtures/valid-image.gif'],
[$rule, new SplFileInfo('tests/fixtures/valid-image.jpg')],
[$rule, new SplFileObject('tests/fixtures/valid-image.png')],

View file

@ -60,6 +60,8 @@ final class FilterVarTest extends RuleTestCase
[new FilterVar(FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED), 'http://example.com'],
[new FilterVar(FILTER_VALIDATE_DOMAIN), '.com'],
[new FilterVar(FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME), '@local'],
[new FilterVar(FILTER_VALIDATE_INT, []), 1.4],
[new FilterVar(FILTER_VALIDATE_INT, 2), 1.4],
];
}
}

View file

@ -38,6 +38,7 @@ final class InTest extends RuleTestCase
public static function providerForInvalidInput(): iterable
{
return [
[new In('0', true), 'abc'],
[new In('0'), null],
[new In(0, true), null],
[new In('', true), null],

View file

@ -42,6 +42,7 @@ final class IpTest extends RuleTestCase
return [
['192.168'],
['asd'],
['-'],
['192.168.0.0-192.168.0.256'],
['192.168.0.0-192.168.0.1/4'],
['192.168.0/1'],

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(Isbn::class)]
@ -39,6 +40,9 @@ final class IsbnTest extends RuleTestCase
$sut = new Isbn();
return [
[$sut, []],
[$sut, null],
[$sut, new stdClass()],
[$sut, 'ISBN 11978-0-596-52068-7'],
[$sut, 'ISBN-12: 978-0-596-52068-7'],
[$sut, '978 10 596 52068 7'],

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(NoWhitespace::class)]
@ -37,6 +38,8 @@ final class NoWhitespaceTest extends RuleTestCase
$rule = new NoWhitespace();
return [
[$rule, []],
[$rule, new stdClass()],
[$rule, ' '],
[$rule, 'w poiur'],
[$rule, ' '],

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(Pesel::class)]
@ -40,6 +41,9 @@ final class PeselTest extends RuleTestCase
$rule = new Pesel();
return [
[$rule, null],
[$rule, []],
[$rule, new stdClass()],
[$rule, '1'],
[$rule, '22'],
[$rule, 'PESEL'],

View file

@ -13,7 +13,9 @@ use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\Test;
use Respect\Validation\Exceptions\InvalidRuleConstructorException;
use Respect\Validation\Test\TestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(Phone::class)]
@ -47,6 +49,15 @@ final class PhoneTest extends TestCase
self::assertInvalidInput(new Phone($countryCode), $input);
}
#[Test]
public function itShouldThrowsExceptionWhenCountryCodeIsNotValid(): void
{
$this->expectException(InvalidRuleConstructorException::class);
$this->expectExceptionMessage('Invalid country code BRR');
(new Phone('BRR'))->evaluate('+1 11 91111 1111');
}
/** @return array<array{mixed}> */
public static function providerForValidInputWithoutCountryCode(): array
{
@ -67,6 +78,8 @@ final class PhoneTest extends TestCase
public static function providerForInvalidInputWithoutCountryCode(): array
{
return [
[null],
[new stdClass()],
['+1-650-253-00-0'],
['33(020) 7777 7777'],
['33(020)7777 7777'],

View file

@ -12,6 +12,7 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
#[Group('rule')]
#[CoversClass(PolishIdCard::class)]
@ -35,6 +36,10 @@ final class PolishIdCardTest extends RuleTestCase
$rule = new PolishIdCard();
return [
[$rule, null],
[$rule, new stdClass()],
[$rule, []],
[$rule, '999205411'],
[$rule, 'AAAAAAAAA'],
[$rule, 'APH 505567'],
[$rule, 'AYE205411'],

View file

@ -55,6 +55,9 @@ final class PortugueseNifTest extends RuleTestCase
return [
// Check digit is wrong
[$rule, '429468882'],
[$rule, '739468882'],
[$rule, '939468882'],
[$rule, '129468882'],
[$rule, '220005245'],
[$rule, '389684008'],

View file

@ -24,6 +24,7 @@ final class PublicDomainSuffixTest extends RuleTestCase
$rule = new PublicDomainSuffix();
return [
[$rule, ''],
[$rule, 'co.uk'],
[$rule, 'nom.br'],
[$rule, 'WWW.CK'],

View file

@ -34,6 +34,8 @@ final class StartsWithTest extends RuleTestCase
public static function providerForInvalidInput(): iterable
{
return [
[new StartsWith(123), 123],
[new StartsWith(123, true), 123],
[new StartsWith('foo'), ''],
[new StartsWith('bat'), ['foo', 'bar']],
[new StartsWith('foo'), 'barfaabaz'],

View file

@ -35,6 +35,7 @@ final class SubsetTest extends RuleTestCase
public static function providerForInvalidInput(): iterable
{
return [
[new Subset([]), '1'],
[new Subset([]), [1]],
[new Subset([1]), [2]],
[new Subset([1, 2]), [1, 2, 3]],

View file

@ -41,6 +41,8 @@ final class VersionTest extends RuleTestCase
$sut = new Version();
return [
'int' => [$sut, 1],
'float' => [$sut, 1.2],
'empty' => [$sut, ''],
'1.3.7--' => [$sut, '1.3.7--'],
'1.3.7++' => [$sut, '1.3.7++'],

View file

@ -11,12 +11,23 @@ namespace Respect\Validation\Rules;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\Test;
use Respect\Validation\Exceptions\InvalidRuleConstructorException;
use Respect\Validation\Test\RuleTestCase;
#[Group('rule')]
#[CoversClass(VideoUrl::class)]
final class VideoUrlTest extends RuleTestCase
{
#[Test]
public function itShouldThrowsExceptionWhenVideoUrlIsNotValid(): void
{
$this->expectException(InvalidRuleConstructorException::class);
$this->expectExceptionMessage('"tiktok" is not a recognized video service.');
(new VideoUrl('tiktok'))->evaluate('https://tiktok.com/video/71787467');
}
/** @return iterable<array{VideoUrl, mixed}> */
public static function providerForValidInput(): iterable
{
@ -40,6 +51,7 @@ final class VideoUrlTest extends RuleTestCase
public static function providerForInvalidInput(): iterable
{
return [
'vimeo service with invalid URL' => [new VideoUrl('vimeo'), 1],
'vimeo service with youtube url' => [new VideoUrl('vimeo'), 'https://www.youtube.com/watch?v=netHLn9TScY'],
'youtube service with vimeo url' => [new VideoUrl('youtube'), 'https://vimeo.com/71787467'],
'no service with example.com url' => [new VideoUrl(), 'example.com'],