ErrorCollectionParser   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 11
c 1
b 0
f 0
dl 0
loc 25
ccs 12
cts 12
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A parse() 0 13 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Swis\JsonApi\Client\Parsers;
6
7
use Swis\JsonApi\Client\ErrorCollection;
8
use Swis\JsonApi\Client\Exceptions\ValidationException;
9
10
/**
11
 * @internal
12
 */
13
class ErrorCollectionParser
14
{
15
    private ErrorParser $errorParser;
16
17 184
    public function __construct(ErrorParser $errorParser)
18
    {
19 184
        $this->errorParser = $errorParser;
20 92
    }
21
22
    /**
23
     * @param  mixed  $data
24
     */
25 36
    public function parse($data): ErrorCollection
26
    {
27 36
        if (! is_array($data)) {
28 24
            throw new ValidationException(sprintf('ErrorCollection MUST be an array, "%s" given.', gettype($data)));
29
        }
30 12
        if (count($data) === 0) {
31 4
            throw new ValidationException('ErrorCollection cannot be empty and MUST have at least one Error object.');
32
        }
33
34 8
        return new ErrorCollection(
35 8
            array_map(
0 ignored issues
show
Bug introduced by
array_map(function(...) { /* ... */ }, $data) of type array is incompatible with the type Illuminate\Contracts\Support\Arrayable expected by parameter $items of Swis\JsonApi\Client\ErrorCollection::__construct(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

35
            /** @scrutinizer ignore-type */ array_map(
Loading history...
36 8
                fn ($error) => $this->errorParser->parse($error),
37 4
                $data
38 4
            )
39 4
        );
40
    }
41
}
42