OperationsTraitTest::testClear()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
c 0
b 0
f 0
dl 0
loc 16
rs 9.9666
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Nip\Collections\Tests\Traits;
4
5
use Nip\Collections\Collection;
6
use Nip\Collections\Tests\AbstractTest;
7
use stdClass;
8
9
/**
10
 * Class OperationsTraitTest
11
 * @package Nip\Collections\Tests\Traits
12
 */
13
class OperationsTraitTest extends AbstractTest
14
{
15
    /**
16
     * @var Collection
17
     */
18
    protected $collection;
19
20
    public function testClear()
21
    {
22
        $this->collection = new Collection();
23
24
        static::assertEquals(0, $this->collection->count());
25
26
        $this->collection['first'] = new stdClass();
27
        static::assertEquals(1, $this->collection->count());
28
29
        $this->collection['luke'] = 'Luke Skywalker';
30
        static::assertEquals('Luke Skywalker', $this->collection['luke']);
31
32
        static::assertEquals(2, $this->collection->count());
33
34
        $this->collection->clear();
35
        static::assertEquals(0, $this->collection->count());
36
    }
37
38
    public function testKeyByForArrayCollection()
39
    {
40
        $collection = new Collection();
41
42
        $collection['first'] = ['name' => 'John'];
43
        $collection['second'] = ['name' => 'Mike'];
44
45
        static::assertEquals(2, $collection->count());
46
        static::assertEquals(['first', 'second'], $collection->keys());
47
48
        $newCollection = $collection->keyBy('name');
49
50
        static::assertEquals(['first', 'second'], $collection->keys());
51
        static::assertEquals(['John', 'Mike'], $newCollection->keys());
52
    }
53
54
55
    public function test_groupByForArrayCollection()
56
    {
57
        $collection = new Collection();
58
        $collection[1] = ['name' => 'John', 'type' => 'user'];
59
        $collection[2] = ['name' => 'Mike', 'type' => 'user'];
60
        $collection[3] = ['name' => 'Mike', 'type' => 'admin'];
61
62
        $newCollection = $collection->groupBy('type');
63
64
        static::assertEquals(['user', 'admin'], $newCollection->keys());
65
        static::assertEquals(
66
            [
67
                ['name' => 'John', 'type' => 'user'],
68
                ['name' => 'Mike', 'type' => 'user']
69
            ],
70
            $newCollection->get('user')->toArray()
71
        );
72
        static::assertEquals(
73
            [['name' => 'Mike', 'type' => 'admin']],
74
            $newCollection->get('admin')->toArray()
75
        );
76
    }
77
}
78