Code Duplication    Length = 38-40 lines in 3 locations

tests/Unit/Http/Resources/JsonResourceCollectionTest.php 3 locations

@@ 42-79 (lines=38) @@
39
    }
40
41
    /** @test */
42
    public function it_should_transform_collection_of_models(): void
43
    {
44
        $models = [];
45
        for ($i = 1; $i <= 3; $i++) {
46
            $model = new User([
47
                'id'           => $i,
48
                'name'         => 'Custom Name ' . $i,
49
                'mail'         => 'Custom Mail ' . $i,
50
                'home_address' => 'Custom Address ' . $i,
51
            ]);
52
            $models[] = $model;
53
        }
54
55
        $collection = new Collection($models);
56
57
        $resource = new JsonResourceCollection($collection, UserResource::class);
58
59
        $request = app(Request::class);
60
        $response = $resource->additional(['custom' => '1'])->toResponse($request);
61
        $expected = '{"data":[{"id":"1","type":"User","attributes":{"name":"Custom Name 1","mail":"Custom Mail 1","homeAddress":"Custom Address 1","calculatedField":7}},{"id":"2","type":"User","attributes":{"name":"Custom Name 2","mail":"Custom Mail 2","homeAddress":"Custom Address 2","calculatedField":7}},{"id":"3","type":"User","attributes":{"name":"Custom Name 3","mail":"Custom Mail 3","homeAddress":"Custom Address 3","calculatedField":7}}],"custom":"1"}';
62
        $this->assertInstanceOf(JsonResponse::class, $response);
63
        $this->assertSame($expected, $response->content());
64
65
        $array = [
66
            'name'            => 'Custom Name 1',
67
            'mail'            => 'Custom Mail 1',
68
            'homeAddress'     => 'Custom Address 1',
69
            'calculatedField' => 7,
70
        ];
71
        $transformed = UserResource::transformToInternal($array);
72
73
        $this->assertSame([
74
            'name'             => 'Custom Name 1',
75
            'mail'             => 'Custom Mail 1',
76
            'home_address'     => 'Custom Address 1',
77
            'calculated_field' => 7,
78
        ], $transformed);
79
    }
80
81
    /** @test */
82
    public function it_should_transform_collection_of_models_with_hidden_properties(): void
@@ 82-121 (lines=40) @@
79
    }
80
81
    /** @test */
82
    public function it_should_transform_collection_of_models_with_hidden_properties(): void
83
    {
84
        $models = [];
85
        for ($i = 1; $i <= 3; $i++) {
86
            $model = new User([
87
                'id'                         => $i,
88
                'name'                       => 'Custom Name ' . $i,
89
                'mail'                       => 'Custom Mail ' . $i,
90
                'home_address'               => 'Custom Address ' . $i,
91
            ]);
92
            // Hide home_address
93
            $model->makeHidden(['home_address']);
94
            $models[] = $model;
95
        }
96
97
        $collection = new Collection($models);
98
99
        $resource = new JsonResourceCollection($collection, UserResource::class);
100
101
        $request = app(Request::class);
102
        $response = $resource->additional(['custom' => '1'])->toResponse($request);
103
        $expected = '{"data":[{"id":"1","type":"User","attributes":{"name":"Custom Name 1","mail":"Custom Mail 1","calculatedField":7}},{"id":"2","type":"User","attributes":{"name":"Custom Name 2","mail":"Custom Mail 2","calculatedField":7}},{"id":"3","type":"User","attributes":{"name":"Custom Name 3","mail":"Custom Mail 3","calculatedField":7}}],"custom":"1"}';
104
        $this->assertInstanceOf(JsonResponse::class, $response);
105
        $this->assertSame($expected, $response->content());
106
107
        $array = [
108
            'name'            => 'Custom Name 1',
109
            'mail'            => 'Custom Mail 1',
110
            'homeAddress'     => 'Custom Address 1',
111
            'calculatedField' => 7,
112
        ];
113
        $transformed = UserResource::transformToInternal($array);
114
115
        $this->assertSame([
116
            'name'             => 'Custom Name 1',
117
            'mail'             => 'Custom Mail 1',
118
            'home_address'     => 'Custom Address 1',
119
            'calculated_field' => 7,
120
        ], $transformed);
121
    }
122
123
    /** @test */
124
    public function it_should_transform_collection_of_models_with_hidden_properties_in_output(): void
@@ 124-162 (lines=39) @@
121
    }
122
123
    /** @test */
124
    public function it_should_transform_collection_of_models_with_hidden_properties_in_output(): void
125
    {
126
        $models = [];
127
        for ($i = 1; $i <= 3; $i++) {
128
            $model = new User([
129
                'id'           => $i,
130
                'name'         => 'Custom Name ' . $i,
131
                'mail'         => 'Custom Mail ' . $i,
132
                'home_address' => 'Custom Address ' . $i,
133
            ]);
134
            $models[] = $model;
135
        }
136
137
        $collection = new Collection($models);
138
139
        // Use resiurce where property "mail" is hidden from output
140
        $resource = new JsonResourceCollection($collection, UserResourceWithHidden::class);
141
142
        $request = app(Request::class);
143
        $response = $resource->additional(['custom' => '1'])->toResponse($request);
144
        $expected = '{"data":[{"id":"1","type":"User","attributes":{"name":"Custom Name 1","homeAddress":"Custom Address 1","calculatedField":7}},{"id":"2","type":"User","attributes":{"name":"Custom Name 2","homeAddress":"Custom Address 2","calculatedField":7}},{"id":"3","type":"User","attributes":{"name":"Custom Name 3","homeAddress":"Custom Address 3","calculatedField":7}}],"custom":"1"}';
145
        $this->assertInstanceOf(JsonResponse::class, $response);
146
        $this->assertSame($expected, $response->content());
147
148
        $array = [
149
            'name'            => 'Custom Name 1',
150
            'mail'            => 'Custom Mail 1',
151
            'homeAddress'     => 'Custom Address 1',
152
            'calculatedField' => 7,
153
        ];
154
        $transformed = UserResource::transformToInternal($array);
155
156
        $this->assertSame([
157
            'name'             => 'Custom Name 1',
158
            'mail'             => 'Custom Mail 1',
159
            'home_address'     => 'Custom Address 1',
160
            'calculated_field' => 7,
161
        ], $transformed);
162
    }
163
}
164