Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
BalanceHistoryPointData
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 jsonSerialize
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Domain\Account\Data;
6
7use JsonSerializable;
8
9/**
10 * Represents a single balance history data point for charting.
11 */
12final class BalanceHistoryPointData implements JsonSerializable
13{
14    public readonly string $date;
15
16    public readonly float $value;
17
18    /**
19     * @param array{date: string, value: string|float} $data
20     */
21    public function __construct(array $data)
22    {
23        $this->date = $data['date'];
24        $this->value = (float)$data['value'];
25    }
26
27    /**
28     * @return array{date: string, value: float}
29     */
30    public function jsonSerialize(): array
31    {
32        return [
33            'date' => $this->date,
34            'value' => $this->value,
35        ];
36    }
37}