Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
RequirementCheckResult
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toArray
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5/** @license For full copyright and license information, please see the LICENSE.md file. */
6
7namespace App\Modules\About\Domain\Model;
8
9defined('AMMONLY_APP') || exit('Direct script access is forbidden.');
10
11/**
12 * Requirement Check Result DTO.
13 *
14 * Encapsulates the live runtime evaluation outcome for a SystemRequirement benchmark.
15 *
16 * @package App\Modules\About\Domain\Model
17 */
18final readonly class RequirementCheckResult
19{
20    /**
21     * RequirementCheckResult constructor.
22     *
23     * @param SystemRequirement $requirement   Associated benchmark requirement.
24     * @param string            $actualValue   Live evaluated runtime value.
25     * @param string            $status        Evaluation status: 'pass', 'warning', 'fail'.
26     * @param string            $statusMessage Status summary message.
27     */
28    public function __construct(
29        public SystemRequirement $requirement,
30        public string            $actualValue,
31        public string            $status,
32        public string            $statusMessage = ''
33    ) {
34    }
35
36    /**
37     * Serializes result to array for JSON responses.
38     *
39     * @return array<string, mixed> Serialized array.
40     */
41    public function toArray(): array
42    {
43        return [
44            'id'                => $this->requirement->id,
45            'category'          => $this->requirement->category,
46            'key'               => $this->requirement->requirementKey,
47            'label'             => $this->requirement->label,
48            'recommended_value' => $this->requirement->recommendedValue,
49            'minimum_value'     => $this->requirement->minimumValue,
50            'severity'          => $this->requirement->severity,
51            'description'       => $this->requirement->description,
52            'impact_on_failure' => $this->requirement->impactOnFailure,
53            'actual_value'      => $this->actualValue,
54            'status'            => $this->status,
55            'status_message'    => $this->statusMessage,
56            'is_passed'         => $this->status === 'pass',
57        ];
58    }
59}