Test Failed
Push — master ( 475bfc...ca0e1d )
by Oss
05:46
created

ColumnFilterTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 140
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 4
dl 0
loc 140
rs 10
c 0
b 0
f 0

10 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A tearDown() 0 4 1
A testToArrayCompareFilter() 0 20 1
A testToArrayBetWeen() 0 24 1
A testValidate() 0 11 1
A testValidatExceptionComapreColumnFilter() 0 8 1
A testValidatExceptionBetweenColumnFilter() 0 8 1
A testValidatExceptionFilter() 0 8 1
A testValidatExceptionComparison() 0 8 1
A createColumnExpression() 0 16 1
1
<?php
2
3
namespace Test\Brownie\BpmOnline\DataService\Column;
4
5
use Brownie\BpmOnline\DataService\Column\ColumnExpression;
6
use Brownie\BpmOnline\DataService\Column\ColumnFilter;
7
use PHPUnit\Framework\TestCase;
8
use Prophecy\Prophecy\MethodProphecy;
9
10
class ColumnFilterTest extends TestCase
11
{
12
13
    /**
14
     * @var ColumnFilter
15
     */
16
    private $columnFilter;
17
18
    protected function setUp()
19
    {
20
    }
21
22
    protected function tearDown()
23
    {
24
        $this->columnFilter = null;
25
    }
26
27
    public function testToArrayCompareFilter()
28
    {
29
        $this->columnFilter = new ColumnFilter(
30
            ColumnFilter::FILTER_COMPARE_FILTER,
31
            ColumnFilter::COMPARISON_EQUAL,
32
            $this->createColumnExpression('key1', 'value1'),
33
            $this->createColumnExpression('key2', 'value2')
34
        );
35
36
        $this->assertEquals([
37
            'FilterType' => 1,
38
            'ComparisonType' => 0,
39
            'LeftExpression' => [
40
                'key1' => 'value1',
41
            ],
42
            'RightExpression' => [
43
                'key2' => 'value2',
44
            ],
45
        ], $this->columnFilter->toArray());
46
    }
47
48
    public function testToArrayBetWeen()
49
    {
50
        $this->columnFilter = new ColumnFilter(
51
            ColumnFilter::FILTER_BETWEEN,
52
            ColumnFilter::COMPARISON_BETWEEN,
53
            $this->createColumnExpression('key1', 'value1'),
54
            $this->createColumnExpression('key2', 'value2'),
55
            $this->createColumnExpression('key3', 'value3')
56
        );
57
58
        $this->assertEquals([
59
            'FilterType' => 3,
60
            'ComparisonType' => 0,
61
            'LeftExpression' => [
62
                'key1' => 'value1',
63
            ],
64
            'RightLessExpression' => [
65
                'key2' => 'value2',
66
            ],
67
            'RightGreaterExpression' => [
68
                'key3' => 'value3',
69
            ],
70
        ], $this->columnFilter->toArray());
71
    }
72
73
    public function testValidate()
74
    {
75
        $this->columnFilter = new ColumnFilter(
76
            ColumnFilter::FILTER_BETWEEN,
77
            ColumnFilter::COMPARISON_BETWEEN,
78
            $this->createColumnExpression('key1', 'value1'),
79
            $this->createColumnExpression('key2', 'value2'),
80
            $this->createColumnExpression('key3', 'value3')
81
        );
82
        $this->assertNull($this->columnFilter->validate());
83
    }
84
85
    /**
86
     * @expectedException \Brownie\BpmOnline\Exception\ValidateException
87
     */
88
    public function testValidatExceptionComapreColumnFilter()
89
    {
90
        $this->columnFilter = new ColumnFilter(
91
            ColumnFilter::FILTER_COMPARE_FILTER,
92
            ColumnFilter::COMPARISON_EQUAL
93
        );
94
        $this->columnFilter->validate();
95
    }
96
97
    /**
98
     * @expectedException \Brownie\BpmOnline\Exception\ValidateException
99
     */
100
    public function testValidatExceptionBetweenColumnFilter()
101
    {
102
        $this->columnFilter = new ColumnFilter(
103
            ColumnFilter::FILTER_BETWEEN,
104
            ColumnFilter::COMPARISON_BETWEEN
105
        );
106
        $this->columnFilter->validate();
107
    }
108
109
    /**
110
     * @expectedException \Brownie\BpmOnline\Exception\ValidateException
111
     */
112
    public function testValidatExceptionFilter()
113
    {
114
        $this->columnFilter = new ColumnFilter(
115
            9999,
116
            ColumnFilter::COMPARISON_BETWEEN
117
        );
118
        $this->columnFilter->validate();
119
    }
120
121
    /**
122
     * @expectedException \Brownie\BpmOnline\Exception\ValidateException
123
     */
124
    public function testValidatExceptionComparison()
125
    {
126
        $this->columnFilter = new ColumnFilter(
127
            ColumnFilter::FILTER_BETWEEN,
128
            9999
129
        );
130
        $this->columnFilter->validate();
131
    }
132
133
    private function createColumnExpression($key, $value)
134
    {
135
        $columnExpression = $this->prophesize(ColumnExpression::class);
136
        $columnExpressionMethodToArray = new MethodProphecy(
137
            $columnExpression,
138
            'toArray',
139
            []
140
        );
141
        $columnExpression
142
            ->addMethodProphecy(
143
                $columnExpressionMethodToArray->willReturn([
144
                    $key => $value
145
                ])
146
            );
147
        return $columnExpression->reveal();
148
    }
149
}
150