Completed
Push — master ( bc5900...c1e82f )
by Vincent
03:26 queued 10s
created

CheckMethods::checkAddSingle()   A

Complexity

Conditions 5
Paths 7

Size

Total Lines 28
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 5.0488

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 28
ccs 14
cts 16
cp 0.875
rs 9.4555
c 0
b 0
f 0
cc 5
nc 7
nop 5
crap 5.0488
1
<?php
2
3
namespace VGirol\JsonApiFaker\Testing;
4
5
use PHPUnit\Framework\Assert as PHPUnit;
6
7
trait CheckMethods
8
{
9 4
    protected function checkAddSingle($factory, string $fnName, string $attrName, array $data1, array $data2)
10
    {
11 4
        PHPUnit::assertEmpty($factory->{$attrName});
12
13 4
        if (empty($data1)) {
14
            throw new \Exception('You must provide data for first run.');
15
        }
16
17 4
        foreach ($data1 as $key => $value) {
18 4
            $obj = $factory->{$fnName}($key, $value);
19
20 4
            PHPUnit::assertSame($obj, $factory);
21
        }
22
23 4
        PHPUnit::assertObjectHasAttribute($attrName, $factory);
24 4
        PHPUnit::assertEquals($data1, $factory->{$attrName});
25
26 4
        if (empty($data2)) {
27
            throw new \Exception('You must provide data for second run.');
28
        }
29
30 4
        foreach ($data2 as $key => $value) {
31 4
            $factory->{$fnName}($key, $value);
32
        }
33
34 4
        PHPUnit::assertEquals(
35 4
            array_merge($data1, $data2),
36 4
            $factory->{$attrName}
37
        );
38 4
    }
39
40 2
    protected function checkAddMulti($factory, string $fnName, string $attrName, array $data1, array $data2)
41
    {
42 2
        PHPUnit::assertEmpty($factory->{$attrName});
43
44 2
        $obj = $factory->{$fnName}($data1);
45
46 2
        PHPUnit::assertObjectHasAttribute($attrName, $factory);
47 2
        PHPUnit::assertEquals($data1, $factory->{$attrName});
48 2
        PHPUnit::assertSame($obj, $factory);
49
50 2
        $factory->{$fnName}($data2);
51
52 2
        PHPUnit::assertEquals(
53 2
            array_merge($data1, $data2),
54 2
            $factory->{$attrName}
55
        );
56 2
    }
57
58 10
    protected function checkSetMethod($factory, string $fnName, string $attrName, $data1, $data2)
59
    {
60 10
        PHPUnit::assertEmpty($factory->{$attrName});
61
62 10
        $obj = $factory->{$fnName}($data1);
63
64 10
        PHPUnit::assertObjectHasAttribute($attrName, $factory);
65 10
        PHPUnit::assertEquals($data1, $factory->{$attrName});
66 10
        PHPUnit::assertSame($obj, $factory);
67
68 10
        $factory->{$fnName}($data2);
69
70 10
        PHPUnit::assertEquals($data2, $factory->{$attrName});
71 10
    }
72
}
73