Completed
Push — master ( e7c5cf...05695e )
by Alejandro
17s
created

ShortUrlsFixture::load()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 14
nc 1
nop 1
dl 0
loc 21
rs 9.7998
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace ShlinkioApiTest\Shlink\Rest\Fixtures;
5
6
use Cake\Chronos\Chronos;
7
use Doctrine\Common\DataFixtures\AbstractFixture;
8
use Doctrine\Common\Persistence\ObjectManager;
9
use ReflectionObject;
10
use Shlinkio\Shlink\Core\Entity\ShortUrl;
11
use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
12
13
class ShortUrlsFixture extends AbstractFixture
14
{
15
    /**
16
     * Load data fixtures with the passed EntityManager
17
     *
18
     * @param ObjectManager $manager
19
     */
20
    public function load(ObjectManager $manager): void
21
    {
22
        $abcShortUrl = $this->setShortUrlDate(new ShortUrl('https://shlink.io'))->setShortCode('abc123');
23
        $manager->persist($abcShortUrl);
24
25
        $defShortUrl = $this->setShortUrlDate(new ShortUrl(
26
            'https://blog.alejandrocelaya.com/2017/12/09/acmailer-7-0-the-most-important-release-in-a-long-time/',
27
            ShortUrlMeta::createFromParams(Chronos::now()->addDays(3))
28
        ))->setShortCode('def456');
29
        $manager->persist($defShortUrl);
30
31
        $customShortUrl = $this->setShortUrlDate(new ShortUrl(
32
            'https://shlink.io',
33
            ShortUrlMeta::createFromParams(null, null, 'custom', 2)
34
        ));
35
        $manager->persist($customShortUrl);
36
37
        $manager->flush();
38
39
        $this->addReference('abc123_short_url', $abcShortUrl);
40
        $this->addReference('def456_short_url', $defShortUrl);
41
    }
42
43
    private function setShortUrlDate(ShortUrl $shortUrl): ShortUrl
44
    {
45
        $ref = new ReflectionObject($shortUrl);
46
        $dateProp = $ref->getProperty('dateCreated');
47
        $dateProp->setAccessible(true);
48
        $dateProp->setValue($shortUrl, Chronos::create(2019, 1, 1, 0, 0, 0));
49
50
        return $shortUrl;
51
    }
52
}
53