Passed
Push — main ( 9290e0...e48875 )
by Konstantin
02:13
created

AbstractBuilderTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 32
dl 0
loc 65
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
makeUrlBuilderStub() 0 3 ?
A hp$0 ➔ makeUrlBuilderStub() 0 3 1
A testSetParam() 0 14 1
A testBuild() 0 9 1
A testSetPath() 0 9 1
A testSetScheme() 0 9 1
A testSetHost() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Kosv\RandomUser\Tests\Url;
6
7
use Kosv\RandomUser\Url\AbstractBuilder;
8
use PHPUnit\Framework\TestCase;
9
10
final class AbstractBuilderTest extends TestCase
11
{
12
    public function testBuild(): void
13
    {
14
        $builder = $this->makeUrlBuilderStub()
15
            ->setScheme('https')
16
            ->setHost('randomuser.me')
17
            ->setPath('api/1.3')
18
            ->setParam('nat', ['us', 'dk']);
19
20
        $this->assertEquals('https://randomuser.me/api/1.3?nat=us,dk', $builder->build());
21
    }
22
23
    public function testSetHost(): void
24
    {
25
        $builder = $this->makeUrlBuilderStub();
26
27
        $builder->setHost('example.local');
28
        $this->assertEquals('example.local', $builder->build());
29
30
        $builder->setHost('');
31
        $this->assertEquals('', $builder->build());
32
    }
33
34
    public function testSetPath(): void
35
    {
36
        $builder = $this->makeUrlBuilderStub();
37
38
        $builder->setPath('api/1.3');
39
        $this->assertEquals('/api/1.3', $builder->build());
40
41
        $builder->setPath('');
42
        $this->assertEquals('', $builder->build());
43
    }
44
45
    public function testSetParam(): void
46
    {
47
        $builder = $this->makeUrlBuilderStub();
48
49
        $builder->setParam('foo', ['a']);
50
        $this->assertEquals('/?foo=a', $builder->build());
51
52
        $builder->setParam('foo', ['a']);
53
        $builder->setParam('bar', ['b']);
54
        $this->assertEquals('/?foo=a&bar=b', $builder->build());
55
56
        $builder->setParam('foo', ['a', 'b']);
57
        $builder->setParam('bar', ['c', 'd', 'e']);
58
        $this->assertEquals('/?foo=a,b&bar=c,d,e', $builder->build());
59
    }
60
61
    public function testSetScheme(): void
62
    {
63
        $builder = $this->makeUrlBuilderStub();
64
65
        $builder->setScheme('http');
66
        $this->assertEquals('http://', $builder->build());
67
68
        $builder->setScheme('');
69
        $this->assertEquals('', $builder->build());
70
    }
71
72
    private function makeUrlBuilderStub(): AbstractBuilder
73
    {
74
        return new class () extends AbstractBuilder {
75
        };
76
    }
77
}
78