Passed
Pull Request — main (#8)
by Alex
03:11 queued 01:35
created

IdCollectionTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 33
c 2
b 0
f 0
dl 0
loc 62
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testGivenAValueByOffsetReturnsAValidValue() 0 11 1
A testGivenAnInvalidValueItThrowsAnException() 0 9 1
A testGivenValidIdsAValidIdCollectionIsReturned() 0 35 3
1
<?php
2
3
namespace StraTDeS\VO\Tests\Collection;
4
5
use InvalidArgumentException;
6
use PHPUnit\Framework\TestCase;
7
use stdClass;
8
use StraTDeS\VO\Collection\IdCollection;
9
use StraTDeS\VO\Single\Id;
10
use StraTDeS\VO\Single\UUIDV1;
11
12
class IdCollectionTest extends TestCase
13
{
14
    public function testGivenValidIdsAValidIdCollectionIsReturned(): void
15
    {
16
        // Arrange
17
        $id1 = UUIDV1::fromString('9b01b7c2-6f9b-11eb-9439-0242ac130002');
18
        $id2 = UUIDV1::fromString('a23ca5ba-6f9b-11eb-9439-0242ac130002');
19
        $id3 = UUIDV1::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 = UUIDV1::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