OperationsTraitTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 3
eloc 32
c 1
b 0
f 1
dl 0
loc 62
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testClear() 0 16 1
A testKeyByForArrayCollection() 0 14 1
A test_groupByForArrayCollection() 0 20 1
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