[wip] add tests

This commit is contained in:
2021-04-08 15:37:18 +02:00
parent afff03166e
commit 78b596a342
9 changed files with 2255 additions and 22 deletions

View 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);
}
}

View 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);
}
}

View 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');
}
}