GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 383cc1...1b2caf )
by Christian
01:34
created

AbstractSitemapServiceTestCase::process()   B

Complexity

Conditions 6
Paths 7

Size

Total Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 30
rs 8.8177
c 0
b 0
f 0
cc 6
nc 7
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * (c) Christian Gripp <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Core23\SitemapBundle\Test;
13
14
use Core23\SitemapBundle\Definition\SitemapDefinitionInterface;
15
use Core23\SitemapBundle\Model\UrlInterface;
16
use Core23\SitemapBundle\Sitemap\SitemapServiceInterface;
17
use DateTime;
18
use PHPUnit\Framework\AssertionFailedError;
19
use PHPUnit\Framework\TestCase;
20
use Symfony\Component\Routing\RouterInterface;
21
22
abstract class AbstractSitemapServiceTestCase extends TestCase
23
{
24
    protected $router;
25
26
    /**
27
     * @var SitemapServiceInterface
28
     */
29
    protected $service;
30
31
    /**
32
     * @var array[]
33
     */
34
    private $urls = [];
35
36
    /**
37
     * {@inheritdoc}
38
     */
39
    protected function setUp(): void
40
    {
41
        $this->router = $this->createMock(RouterInterface::class);
42
43
        $this->service = $this->createService();
44
    }
45
46
    /**
47
     * @return SitemapServiceInterface
48
     */
49
    abstract protected function createService(): SitemapServiceInterface;
50
51
    /**
52
     * @param SitemapDefinitionInterface $sitemap
53
     */
54
    final protected function process(SitemapDefinitionInterface $sitemap): void
55
    {
56
        /** @var UrlInterface[] $urls */
57
        $result = $this->service->execute($sitemap);
58
59
        $count = \count($this->urls);
60
        $this->assertCount($count, $result);
61
62
        if ($count > 0) {
63
            /** @var UrlInterface $url */
64
            foreach ($result as $url) {
65
                if ($data = &$this->containsUrl($url)) {
66
                    $this->assertPriority($url, $data);
67
                    $this->assertChangeFreq($url, $data);
68
                    $this->assertLastmod($data, $url);
69
                    ++$data['count'];
70
71
                    continue;
72
                }
73
74
                throw new AssertionFailedError(sprintf("The url '%s' was not expected to be called.", $url->getLoc()));
75
            }
76
        }
77
78
        foreach ($this->urls as $data) {
79
            if (0 === $data['count']) {
80
                throw new AssertionFailedError(sprintf("The url '%s' was expected to be called actually was not called", $data['location']));
81
            }
82
        }
83
    }
84
85
    /**
86
     * @param string        $location
87
     * @param int           $priority
88
     * @param string        $changeFreq
89
     * @param DateTime|null $lastMod
90
     */
91
    final protected function assertSitemap(string $location, int $priority, string $changeFreq, DateTime $lastMod = null): void
92
    {
93
        $this->urls[] = ['location' => $location, 'priority' => $priority, 'changefreq' => $changeFreq, 'lastmod' => $lastMod, 'count' => 0];
94
    }
95
96
    /**
97
     * @param UrlInterface $url
98
     *
99
     * @return array|null
100
     */
101
    private function &containsUrl(UrlInterface $url): ?array
102
    {
103
        foreach ($this->urls as &$data) {
104
            if ($url->getLoc() === $data['location']) {
105
                return $data;
106
            }
107
        }
108
109
        return null;
110
    }
111
112
    /**
113
     * @param array|null   $data
114
     * @param UrlInterface $url
115
     */
116
    private function assertLastmod(?array $data, UrlInterface $url): void
117
    {
118
        if (null === $data['lastmod'] && null === $url->getLastMod()) {
119
            return;
120
        }
121
122
        if (!$data['lastmod'] instanceof DateTime) {
123
            throw new AssertionFailedError('The lastmod is not a valid \DateTime object.');
124
        }
125
126
        if ($url->getLastMod() <=> $data['lastmod']) {
127
            throw new AssertionFailedError(
128
                sprintf("The url '%s' was expected with a different lastmod.", $url->getLoc())
129
            );
130
        }
131
    }
132
133
    /**
134
     * @param UrlInterface $url
135
     * @param array|null   $data
136
     */
137
    private function assertPriority(UrlInterface $url, ?array $data): void
138
    {
139
        if ($url->getPriority() !== $data['priority']) {
140
            throw new AssertionFailedError(
141
                sprintf(
142
                    "The url '%s' was expected with %s priority. %s given.",
143
                    $url->getLoc(),
144
                    $data['priority'],
145
                    $url->getPriority()
146
                )
147
            );
148
        }
149
    }
150
151
    /**
152
     * @param UrlInterface $url
153
     * @param array|null   $data
154
     */
155
    private function assertChangeFreq(UrlInterface $url, ?array $data): void
156
    {
157
        if ($url->getChangeFreq() !== $data['changefreq']) {
158
            throw new AssertionFailedError(
159
                sprintf(
160
                    "The url '%s' was expected with %s changefreq. %s given.",
161
                    $url->getLoc(),
162
                    $data['changefreq'],
163
                    $url->getChangeFreq()
164
                )
165
            );
166
        }
167
    }
168
}
169