Lines 100.00% 4 / 4
Functions and Methods 100.00% 4 / 4
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
MedalLevel 100.00% 4 / 4 100.00% 4 / 4 6 100.00% 1 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 badge 100.00% 1 / 1 100.00% 1 / 1 2
 levelName 100.00% 1 / 1 100.00% 1 / 1 2
 onyxCount 100.00% 1 / 1 100.00% 1 / 1 1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Medal;
6
7/**
8 * A medal with the agent's value and level (0: locked).
9 */
10final readonly class MedalLevel
11{
12    public function __construct(
13        public Medal $medal,
14        public ?int $value,
15        public int $level,
16    ) {
17    }
18
19    public function badge(): ?string
20    {
21        return $this->level > 0 ? $this->medal->badge($this->level) : null;
22    }
23
24    public function levelName(): string
25    {
26        return $this->level > 0 ? \array_values(Medal::TIERS)[$this->level - 1] : 'Locked';
27    }
28
29    public function onyxCount(): int
30    {
31        return $this->medal->onyxCount($this->value);
32    }
33}