testDefaultReplacesMissing()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 33
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 22
nc 1
nop 0
1
<?php
2
3
namespace ScayTrase\Api\Cruds\Tests\Unit;
4
5
use Doctrine\Common\Collections\Criteria;
6
use PHPUnit\Framework\TestCase;
7
use Prophecy\Argument;
8
use ScayTrase\Api\Cruds\Criteria\DefaultCriteriaConfigurator;
9
use ScayTrase\Api\Cruds\CriteriaConfiguratorInterface;
10
11
final class DefaultCriteriaConfiguratorTest extends TestCase
12
{
13
    public function testDefaultReplacesMissing()
14
    {
15
        $defaults = [
16
            'a' => 0,
17
            'b' => null,
18
            'c' => 'data',
19
            'e' => 'extra defaults',
20
        ];
21
22
        $provided = [
23
            'a' => 5,
24
            'c' => 'new data',
25
            'd' => 'extra data',
26
        ];
27
28
        $criteria = Criteria::create();
29
        $fqcn     = \stdClass::class;
30
31
        $decorated = $this->createConfigurator(
32
            $fqcn,
33
            $criteria,
34
            [
35
                'a' => 5,
36
                'b' => null,
37
                'c' => 'new data',
38
                'd' => 'extra data',
39
                'e' => 'extra defaults',
40
            ]
41
        );
42
43
        $default = new DefaultCriteriaConfigurator($decorated, $defaults);
44
        $default->configure($fqcn, $criteria, $provided);
45
    }
46
47
    private function createConfigurator($fqcn, Criteria $criteria, $data)
48
    {
49
        $mock = self::prophesize(CriteriaConfiguratorInterface::class);
50
        $mock->configure(Argument::exact($fqcn), Argument::exact($criteria), Argument::exact($data))
51
             ->shouldBeCalled();
52
53
        return $mock->reveal();
54
    }
55
}
56