|
2 | 2 |
|
3 | 3 | namespace Franzose\ClosureTable\Tests\Models\Entity;
|
4 | 4 |
|
| 5 | +use Franzose\ClosureTable\Extensions\Collection; |
5 | 6 | use Franzose\ClosureTable\Models\ClosureTable;
|
6 | 7 | use Franzose\ClosureTable\Models\Entity;
|
7 | 8 | use Franzose\ClosureTable\Tests\BaseTestCase;
|
@@ -162,4 +163,47 @@ public function testCreateFromArrayBug81()
|
162 | 163 | static::assertEquals(0, $child2->countChildren());
|
163 | 164 | static::assertEquals(19, $child2->getKey());
|
164 | 165 | }
|
| 166 | + |
| 167 | + /** |
| 168 | + * @link https://github.com/franzose/ClosureTable/issues/239 |
| 169 | + */ |
| 170 | + public function testCreateFromArrayIssue239() |
| 171 | + { |
| 172 | + Page::createFromArray([ |
| 173 | + [ |
| 174 | + 'id' => 100, |
| 175 | + 'children' => [ |
| 176 | + ['id' => 200], |
| 177 | + ['id' => 300], |
| 178 | + ['id' => 400], |
| 179 | + ['id' => 500], |
| 180 | + [ |
| 181 | + 'id' => 600, |
| 182 | + 'children' => [ |
| 183 | + ['id' => 700], |
| 184 | + ['id' => 800], |
| 185 | + ] |
| 186 | + ], |
| 187 | + ] |
| 188 | + ] |
| 189 | + ]); |
| 190 | + |
| 191 | + /** @var Page $page */ |
| 192 | + $page = Page::find(100); |
| 193 | + |
| 194 | + /** @var Collection|Page[] $children */ |
| 195 | + $children = $page->getChildren(); |
| 196 | + |
| 197 | + static::assertCount(5, $children); |
| 198 | + static::assertEquals(200, $children->get(0)->id); |
| 199 | + static::assertEquals(300, $children->get(1)->id); |
| 200 | + static::assertEquals(400, $children->get(2)->id); |
| 201 | + static::assertEquals(500, $children->get(3)->id); |
| 202 | + static::assertEquals(600, $children->get(4)->id); |
| 203 | + |
| 204 | + $childrenOf600 = $children->get(4)->getChildren(); |
| 205 | + static::assertCount(2, $childrenOf600); |
| 206 | + static::assertEquals(700, $childrenOf600->get(0)->id); |
| 207 | + static::assertEquals(800, $childrenOf600->get(1)->id); |
| 208 | + } |
165 | 209 | }
|
0 commit comments