Passed
Push — master ( 3413dc...c0376c )
by Alex
38s queued 10s
created

IsNotEqualTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 56
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 7 1
A testFilterWillThrowInvalidArgumentExceptionIfTheRequiredFieldNameCriteriaIsMissing() 0 14 1
A testImplementsFilterInterface() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ArpTest\LaminasDoctrine\Query\Filter;
6
7
use Arp\LaminasDoctrine\Query\Exception\InvalidArgumentException;
8
use Arp\LaminasDoctrine\Query\Filter\FilterInterface;
9
use Arp\LaminasDoctrine\Query\Filter\IsNotEqual;
10
use Arp\LaminasDoctrine\Query\Metadata\MetadataInterface;
11
use Arp\LaminasDoctrine\Query\QueryBuilderInterface;
12
use Arp\LaminasDoctrine\Query\QueryFilterManager;
13
use PHPUnit\Framework\MockObject\MockObject;
14
use PHPUnit\Framework\TestCase;
15
16
/**
17
 * @author  Alex Patterson <[email protected]>
18
 * @package ArpTest\LaminasDoctrine\Query\Filter
19
 */
20
final class IsNotEqualTest extends TestCase
21
{
22
    /**
23
     * @var QueryFilterManager|MockObject
24
     */
25
    private $queryFilterManager;
26
27
    /**
28
     * @var MetadataInterface|MockObject
29
     */
30
    private $metadata;
31
32
    /**
33
     * @var QueryBuilderInterface|MockObject
34
     */
35
    private $queryBuilder;
36
37
    /**
38
     * Prepare the test case dependencies
39
     */
40
    public function setUp(): void
41
    {
42
        $this->queryFilterManager = $this->createMock(QueryFilterManager::class);
43
44
        $this->metadata = $this->createMock(MetadataInterface::class);
45
46
        $this->queryBuilder = $this->createMock(QueryBuilderInterface::class);
47
    }
48
49
    /**
50
     * Assert that IsEqual implement FilterInterface
51
     */
52
    public function testImplementsFilterInterface(): void
53
    {
54
        $filter = new IsNotEqual($this->queryFilterManager);
55
56
        $this->assertInstanceOf(FilterInterface::class, $filter);
57
    }
58
59
    /**
60
     * @throws InvalidArgumentException
61
     */
62
    public function testFilterWillThrowInvalidArgumentExceptionIfTheRequiredFieldNameCriteriaIsMissing(): void
63
    {
64
        $filter = new IsNotEqual($this->queryFilterManager);
65
66
        $criteria = [
67
            // No field 'name' will raise exception
68
        ];
69
70
        $this->expectException(InvalidArgumentException::class);
71
        $this->expectExceptionMessage(
72
            sprintf('The required \'field\' criteria value is missing for filter \'%s\'', IsNotEqual::class)
73
        );
74
75
        $filter->filter($this->queryBuilder, $this->metadata, $criteria);
76
    }
77
}
78