Apply contribution guidelines to "ResourceType" rule

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
This commit is contained in:
Henrique Moody 2018-03-26 23:19:11 +02:00
parent ad9cab5daf
commit bfdea5b5bd
No known key found for this signature in database
GPG key ID: 221E9281655813A6
5 changed files with 76 additions and 48 deletions

View file

@ -2,7 +2,7 @@
- `ResourceType()`
Validates if the input is a resource.
Validates whether the input is a [resource](http://php.net/types.resource).
```php
v::resourceType()->validate(fopen('/path/to/file.txt', 'w')); // true

View file

@ -14,12 +14,14 @@ declare(strict_types=1);
namespace Respect\Validation\Exceptions;
/**
* Exception class for ResourceType.
*
* @author Henrique Moody <henriquemoody@gmail.com>
*/
class ResourceTypeException extends ValidationException
final class ResourceTypeException extends ValidationException
{
/**
* @var array
* {@inheritdoc}
*/
public static $defaultTemplates = [
self::MODE_DEFAULT => [

View file

@ -13,10 +13,14 @@ declare(strict_types=1);
namespace Respect\Validation\Rules;
use function is_resource;
/**
* Validates whether the input is a resource.
*
* @author Henrique Moody <henriquemoody@gmail.com>
*/
class ResourceType extends AbstractRule
final class ResourceType extends AbstractRule
{
/**
* {@inheritdoc}

View file

@ -0,0 +1,37 @@
--FILE--
<?php
require 'vendor/autoload.php';
use Respect\Validation\Exceptions\NestedValidationException;
use Respect\Validation\Exceptions\ResourceTypeException;
use Respect\Validation\Validator as v;
try {
v::resourceType()->check('test');
} catch (ResourceTypeException $exception) {
echo $exception->getMainMessage().PHP_EOL;
}
try {
v::not(v::resourceType())->check(tmpfile());
} catch (ResourceTypeException $exception) {
echo $exception->getMainMessage().PHP_EOL;
}
try {
v::resourceType()->assert([]);
} catch (NestedValidationException $exception) {
echo $exception->getFullMessage().PHP_EOL;
}
try {
v::not(v::resourceType())->assert(xml_parser_create());
} catch (NestedValidationException $exception) {
echo $exception->getFullMessage().PHP_EOL;
}
?>
--EXPECTF--
"test" must be a resource
`[resource] (stream)` must not be a resource
- `{ }` must be a resource
- `[resource] (xml)` must not be a resource

View file

@ -13,66 +13,51 @@ declare(strict_types=1);
namespace Respect\Validation\Rules;
use PHPUnit\Framework\TestCase;
use Respect\Validation\Test\RuleTestCase;
use stdClass;
use function stream_context_create;
use function tmpfile;
use function xml_parser_create;
/**
* @group rule
* @group rule
*
* @covers \Respect\Validation\Rules\ResourceType
* @covers \Respect\Validation\Exceptions\ResourceTypeException
*
* @author Gabriel Caruso <carusogabriel34@gmail.com>
* @author Henrique Moody <henriquemoody@gmail.com>
*/
class ResourceTypeTest extends TestCase
final class ResourceTypeTest extends RuleTestCase
{
protected $rule;
protected function setUp(): void
{
$this->rule = new ResourceType();
}
/**
* @dataProvider providerForResource
* {@inheritdoc}
*/
public function testShouldValidateResourceNumbers($input): void
public function providerForValidInput(): array
{
self::assertTrue($this->rule->validate($input));
}
$rule = new ResourceType();
/**
* @dataProvider providerForNonResource
*/
public function testShouldNotValidateNonResourceNumbers($input): void
{
self::assertFalse($this->rule->validate($input));
}
/**
* @expectedException \Respect\Validation\Exceptions\ResourceTypeException
* @expectedExceptionMessage "Something" must be a resource
*/
public function testShouldThrowResourceExceptionWhenChecking(): void
{
$this->rule->check('Something');
}
public function providerForResource()
{
return [
[stream_context_create()],
[tmpfile()],
[xml_parser_create()],
[$rule, stream_context_create()],
[$rule, tmpfile()],
[$rule, xml_parser_create()],
];
}
public function providerForNonResource()
/**
* {@inheritdoc}
*/
public function providerForInvalidInput(): array
{
$rule = new ResourceType();
return [
['String'],
[123],
[[]],
[function (): void {
[$rule, 'String'],
[$rule, 123],
[$rule, []],
[$rule, function (): void {
}],
[new \stdClass()],
[null],
[$rule, new stdClass()],
[$rule, null],
];
}
}