[wip] add tests
This commit is contained in:
47
tests/Filter/FilterParserTest.php
Normal file
47
tests/Filter/FilterParserTest.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Filter;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use TypeError;
|
||||
|
||||
/**
|
||||
* @covers \Filter\FilterParser
|
||||
*/
|
||||
class FilterParserTest extends TestCase
|
||||
{
|
||||
private FilterParser $parser;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->parser = new FilterParser();
|
||||
}
|
||||
|
||||
public function testCreatesSpecificFilters(): void
|
||||
{
|
||||
self::assertContainsOnlyInstancesOf(SpecificFilter::class, [
|
||||
$this->parser->parse('title=poo'),
|
||||
$this->parser->parse('1='),
|
||||
$this->parser->parse('filepath=some_thing_else'),
|
||||
]);
|
||||
|
||||
self::assertNotInstanceOf(SpecificFilter::class, $this->parser->parse('='));
|
||||
}
|
||||
|
||||
public function testCreatesGenericFilters(): void
|
||||
{
|
||||
// Basically, anything that does not match the pattern .+=.*
|
||||
self::assertContainsOnlyInstancesOf(GenericFilter::class, [
|
||||
$this->parser->parse('scoobypoo'),
|
||||
$this->parser->parse('324234'),
|
||||
$this->parser->parse(324234),
|
||||
$this->parser->parse('baz'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function testDoesNotTakeNull(): void
|
||||
{
|
||||
$this->expectException(TypeError::class);
|
||||
$this->parser->parse(null);
|
||||
}
|
||||
}
|
||||
84
tests/Filter/GenericFilterTest.php
Normal file
84
tests/Filter/GenericFilterTest.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
16
tests/Filter/SpecificFilterTest.php
Normal file
16
tests/Filter/SpecificFilterTest.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Filter;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* @covers \Filter\GenericFilter
|
||||
*/
|
||||
class SpecificFilterTest extends TestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
self::markTestIncomplete('Not implemented');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user