Completed
Push — 1.0.0 ( 404eee...ce26bf )
by Alex
17s queued 10s
created

testGivenAnInvalidValueItThrowsAnException()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 9
rs 10
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 testGivenAValueByOffsetReturnsAValidValue(): void
53
    {
54
        // Arrange
55
        $id1 = IdStub::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
56
57
        // Act
58
        $idCollection = IdCollection::create();
59
        $idCollection[0] = $id1;
60
61
        // Assert
62
        $this->assertEquals($id1, $idCollection[0]);
63
    }
64
65
    public function testGivenAnInvalidValueItThrowsAnException(): void
66
    {
67
        $this->expectException(InvalidArgumentException::class);
68
        $this->expectExceptionMessage("Provided value is not a valid " . Id::class);
69
70
        $id1 = new stdClass();
71
72
        $idCollection = IdCollection::create();
73
        $idCollection->add($id1);
74
    }
75
}
76