Code Duplication    Length = 52-55 lines in 3 locations

test/Serializer/JsonApiSerializerTest.php 3 locations

@@ 194-248 (lines=55) @@
191
        $this->assertSame($expectedJson, $scope->toJson());
192
    }
193
194
    public function testSerializingItemResourceWithHasOneDasherizedInclude()
195
    {
196
        $this->manager->parseIncludes('co-author');
197
198
        $bookData = [
199
            'id' => 1,
200
            'title' => 'Foo',
201
            'year' => '1991',
202
            '_author' => [
203
                'id' => 1,
204
                'name' => 'Dave',
205
            ],
206
            '_co_author' => [
207
                'id' => 2,
208
                'name' => 'Jim',
209
            ],
210
        ];
211
212
        $resource = new Item($bookData, new JsonApiBookTransformer(), 'books');
213
214
        $scope = new Scope($this->manager, $resource);
215
216
        $expected = [
217
            'data' => [
218
                'type' => 'books',
219
                'id' => '1',
220
                'attributes' => [
221
                    'title' => 'Foo',
222
                    'year' => 1991,
223
                ],
224
                'relationships' => [
225
                    'co-author' => [
226
                        'data' => [
227
                            'type' => 'people',
228
                            'id' => '2',
229
                        ],
230
                    ],
231
                ],
232
            ],
233
            'included' => [
234
                [
235
                    'type' => 'people',
236
                    'id' => '2',
237
                    'attributes' => [
238
                        'name' => 'Jim',
239
                    ],
240
                ],
241
            ],
242
        ];
243
244
        $this->assertSame($expected, $scope->toArray());
245
246
        $expectedJson = '{"data":{"type":"books","id":"1","attributes":{"title":"Foo","year":1991},"relationships":{"co-author":{"data":{"type":"people","id":"2"}}}},"included":[{"type":"people","id":"2","attributes":{"name":"Jim"}}]}';
247
        $this->assertSame($expectedJson, $scope->toJson());
248
    }
249
250
    public function testSerializingItemResourceWithEmptyHasOneInclude()
251
    {
@@ 508-559 (lines=52) @@
505
        $this->assertSame($expectedJson, $scope->toJson());
506
    }
507
508
    public function testSerializingCollectionResourceWithoutIncludes()
509
    {
510
        $booksData = [
511
            [
512
                'id' => 1,
513
                'title' => 'Foo',
514
                'year' => '1991',
515
                '_author' => [
516
                    'id' => 1,
517
                    'name' => 'Dave',
518
                ],
519
            ],
520
            [
521
                'id' => 2,
522
                'title' => 'Bar',
523
                'year' => '1997',
524
                '_author' => [
525
                    'id' => 2,
526
                    'name' => 'Bob',
527
                ],
528
            ],
529
        ];
530
531
        $resource = new Collection($booksData, new JsonApiBookTransformer(), 'books');
532
        $scope = new Scope($this->manager, $resource);
533
534
        $expected = [
535
            'data' => [
536
                [
537
                    'type' => 'books',
538
                    'id' => '1',
539
                    'attributes' => [
540
                        'title' => 'Foo',
541
                        'year' => 1991,
542
                    ],
543
                ],
544
                [
545
                    'type' => 'books',
546
                    'id' => '2',
547
                    'attributes' => [
548
                        'title' => 'Bar',
549
                        'year' => 1997,
550
                    ],
551
                ],
552
            ],
553
        ];
554
555
        $this->assertSame($expected, $scope->toArray());
556
557
        $expectedJson = '{"data":[{"type":"books","id":"1","attributes":{"title":"Foo","year":1991}},{"type":"books","id":"2","attributes":{"title":"Bar","year":1997}}]}';
558
        $this->assertSame($expectedJson, $scope->toJson());
559
    }
560
561
    public function testSerializingCollectionResourceWithHasOneInclude()
562
    {
@@ 927-981 (lines=55) @@
924
        $this->assertSame($expectedJson, $scope->toJson());
925
    }
926
927
    public function testSerializingCollectionResourceWithMeta()
928
    {
929
        $booksData = [
930
            [
931
                'id' => 1,
932
                'title' => 'Foo',
933
                'year' => '1991',
934
                '_author' => [
935
                    'name' => 'Dave',
936
                ],
937
            ],
938
            [
939
                'id' => 2,
940
                'title' => 'Bar',
941
                'year' => '1997',
942
                '_author' => [
943
                    'name' => 'Bob',
944
                ],
945
            ],
946
        ];
947
948
        $resource = new Collection($booksData, new JsonApiBookTransformer(), 'books');
949
        $resource->setMetaValue('foo', 'bar');
950
951
        $scope = new Scope($this->manager, $resource);
952
953
        $expected = [
954
            'data' => [
955
                [
956
                    'type' => 'books',
957
                    'id' => '1',
958
                    'attributes' => [
959
                        'title' => 'Foo',
960
                        'year' => 1991,
961
                    ],
962
                ],
963
                [
964
                    'type' => 'books',
965
                    'id' => '2',
966
                    'attributes' => [
967
                        'title' => 'Bar',
968
                        'year' => 1997,
969
                    ],
970
                ],
971
            ],
972
            'meta' => [
973
                'foo' => 'bar',
974
            ],
975
        ];
976
977
        $this->assertSame($expected, $scope->toArray());
978
979
        $expectedJson = '{"data":[{"type":"books","id":"1","attributes":{"title":"Foo","year":1991}},{"type":"books","id":"2","attributes":{"title":"Bar","year":1997}}],"meta":{"foo":"bar"}}';
980
        $this->assertSame($expectedJson, $scope->toJson());
981
    }
982
983
    public function testSerializingCollectionResourceWithDuplicatedIncludeData()
984
    {