Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
83.33% covered (warning)
83.33%
10 / 12
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
LimitHandler
83.33% covered (warning)
83.33%
10 / 12
0.00% covered (danger)
0.00%
0 / 2
4.07
0.00% covered (danger)
0.00%
0 / 1
 apply
75.00% covered (warning)
75.00%
3 / 4
0.00% covered (danger)
0.00%
0 / 1
2.06
 properties
87.50% covered (warning)
87.50%
7 / 8
0.00% covered (danger)
0.00%
0 / 1
2.01
1<?php
2
3declare(strict_types=1);
4
5namespace Cosray\Field\Schema;
6
7use Cosray\Exception\RuntimeException;
8use Cosray\Field\Capability\Limitable;
9use Cosray\Field\Field;
10use Cosray\Schema\Limit;
11use Override;
12
13class LimitHandler extends Handler
14{
15    #[Override]
16    public function apply(object $meta, Field $field): void
17    {
18        assert($meta instanceof Limit, 'The registry maps #[Limit] to this handler');
19
20        if ($field instanceof Limitable) {
21            $field->limit($meta->max, $meta->min);
22
23            return;
24        }
25
26        throw new RuntimeException($this->capabilityErrorMessage($field, Limitable::class));
27    }
28
29    #[Override]
30    public function properties(object $meta, Field $field): array
31    {
32        if ($field instanceof Limitable) {
33            return [
34                'limit' => [
35                    'min' => $field->getLimitMin(),
36                    'max' => $field->getLimitMax(),
37                ],
38            ];
39        }
40
41        return [];
42    }
43}