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

SelectContractTest::testSetGetContractType()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Test\Brownie\BpmOnline\DataService\Contract;
4
5
use Brownie\BpmOnline\DataService\Column\ColumnExpression;
6
use Brownie\BpmOnline\DataService\Column\ColumnFilter;
7
use PHPUnit\Framework\TestCase;
8
use Brownie\BpmOnline\DataService\Contract\SelectContract;
9
use Prophecy\Prophecy\MethodProphecy;
10
11
class SelectContractTest extends TestCase
12
{
13
14
    /**
15
     * @var SelectContract
16
     */
17
    private $selectContract;
18
19
    protected function setUp()
20
    {
21
        $this->selectContract = new SelectContract('rootSchemaName');
22
    }
23
24
    protected function tearDown()
25
    {
26
        $this->selectContract = null;
27
    }
28
29
    public function testSetGetRootSchemaName()
30
    {
31
        $this->assertEquals('rootSchemaName', $this->selectContract->getRootSchemaName());
32
        $this->selectContract->setRootSchemaName('TestRootSchemaName');
33
        $this->assertEquals('TestRootSchemaName', $this->selectContract->getRootSchemaName());
34
    }
35
36
    public function testSetGetOperationType()
37
    {
38
        $this->assertEquals(0, $this->selectContract->getOperationType());
39
        $this->selectContract->setOperationType(50);
40
        $this->assertEquals(50, $this->selectContract->getOperationType());
41
    }
42
43
    public function testSetGetContractType()
44
    {
45
        $this->assertEquals('SelectQuery', $this->selectContract->getContractType());
46
        $this->selectContract->setContractType('TestSelectQuery');
47
        $this->assertEquals('TestSelectQuery', $this->selectContract->getContractType());
48
    }
49
50
    /**
51
     * @expectedException \Brownie\BpmOnline\Exception\ValidateException
52
     */
53
    public function testValidateException()
54
    {
55
        $this->selectContract->setOperationType(1);
56
        $this->assertNull($this->selectContract->validate());
57
    }
58
59
    public function testValidate()
60
    {
61
        $this->assertNull($this->selectContract->validate());
62
    }
63
64
    public function testSetGetAllColumns()
65
    {
66
        $this->assertFalse($this->selectContract->toArray()['AllColumns']);
67
        $this->selectContract->setIsAllColumns(true);
68
        $this->assertTrue($this->selectContract->toArray()['AllColumns']);
69
    }
70
71
    public function testSetGetIsPageable()
72
    {
73
        $this->assertFalse($this->selectContract->toArray()['IsPageable']);
74
        $this->selectContract->setIsPageable(true);
75
        $this->assertTrue($this->selectContract->toArray()['IsPageable']);
76
    }
77
78
    public function testSetGetIsDistinct()
79
    {
80
        $this->assertFalse($this->selectContract->toArray()['IsDistinct']);
81
        $this->selectContract->setIsDistinct(true);
82
        $this->assertTrue($this->selectContract->toArray()['IsDistinct']);
83
    }
84
85
    public function testSetGetRowCount()
86
    {
87
        $this->assertEquals(-1, $this->selectContract->toArray()['RowCount']);
88
        $this->selectContract->setRowCount(100);
89
        $this->assertEquals(100, $this->selectContract->toArray()['RowCount']);
90
    }
91
92
    public function testAddColumn()
93
    {
94
        $columnExpression = $this->prophesize(ColumnExpression::class);
95
        $columnExpressionMethodToArray = new MethodProphecy(
96
            $columnExpression,
97
            'toArray',
98
            []
99
        );
100
        $columnExpression
101
            ->addMethodProphecy(
102
                $columnExpressionMethodToArray->willReturn(['test' => 'Ok'])
103
            );
104
105
        $selectContract = $this->selectContract->addColumn(
106
            'TestColumn',
107
            'asc', 0,
108
            'Test Name Column',
109
            $columnExpression->reveal()
110
        );
111
112
        $this->assertInstanceOf(SelectContract::class, $selectContract);
113
114
        $this->assertEquals([
115
            'OrderDirection' => 'asc',
116
            'OrderPosition' => 0,
117
            'Caption' => 'Test Name Column',
118
            'Expression' => ['test' => 'Ok'],
119
        ], $this->selectContract->toArray()['Columns']['Items']['TestColumn']);
120
    }
121
122
    public function testAddFilter()
123
    {
124
        $columnFilter = $this->prophesize(ColumnFilter::class);
125
        $columnFilterMethodToArray = new MethodProphecy(
126
            $columnFilter,
127
            'toArray',
128
            []
129
        );
130
        $columnFilter
131
            ->addMethodProphecy(
132
                $columnFilterMethodToArray->willReturn(['test' => 'Ok'])
133
            );
134
135
        $selectContract = $this->selectContract->addFilter($columnFilter->reveal());
136
137
        $this->assertInstanceOf(SelectContract::class, $selectContract);
138
139
        $this->assertEquals([
140
            'test' => 'Ok'
141
        ], $this->selectContract->toArray()['Filters']);
142
    }
143
144
    public function testToArray()
145
    {
146
        $this->assertEquals([
147
            'RootSchemaName' => 'rootSchemaName',
148
            'OperationType' => 0,
149
            'Columns' =>
150
                array (
151
                    'Items' =>
152
                        array (
153
                        ),
154
                ),
155
            'AllColumns' => false,
156
            'IsPageable' => false,
157
            'IsDistinct' => false,
158
            'RowCount' => -1,
159
        ], $this->selectContract->toArray());
160
    }
161
}
162