Completed
Push — master ( 631b00...2fe979 )
by Alex
01:43
created

CheckPublicIds   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 22
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A perform() 0 13 3
A checkPublicIds() 0 5 1
1
<?php declare(strict_types=1);
2
3
4
namespace FeedIo\Check;
5
6
use FeedIo\Feed;
7
use FeedIo\FeedIo;
8
9
/**
10
 * Class CheckPublicIds
11
 * @codeCoverageIgnore
12
 */
13
class CheckPublicIds implements CheckInterface
14
{
15
    public function perform(FeedIo $feedIo, Feed $feed, Result $result): bool
16
    {
17
        $publicIds = [];
18
        /** @var Feed\ItemInterface $item */
19
        foreach ($feed as $i => $item) {
20
            $publicIds[] = $item->getPublicId();
21
        }
22
23
        if (!$this->checkPublicIds($publicIds)) {
24
            $result->markAsFailed(Result::TEST_UNIQUE_IDS);
25
        }
26
        return true;
27
    }
28
29
    private function checkPublicIds(array $publicIds): bool
30
    {
31
        $deduplicated = array_unique($publicIds);
32
        return count($deduplicated) == count($publicIds);
33
    }
34
}
35