testGivenAnInvalidSlugAnExceptionIsThrown()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace StraTDeS\VO\Tests\Single;
4
5
use PHPUnit\Framework\TestCase;
6
use StraTDeS\VO\Single\Slug;
7
8
class SlugTest extends TestCase
9
{
10
    public function testGivenAValidSlugAValidVOIsReturned(): void
11
    {
12
        // Arrange
13
        $slug = "this-is-a-valid-slug";
14
15
        // Act
16
        $slugVO = Slug::fromValue($slug);
17
18
        // Assert
19
        $this->assertInstanceOf(Slug::class, $slugVO);
20
        $this->assertEquals($slug, $slugVO->value());
21
    }
22
23
    public function badSlugDataProvider(): array
24
    {
25
        return [
26
            ['THIS-IS-NOT-AN-SLUG'],
27
            ['$-IS-NOT-AN-SLUG'],
28
            ['THIS IS NOT AN SLUG'],
29
            ['this is not an slug'],
30
            ['THIS-IS-NOT-AN-SLUG'],
31
        ];
32
    }
33
34
    /**
35
     * @dataProvider badSlugDataProvider
36
     * @param string $slug
37
     */
38
    public function testGivenAnInvalidSlugAnExceptionIsThrown(string $slug): void
39
    {
40
        $this->expectException(\InvalidArgumentException::class);
41
        $this->expectExceptionMessage("$slug is not a valid slug. Only lowercase, letters, numbers and dashes are allowed.");
42
43
        Slug::fromValue($slug);
44
    }
45
46
    public function testGivenTwoEqualSlugsEqualReturnsTrue(): void
47
    {
48
        // Arrange
49
        $slug1 = Slug::fromValue("this-is-a-valid-slug");
50
        $slug2 = Slug::fromValue("this-is-a-valid-slug");
51
52
        // Act
53
        $equal = $slug1->equal($slug2);
54
55
        // Assert
56
        $this->assertTrue($equal);
57
    }
58
59
    public function testGivenTwoNotEqualSlugsEqualReturnsFalse(): void
60
    {
61
        // Arrange
62
        $slug1 = Slug::fromValue("this-is-a-valid-slug");
63
        $slug2 = Slug::fromValue("this-is-a-different-slug");
64
65
        // Act
66
        $equal = $slug1->equal($slug2);
67
68
        // Assert
69
        $this->assertFalse($equal);
70
    }
71
}
72