Passed
Push — master ( fae453...efb6a4 )
by Vincent
02:44
created

ResourceCollectionTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 96
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 42
c 0
b 0
f 0
dl 0
loc 96
rs 10
1
<?php
2
namespace VGirol\JsonApiAssert\Laravel\Tests\Asserts\Structure;
3
4
use Illuminate\Support\Collection;
5
use VGirol\JsonApiAssert\Laravel\Assert;
6
use VGirol\JsonApiAssert\Laravel\Tests\TestCase;
7
use VGirol\JsonApiAssert\Laravel\Tests\Tools\Models\ModelForTest;
8
use VGirol\JsonApiAssert\Messages;
9
use VGirol\JsonApiAssert\Laravel\Tests\Tools\Models\DummyModel;
10
11
class ResourceCollectionTest extends TestCase
12
{
13
    /**
14
     * @test
15
     */
16
    public function assertResourceCollectionEqualsCollection()
17
    {
18
        $count = 5;
19
        $collection = $this->createCollection($count);
20
        $json = $this->createResourceCollection($collection, false);
21
        // for ($i = 1; $i < 5; $i++) {
22
        //     $attributes = [
23
        //         'TST_ID' => 10 + $i,
24
        //         'TST_NAME' => 'test' . $i,
25
        //         'TST_NUMBER' => 1000 * $i + 123,
26
        //         'TST_CREATION_DATE' => null
27
        //     ];
28
29
        //     $model = new DummyModel();
30
        //     $model->setRawAttributes($attributes);
31
        //     $expected->push($model);
32
33
        //     $resource = [
34
        //         'type' => $model->getResourceType(),
35
        //         'id' => strval($model->getKey()),
36
        //         'attributes' => $attributes
37
        //     ];
38
        //     array_push($collection, $resource);
39
        // }
40
41
        Assert::assertResourceCollectionEqualsCollection($collection, $this->resourceType, $json);
42
    }
43
44
    /**
45
     * @test
46
     * @dataProvider assertResourceCollectionEqualsCollectionFailedProvider
47
     */
48
    public function assertResourceCollectionEqualsCollectionFailed($expected, $resourceType, $collection, $failureMsg)
49
    {
50
        $this->setFailureException($failureMsg);
51
52
        Assert::assertResourceCollectionEqualsCollection($expected, $resourceType, $collection);
53
    }
54
55
    public function assertResourceCollectionEqualsCollectionFailedProvider()
56
    {
57
        $expected = new Collection();
58
        $collection = [];
59
        for ($i = 1; $i < 3; $i++) {
60
            $attributes = [
61
                'TST_ID' => 10 + $i,
62
                'TST_NAME' => 'test' . $i,
63
                'TST_NUMBER' => 1000 * $i + 123,
64
                'TST_CREATION_DATE' => null
65
            ];
66
67
            $model = new ModelForTest();
68
            $model->setRawAttributes($attributes);
69
            $expected->push($model);
70
71
            $resource = [
72
                'type' => $model->getResourceType(),
73
                'id' => $model->getKey(),
74
                'attributes' => $attributes
75
            ];
76
77
            if ($i == 2) {
78
                $resource['attributes']['TST_NAME'] = 'wrong';
79
            }
80
            array_push($collection, $resource);
81
        }
82
83
        $resourceType = $model->getResourceType();
84
85
        return [
86
            'collection is not an array of objects' => [
87
                $expected,
88
                $resourceType,
89
                [
90
                    'key' => 'not an array ofg objects'
91
                ],
92
                Messages::MUST_BE_ARRAY_OF_OBJECTS
93
            ],
94
            'not the same counts' => [
95
                $expected,
96
                $resourceType,
97
                [
98
                    $collection[0]
99
                ],
100
                null
101
            ],
102
            'collections are not equal' => [
103
                $expected,
104
                $resourceType,
105
                $collection,
106
                null
107
            ]
108
        ];
109
    }
110
111
    // /**
112
    //  * @test
113
    //  */
114
    // public function assertResourceCollectionEqualsCollectionInvalidArguments()
115
    // {
116
    //     $attributes = [
117
    //         'TST_ID' => 10,
118
    //         'TST_NAME' => 'test',
119
    //         'TST_NUMBER' => 123,
120
    //         'TST_CREATION_DATE' => null
121
    //     ];
122
123
    //     $model = $attributes;
124
    //     $resourceType = 'test';
125
    //     $resource = [
126
    //         'type' => $resourceType,
127
    //         'id' => 10,
128
    //         'attributes' => $attributes
129
    //     ];
130
131
    //     $this->setInvalidArgumentException(1, Collection::class, [$model]);
132
133
    //     Assert::assertResourceCollectionEqualsCollection([$model], $resourceType, [$resource]);
134
    // }
135
}
136