Completed
Push — master ( 35950a...014eb2 )
by Alejandro
25s queued 11s
created

ShortUrlDataTransformerTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
4
namespace ShlinkioTest\Shlink\Core\Transformer;
5
6
use Cake\Chronos\Chronos;
7
use PHPUnit\Framework\TestCase;
8
use Shlinkio\Shlink\Core\Entity\ShortUrl;
9
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
10
use Shlinkio\Shlink\Core\Transformer\ShortUrlDataTransformer;
11
12
use function random_int;
13
14
class ShortUrlDataTransformerTest extends TestCase
15
{
16
    /** @var ShortUrlDataTransformer */
17
    private $transformer;
18
19
    public function setUp(): void
20
    {
21
        $this->transformer = new ShortUrlDataTransformer([]);
22
    }
23
24
    /**
25
     * @test
26
     * @dataProvider provideShortUrls
27
     */
28
    public function properMetadataIsReturned(ShortUrl $shortUrl, array $expectedMeta): void
29
    {
30
        ['meta' => $meta] = $this->transformer->transform($shortUrl);
31
32
        $this->assertEquals($expectedMeta, $meta);
33
    }
34
35
    public function provideShortUrls(): iterable
36
    {
37
        $maxVisits = random_int(1, 1000);
38
        $now = Chronos::now();
39
40
        yield 'no metadata' => [new ShortUrl('', ShortUrlMeta::createEmpty()), [
41
            'validSince' => null,
42
            'validUntil' => null,
43
            'maxVisits' => null,
44
        ]];
45
        yield 'max visits only' => [new ShortUrl('', ShortUrlMeta::createFromParams(null, null, null, $maxVisits)), [
46
            'validSince' => null,
47
            'validUntil' => null,
48
            'maxVisits' => $maxVisits,
49
        ]];
50
        yield 'max visits and valid since' => [
51
            new ShortUrl('', ShortUrlMeta::createFromParams($now, null, null, $maxVisits)),
52
            [
53
                'validSince' => $now->toAtomString(),
54
                'validUntil' => null,
55
                'maxVisits' => $maxVisits,
56
            ],
57
        ];
58
        yield 'both dates' => [
59
            new ShortUrl('', ShortUrlMeta::createFromParams($now, $now->subDays(10))),
60
            [
61
                'validSince' => $now->toAtomString(),
62
                'validUntil' => $now->subDays(10)->toAtomString(),
63
                'maxVisits' => null,
64
            ],
65
        ];
66
        yield 'everything' => [
67
            new ShortUrl('', ShortUrlMeta::createFromParams($now, $now->subDays(5), null, $maxVisits)),
68
            [
69
                'validSince' => $now->toAtomString(),
70
                'validUntil' => $now->subDays(5)->toAtomString(),
71
                'maxVisits' => $maxVisits,
72
            ],
73
        ];
74
    }
75
}
76