Passed
Pull Request — master (#124)
by Dave
02:13
created

SeverityReader::getMandatorySeverity()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 5
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 9
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Utils;
6
7
use DaveLiddament\StaticAnalysisResultsBaseliner\Domain\Common\Severity;
8
9
class SeverityReader
10
{
11
    /** @param array<mixed> $data */
12
    public static function getOptionalSeverity(array $data, string $key): Severity
13
    {
14
        $severityAsStringOrNull = ArrayUtils::getOptionalStringValue($data, $key);
15
        if (null === $severityAsStringOrNull) {
16
            return Severity::error();
17
        }
18
19
        return self::getMandatorySeverity($data, $key);
20
    }
21
22
    /** @param array<mixed> $data */
23
    public static function getMandatorySeverity(array $data, string $key): Severity
24
    {
25
        $severityAsString = ArrayUtils::getStringValue($data, $key);
26
        $lowerCaseSeverity = strtolower($severityAsString);
27
        if (!Severity::isValueValid($lowerCaseSeverity)) {
28
            throw ArrayParseException::invalidValue($key, $severityAsString);
29
        }
30
31
        return Severity::fromStringOrNull($lowerCaseSeverity);
32
    }
33
}
34