Passed
Pull Request — 1.0.0 (#7)
by
unknown
08:21
created

IdCollectionTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 108
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 57
dl 0
loc 108
rs 10
c 3
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testGivenValidIdsAValidIdCollectionIsReturned() 0 35 3
A testGivenValidIdsAValidIdCollectionRawIsReturned() 0 21 1
A testGivenAnArrayOfStringConstructAnIdCollection() 0 21 1
A testGivenAValueByOffsetReturnsAValidValue() 0 11 1
A testGivenAnInvalidValueItThrowsAnException() 0 9 1
1
<?php
2
3
namespace StraTDeS\VO\Tests\Collection;
4
5
use InvalidArgumentException;
6
use PHPUnit\Framework\TestCase;
7
use stdClass;
8
use StraTDeS\SharedKernel\Domain\Identity\Id;
9
use StraTDeS\SharedKernel\Tests\Unit\Domain\DomainEvent\IdStub;
10
use StraTDeS\VO\Collection\IdCollection;
11
12
class IdCollectionTest extends TestCase
13
{
14
    public function testGivenValidIdsAValidIdCollectionIsReturned(): void
15
    {
16
        // Arrange
17
        $id1 = IdStub::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
18
        $id2 = IdStub::fromString('a23ca5ba-6f9b-11eb-9439-0242ac130002');
19
        $id3 = IdStub::fromString('c449ed2a-6f9b-11eb-9439-0242ac130002');
20
        $idArray = [
21
            $id1,
22
            $id2,
23
            $id3
24
        ];
25
26
        // Act
27
        $idCollection = IdCollection::create();
28
        $idCollection->add($id1);
29
        $idCollection->add($id2);
30
        $idCollection->add($id3);
31
32
        // Assert
33
        $this->assertInstanceOf(IdCollection::class, $idCollection);
34
        $this->assertEquals($id1, $idCollection[0]);
35
        $this->assertEquals($id2, $idCollection[1]);
36
        $this->assertEquals($id3, $idCollection[2]);
37
        $this->assertEquals(
38
            $idArray,
39
            $idCollection->items()
40
        );
41
        $this->assertCount(3, $idCollection);
42
43
        for ($i = 0; $i < 3; $i++) {
44
            $this->assertEquals($idArray[$i], $idCollection[$i]);
45
        }
46
47
        foreach ($idCollection as $key => $id) {
48
            $this->assertInstanceOf(Id::class, $id);
49
        }
50
    }
51
52
    public function testGivenValidIdsAValidIdCollectionRawIsReturned(): void
53
    {
54
        // Arrange
55
        $id1 = IdStub::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
56
        $id2 = IdStub::fromString('a23ca5ba-6f9b-11eb-9439-0242ac130002');
57
        $id3 = IdStub::fromString('c449ed2a-6f9b-11eb-9439-0242ac130002');
58
        $idStringArray = [
59
            $id1->getHumanReadableId(),
60
            $id2->getHumanReadableId(),
61
            $id3->getHumanReadableId()
62
        ];
63
64
        // Act
65
        /** @var IdCollection $idCollection */
66
        $idCollection = IdCollection::create();
67
        $idCollection->add($id1);
68
        $idCollection->add($id2);
69
        $idCollection->add($id3);
70
71
       // Assert
72
        $this->assertEquals($idStringArray, $idCollection->toStringArray());
73
    }
74
75
    public function testGivenAnArrayOfStringConstructAnIdCollection(): void
76
    {
77
        // Arrange
78
        $id1 = IdStub::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
79
        $id2 = IdStub::fromString('a23ca5ba-6f9b-11eb-9439-0242ac130002');
80
        $id3 = IdStub::fromString('c449ed2a-6f9b-11eb-9439-0242ac130002');
81
        $idStringArray = [
82
            $id1->getHumanReadableId(),
83
            $id2->getHumanReadableId(),
84
            $id3->getHumanReadableId()
85
        ];
86
87
        // Act
88
        /** @var IdCollection $idCollection */
89
        $idCollection = IdCollection::create();
90
        $idCollection->add($id1);
91
        $idCollection->add($id2);
92
        $idCollection->add($id3);
93
94
        // Assert
95
        $this->assertEquals(IdCollection::fromStringArray($idStringArray), $idCollection);
96
    }
97
98
    public function testGivenAValueByOffsetReturnsAValidValue(): void
99
    {
100
        // Arrange
101
        $id1 = IdStub::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
102
103
        // Act
104
        $idCollection = IdCollection::create();
105
        $idCollection[0] = $id1;
106
107
        // Assert
108
        $this->assertEquals($id1, $idCollection[0]);
109
    }
110
111
    public function testGivenAnInvalidValueItThrowsAnException(): void
112
    {
113
        $this->expectException(InvalidArgumentException::class);
114
        $this->expectExceptionMessage("Provided value is not a valid " . Id::class);
115
116
        $id1 = new stdClass();
117
118
        $idCollection = IdCollection::create();
119
        $idCollection->add($id1);
120
    }
121
}
122