Completed
Push — master ( c9036e...5033a3 )
by Bartko
05:59
created

AdapterWithScopeTestAbstract::testDeleteBranch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
c 0
b 0
f 0
rs 9.4285
cc 1
eloc 6
nc 1
nop 0
1
<?php
2
namespace StefanoTreeTest\Integration\Adapter;
3
4
use StefanoTree\NestedSet\Adapter\AdapterInterface as TreeAdapterInterface;
5
use StefanoTree\NestedSet\NodeInfo;
6
use StefanoTreeTest\IntegrationTestCase;
7
8
abstract class AdapterWithScopeTestAbstract
9
    extends IntegrationTestCase
0 ignored issues
show
Coding Style introduced by
The extends keyword must be on the same line as the class name
Loading history...
10
{
11
    /**
12
     * @var TreeAdapterInterface
13
     */
14
    protected $adapter;
15
16
    protected function setUp()
17
    {
18
        $this->adapter = $this->getAdapter();
19
20
        parent::setUp();
21
    }
22
23
    protected function tearDown()
24
    {
25
        $this->adapter = null;
26
        parent::tearDown();
27
    }
28
29
    /**
30
     * @return TreeAdapterInterface
31
     */
32
    abstract protected function getAdapter();
33
34
    protected function getDataSet()
35
    {
36
        return $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/initDataSet.xml');
37
    }
38
39
    public function testUpdateDataDoesNotChangeMetadata()
40
    {
41
        $data = array(
42
            'name' => 'changed',
43
            'lft' => 'a',
44
            'rgt' => 'b',
45
            'parent_id' => 'c',
46
            'level' => 'd',
47
            'scope' => 'e'
48
        );
49
50
        $this->adapter
51
            ->update(2, $data);
52
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
53
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testUpdateData.xml');
54
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
55
    }
56
57
    public function testInsertDataDoesNotChangeMetadata()
58
    {
59
        $nodeInfo = new NodeInfo(null, 6, 1001, 1002, 1003, 1004);
60
61
        $data = array(
62
            'name' => 'some-name',
63
            'lft' => 'a',
64
            'rgt' => 'b',
65
            'parent_id' => 'c',
66
            'level' => 'd',
67
            'scope' => 'e',
68
        );
69
70
        $this->adapter
71
            ->insert($nodeInfo, $data);
72
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
73
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testInsertData.xml');
74
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
75
    }
76
77
    public function testDeleteBranch()
78
    {
79
        $this->adapter
80
            ->delete(2);
81
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
82
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testDeleteBranch.xml');
83
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
84
    }
85
86
    public function testMoveLeftIndexes()
87
    {
88
        $this->adapter
89
            ->moveLeftIndexes(3, 500, 2);
90
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
91
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testMoveLeftIndexes.xml');
92
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
93
    }
94
95
    public function testMoveRightIndexes()
96
    {
97
        $this->adapter
98
            ->moveRightIndexes(4, 500, 2);
99
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
100
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testMoveRightIndexes.xml');
101
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
102
    }
103
104
    public function testUpdateLevels()
105
    {
106
        $this->adapter
107
            ->updateLevels(2, 9, 500, 2);
108
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
109
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testUpdateLevels.xml');
110
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
111
    }
112
113
    public function testMoveBranch()
114
    {
115
        $this->adapter
116
            ->moveBranch(2, 9, 500, 2);
117
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
118
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testMoveBranch.xml');
119
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
120
    }
121
122
    public function testGetRoots()
123
    {
124
        $roots = $this->adapter
125
            ->getRoots();
126
127
        $expected = include __DIR__ . '/_files/adapter/with_scope/testGetRoots.php';
128
        $this->assertEquals($expected, $roots);
129
    }
130
131
    public function testGetRoot()
132
    {
133
        $roots = $this->adapter
134
            ->getRoot(2);
135
136
        $expected = include __DIR__ . '/_files/adapter/with_scope/testGetRoot.php';
137
        $this->assertEquals($expected, $roots);
138
    }
139
140
    public function testGetNodeInfo()
141
    {
142
        $nodeInfo = $this->adapter
143
            ->getNodeInfo(8);
144
145
        $this->assertEquals($nodeInfo->getId(), 8);
146
        $this->assertEquals($nodeInfo->getParentId(), 7);
147
        $this->assertEquals($nodeInfo->getLeft(), 3);
148
        $this->assertEquals($nodeInfo->getRight(), 8);
149
        $this->assertEquals($nodeInfo->getLevel(), 2);
150
        $this->assertEquals($nodeInfo->getScope(), 1);
151
    }
152
153
    public function testGetChildrenNodeInfo()
154
    {
155
        $nodeInfo = $this->adapter
156
            ->getChildrenNodeInfo(2);
157
158
        $this->assertCount(3, $nodeInfo);
159
160
        // check first node info
161
        $this->assertEquals($nodeInfo[0]->getId(), 3);
162
        $this->assertEquals($nodeInfo[0]->getParentId(), 2);
163
        $this->assertEquals($nodeInfo[0]->getLeft(), 3);
164
        $this->assertEquals($nodeInfo[0]->getRight(), 4);
165
        $this->assertEquals($nodeInfo[0]->getLevel(), 2);
166
167
        // check last node info
168
        $this->assertEquals($nodeInfo[2]->getId(), 5);
169
        $this->assertEquals($nodeInfo[2]->getParentId(), 2);
170
        $this->assertEquals($nodeInfo[2]->getLeft(), 7);
171
        $this->assertEquals($nodeInfo[2]->getRight(), 8);
172
        $this->assertEquals($nodeInfo[2]->getLevel(), 2);
173
    }
174
175
    public function testUpdateNodeMetadata()
176
    {
177
        $nodeInfo = new NodeInfo(3, 1000, 1001, 1002, 1003, 2);
178
179
        $this->adapter
180
            ->updateNodeMetadata($nodeInfo);
181
182
        $dataSet = $this->getConnection()->createDataSet(array('tree_traversal_with_scope'));
183
        $expectedDataSet = $this->createMySQLXMLDataSet(__DIR__ . '/_files/adapter/with_scope/testUpdateNodeMetadata.xml');
184
        $this->assertDataSetsEqual($expectedDataSet, $dataSet);
185
    }
186
187
    public function testGetPath()
188
    {
189
        $path = $this->adapter
190
            ->getPath(5);
191
192
        $this->assertCount(3, $path);
193
194
        $expected = include __DIR__ . '/_files/adapter/with_scope/testGetPath.php';
195
        $this->assertEquals($expected, $path);
196
    }
197
198
    public function testGetDescendants()
199
    {
200
        $nodes = $this->adapter
201
            ->getDescendants();
202
203
        $this->assertCount(5, $nodes);
204
205
        $expected = include __DIR__ . '/_files/adapter/with_scope/testGetDescendants.php';
206
        $this->assertEquals($expected, $nodes);
207
    }
208
}
209