85 lines
2.2 KiB
PHP
85 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Filter;
|
|
|
|
use ExampleDocumentAccess;
|
|
use PHPUnit\Framework\TestCase;
|
|
use TypeError;
|
|
|
|
/**
|
|
* @covers \Filter\GenericFilter
|
|
*/
|
|
class GenericFilterTest extends TestCase
|
|
{
|
|
use ExampleDocumentAccess;
|
|
|
|
public function testAllowsWhenMatchBasenameOfFile(): void
|
|
{
|
|
$filter = new GenericFilter('example');
|
|
$document = $this->exampleDocument();
|
|
|
|
self::assertTrue($filter->allows($document));
|
|
}
|
|
|
|
public function testAllowsWhenMatchesPathToFile(): void
|
|
{
|
|
$filter = new GenericFilter('resources');
|
|
$document = $this->exampleDocument();
|
|
|
|
self::assertTrue($filter->allows($document));
|
|
}
|
|
|
|
public function testAllowsWhenMatchesAnyMetadataField(): void
|
|
{
|
|
$filter = new GenericFilter('John Snow');
|
|
$document = $this->exampleDocumentWithMetadata([
|
|
'title' => 'some title',
|
|
'author' => 'John Snow',
|
|
]);
|
|
|
|
self::assertTrue($filter->allows($document));
|
|
}
|
|
|
|
public function testDisallowsWhenNotMatchingBasenameOfFile(): void
|
|
{
|
|
$filter = new GenericFilter('not-an-example');
|
|
$document = $this->exampleDocument();
|
|
|
|
self::assertFalse($filter->allows($document));
|
|
}
|
|
|
|
public function testDisallowsWhenNotMatchingPathToFile(): void
|
|
{
|
|
$filter = new GenericFilter('this-is-definitely-not-in-the-path' . md5(time()));
|
|
$document = $this->exampleDocument();
|
|
|
|
self::assertFalse($filter->allows($document));
|
|
}
|
|
|
|
public function testDisallowsWhenNotMatchingAnyMetadataField(): void
|
|
{
|
|
$filter = new GenericFilter('peepee');
|
|
$document = $this->exampleDocumentWithMetadata([
|
|
'title' => 'some title',
|
|
'author' => 'John Snow',
|
|
]);
|
|
|
|
self::assertFalse($filter->allows($document));
|
|
}
|
|
|
|
public function testStringRepresentation(): void
|
|
{
|
|
$filter = new GenericFilter('i-am-a-field');
|
|
self::assertEquals(
|
|
'[*] contains \'i-am-a-field\'',
|
|
(string)$filter
|
|
);
|
|
}
|
|
|
|
public function testDoesNotAcceptNull(): void
|
|
{
|
|
$this->expectException(TypeError::class);
|
|
new GenericFilter(null);
|
|
}
|
|
}
|