Completed
Push — issue/300 ( fd6ec3 )
by Alex
01:38
created

CheckPublicIds   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 23
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
7
use FeedIo\Feed;
8
use FeedIo\FeedIo;
9
10
/**
11
 * Class CheckPublicIds
12
 * @codeCoverageIgnore
13
 */
14
class CheckPublicIds implements CheckInterface
15
{
16
    public function perform(FeedIo $feedIo, Feed $feed, Result $result): bool
17
    {
18
        $publicIds = [];
19
        /** @var Feed\ItemInterface $item */
20
        foreach ($feed as $i => $item) {
21
            $publicIds[] = $item->getPublicId();
22
        }
23
24
        if (!$this->checkPublicIds($publicIds)) {
25
            $result->markAsFailed(Result::TEST_UNIQUE_IDS);
26
        }
27
        return true;
28
    }
29
30
    private function checkPublicIds(array $publicIds): bool
31
    {
32
        $deduplicated = array_unique($publicIds);
33
        return count($deduplicated) == count($publicIds);
34
    }
35
36
}