Passed
Push — master ( ead0df...3bca6b )
by Stephen
01:00 queued 11s
created

assertModelAttributesSame()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 12
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 5
nc 4
nop 3
dl 0
loc 12
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Sfneal\Testing\Utils\Traits;
4
5
use Illuminate\Database\Eloquent\Model;
6
7
trait ModelAttributeAssertions
8
{
9
    /**
10
     * Assert model attributes are same.
11
     *
12
     * @param array $data
13
     * @param Model $model
14
     * @param array|null $ignoredAttributes
15
     * @return void
16
     */
17
    public static function assertModelAttributesSame(array $data, Model $model, array $ignoredAttributes = null): void
18
    {
19
        // Remove ignore attributes
20
        if (isset($ignoredAttributes)) {
21
            foreach ($ignoredAttributes as $attribute) {
22
                unset($data[$attribute]);
23
            }
24
        }
25
26
        // Execute assertions on each attribute
27
        foreach ($data as $attribute => $value) {
28
            self::assertSame($value, $model->{$attribute});
29
        }
30
    }
31
32
    /**
33
     * Assert model attributes are equal.
34
     *
35
     * @param array $data
36
     * @param Model $model
37
     * @param array|null $ignoredAttributes
38
     * @return void
39
     */
40
    public static function assertModelAttributesEqual(array $data, Model $model, array $ignoredAttributes = null): void
41
    {
42
        // Remove ignore attributes
43
        if (isset($ignoredAttributes)) {
44
            foreach ($ignoredAttributes as $attribute) {
45
                unset($data[$attribute]);
46
            }
47
        }
48
49
        // Execute assertions on each attribute
50
        foreach ($data as $attribute => $value) {
51
            self::assertEquals($value, $model->{$attribute});
52
        }
53
    }
54
}
55