|
@@ 2184-2320 (lines=137) @@
|
| 2181 |
|
$this->assertSame($expectedJson, $scope->toJson()); |
| 2182 |
|
} |
| 2183 |
|
|
| 2184 |
|
public function testSerializingCollectionResourceWithPaginatorWithOmittedUnavailablePreviousLink() |
| 2185 |
|
{ |
| 2186 |
|
$baseUrl = 'http://example.com'; |
| 2187 |
|
|
| 2188 |
|
$this->manager->setSerializer(new JsonApiSerializer($baseUrl)); |
| 2189 |
|
|
| 2190 |
|
$total = 10; |
| 2191 |
|
$count = 2; |
| 2192 |
|
$perPage = 2; |
| 2193 |
|
$currentPage = 1; |
| 2194 |
|
$lastPage = 5; |
| 2195 |
|
$currentUrl = 'http://example.com/books/?page=1'; |
| 2196 |
|
$nextUrl = 'http://example.com/books/?page=2'; |
| 2197 |
|
$lastUrl = 'http://example.com/books/?page=5'; |
| 2198 |
|
|
| 2199 |
|
$paginator = Mockery::mock('League\Fractal\Pagination\PaginatorInterface'); |
| 2200 |
|
$paginator->shouldReceive('getCurrentPage')->andReturn($currentPage); |
| 2201 |
|
$paginator->shouldReceive('getLastPage')->andReturn($lastPage); |
| 2202 |
|
$paginator->shouldReceive('getTotal')->andReturn($total); |
| 2203 |
|
$paginator->shouldReceive('getCount')->andReturn($count); |
| 2204 |
|
$paginator->shouldReceive('getPerPage')->andReturn($perPage); |
| 2205 |
|
$paginator->shouldReceive('getUrl')->with(1)->andReturn($currentUrl); |
| 2206 |
|
$paginator->shouldReceive('getUrl')->with(2)->andReturn($nextUrl); |
| 2207 |
|
$paginator->shouldReceive('getUrl')->with(5)->andReturn($lastUrl); |
| 2208 |
|
|
| 2209 |
|
$booksData = [ |
| 2210 |
|
[ |
| 2211 |
|
'id' => 1, |
| 2212 |
|
'title' => 'Foo', |
| 2213 |
|
'year' => '1991', |
| 2214 |
|
'_author' => [ |
| 2215 |
|
'id' => 1, |
| 2216 |
|
'name' => 'Dave', |
| 2217 |
|
], |
| 2218 |
|
], |
| 2219 |
|
[ |
| 2220 |
|
'id' => 2, |
| 2221 |
|
'title' => 'Bar', |
| 2222 |
|
'year' => '1997', |
| 2223 |
|
'_author' => [ |
| 2224 |
|
'id' => 2, |
| 2225 |
|
'name' => 'Bob', |
| 2226 |
|
], |
| 2227 |
|
], |
| 2228 |
|
]; |
| 2229 |
|
|
| 2230 |
|
$resource = new Collection($booksData, new JsonApiBookTransformer(), 'books'); |
| 2231 |
|
$resource->setPaginator($paginator); |
| 2232 |
|
$scope = new Scope($this->manager, $resource); |
| 2233 |
|
|
| 2234 |
|
$expected = [ |
| 2235 |
|
'data' => [ |
| 2236 |
|
[ |
| 2237 |
|
'type' => 'books', |
| 2238 |
|
'id' => '1', |
| 2239 |
|
'attributes' => [ |
| 2240 |
|
'title' => 'Foo', |
| 2241 |
|
'year' => 1991, |
| 2242 |
|
], |
| 2243 |
|
'links' => [ |
| 2244 |
|
'self' => 'http://example.com/books/1', |
| 2245 |
|
], |
| 2246 |
|
'relationships' => [ |
| 2247 |
|
'author' => [ |
| 2248 |
|
'links' => [ |
| 2249 |
|
'self' => 'http://example.com/books/1/relationships/author', |
| 2250 |
|
'related' => 'http://example.com/books/1/author', |
| 2251 |
|
], |
| 2252 |
|
], |
| 2253 |
|
'co-author' => [ |
| 2254 |
|
'links' => [ |
| 2255 |
|
'self' => 'http://example.com/books/1/relationships/co-author', |
| 2256 |
|
'related' => 'http://example.com/books/1/co-author' |
| 2257 |
|
], |
| 2258 |
|
], |
| 2259 |
|
'author-with-meta' => [ |
| 2260 |
|
'links' => [ |
| 2261 |
|
'self' => 'http://example.com/books/1/relationships/author-with-meta', |
| 2262 |
|
'related' => 'http://example.com/books/1/author-with-meta' |
| 2263 |
|
], |
| 2264 |
|
], |
| 2265 |
|
], |
| 2266 |
|
], |
| 2267 |
|
[ |
| 2268 |
|
'type' => 'books', |
| 2269 |
|
'id' => '2', |
| 2270 |
|
'attributes' => [ |
| 2271 |
|
'title' => 'Bar', |
| 2272 |
|
'year' => 1997, |
| 2273 |
|
], |
| 2274 |
|
'links' => [ |
| 2275 |
|
'self' => 'http://example.com/books/2', |
| 2276 |
|
], |
| 2277 |
|
'relationships' => [ |
| 2278 |
|
'author' => [ |
| 2279 |
|
'links' => [ |
| 2280 |
|
'self' => 'http://example.com/books/2/relationships/author', |
| 2281 |
|
'related' => 'http://example.com/books/2/author', |
| 2282 |
|
], |
| 2283 |
|
], |
| 2284 |
|
'co-author' => [ |
| 2285 |
|
'links' => [ |
| 2286 |
|
'self' => 'http://example.com/books/2/relationships/co-author', |
| 2287 |
|
'related' => 'http://example.com/books/2/co-author' |
| 2288 |
|
], |
| 2289 |
|
], |
| 2290 |
|
'author-with-meta' => [ |
| 2291 |
|
'links' => [ |
| 2292 |
|
'self' => 'http://example.com/books/2/relationships/author-with-meta', |
| 2293 |
|
'related' => 'http://example.com/books/2/author-with-meta' |
| 2294 |
|
], |
| 2295 |
|
], |
| 2296 |
|
], |
| 2297 |
|
], |
| 2298 |
|
], |
| 2299 |
|
'meta' => [ |
| 2300 |
|
'pagination' => [ |
| 2301 |
|
'total' => 10, |
| 2302 |
|
'count' => 2, |
| 2303 |
|
'per_page' => 2, |
| 2304 |
|
'current_page' => 1, |
| 2305 |
|
'total_pages' => 5 |
| 2306 |
|
] |
| 2307 |
|
], |
| 2308 |
|
'links' => [ |
| 2309 |
|
'self' => 'http://example.com/books/?page=1', |
| 2310 |
|
'first' => 'http://example.com/books/?page=1', |
| 2311 |
|
'next' => 'http://example.com/books/?page=2', |
| 2312 |
|
'last' => 'http://example.com/books/?page=5' |
| 2313 |
|
] |
| 2314 |
|
]; |
| 2315 |
|
|
| 2316 |
|
$this->assertSame($expected, $scope->toArray()); |
| 2317 |
|
|
| 2318 |
|
$expectedJson = '{"data":[{"type":"books","id":"1","attributes":{"title":"Foo","year":1991},"links":{"self":"http:\/\/example.com\/books\/1"},"relationships":{"author":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/author","related":"http:\/\/example.com\/books\/1\/author"}},"co-author":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/co-author","related":"http:\/\/example.com\/books\/1\/co-author"}},"author-with-meta":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/author-with-meta","related":"http:\/\/example.com\/books\/1\/author-with-meta"}}}},{"type":"books","id":"2","attributes":{"title":"Bar","year":1997},"links":{"self":"http:\/\/example.com\/books\/2"},"relationships":{"author":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/author","related":"http:\/\/example.com\/books\/2\/author"}},"co-author":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/co-author","related":"http:\/\/example.com\/books\/2\/co-author"}},"author-with-meta":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/author-with-meta","related":"http:\/\/example.com\/books\/2\/author-with-meta"}}}}],"meta":{"pagination":{"total":10,"count":2,"per_page":2,"current_page":1,"total_pages":5}},"links":{"self":"http:\/\/example.com\/books\/?page=1","first":"http:\/\/example.com\/books\/?page=1","next":"http:\/\/example.com\/books\/?page=2","last":"http:\/\/example.com\/books\/?page=5"}}'; |
| 2319 |
|
$this->assertSame($expectedJson, $scope->toJson()); |
| 2320 |
|
} |
| 2321 |
|
|
| 2322 |
|
public function testSerializingCollectionResourceWithPaginatorWithOmittedUnavailableNextLink() |
| 2323 |
|
{ |
|
@@ 2322-2458 (lines=137) @@
|
| 2319 |
|
$this->assertSame($expectedJson, $scope->toJson()); |
| 2320 |
|
} |
| 2321 |
|
|
| 2322 |
|
public function testSerializingCollectionResourceWithPaginatorWithOmittedUnavailableNextLink() |
| 2323 |
|
{ |
| 2324 |
|
$baseUrl = 'http://example.com'; |
| 2325 |
|
|
| 2326 |
|
$this->manager->setSerializer(new JsonApiSerializer($baseUrl)); |
| 2327 |
|
|
| 2328 |
|
$total = 10; |
| 2329 |
|
$count = 2; |
| 2330 |
|
$perPage = 2; |
| 2331 |
|
$currentPage = 5; |
| 2332 |
|
$lastPage = 5; |
| 2333 |
|
$firstUrl = 'http://example.com/books/?page=1'; |
| 2334 |
|
$previousUrl = 'http://example.com/books/?page=4'; |
| 2335 |
|
$lastUrl = 'http://example.com/books/?page=5'; |
| 2336 |
|
|
| 2337 |
|
$paginator = Mockery::mock('League\Fractal\Pagination\PaginatorInterface'); |
| 2338 |
|
$paginator->shouldReceive('getCurrentPage')->andReturn($currentPage); |
| 2339 |
|
$paginator->shouldReceive('getLastPage')->andReturn($lastPage); |
| 2340 |
|
$paginator->shouldReceive('getTotal')->andReturn($total); |
| 2341 |
|
$paginator->shouldReceive('getCount')->andReturn($count); |
| 2342 |
|
$paginator->shouldReceive('getPerPage')->andReturn($perPage); |
| 2343 |
|
$paginator->shouldReceive('getUrl')->with(1)->andReturn($firstUrl); |
| 2344 |
|
$paginator->shouldReceive('getUrl')->with(4)->andReturn($previousUrl); |
| 2345 |
|
$paginator->shouldReceive('getUrl')->with(5)->andReturn($lastUrl); |
| 2346 |
|
|
| 2347 |
|
$booksData = [ |
| 2348 |
|
[ |
| 2349 |
|
'id' => 1, |
| 2350 |
|
'title' => 'Foo', |
| 2351 |
|
'year' => '1991', |
| 2352 |
|
'_author' => [ |
| 2353 |
|
'id' => 1, |
| 2354 |
|
'name' => 'Dave', |
| 2355 |
|
], |
| 2356 |
|
], |
| 2357 |
|
[ |
| 2358 |
|
'id' => 2, |
| 2359 |
|
'title' => 'Bar', |
| 2360 |
|
'year' => '1997', |
| 2361 |
|
'_author' => [ |
| 2362 |
|
'id' => 2, |
| 2363 |
|
'name' => 'Bob', |
| 2364 |
|
], |
| 2365 |
|
], |
| 2366 |
|
]; |
| 2367 |
|
|
| 2368 |
|
$resource = new Collection($booksData, new JsonApiBookTransformer(), 'books'); |
| 2369 |
|
$resource->setPaginator($paginator); |
| 2370 |
|
$scope = new Scope($this->manager, $resource); |
| 2371 |
|
|
| 2372 |
|
$expected = [ |
| 2373 |
|
'data' => [ |
| 2374 |
|
[ |
| 2375 |
|
'type' => 'books', |
| 2376 |
|
'id' => '1', |
| 2377 |
|
'attributes' => [ |
| 2378 |
|
'title' => 'Foo', |
| 2379 |
|
'year' => 1991, |
| 2380 |
|
], |
| 2381 |
|
'links' => [ |
| 2382 |
|
'self' => 'http://example.com/books/1', |
| 2383 |
|
], |
| 2384 |
|
'relationships' => [ |
| 2385 |
|
'author' => [ |
| 2386 |
|
'links' => [ |
| 2387 |
|
'self' => 'http://example.com/books/1/relationships/author', |
| 2388 |
|
'related' => 'http://example.com/books/1/author', |
| 2389 |
|
], |
| 2390 |
|
], |
| 2391 |
|
'co-author' => [ |
| 2392 |
|
'links' => [ |
| 2393 |
|
'self' => 'http://example.com/books/1/relationships/co-author', |
| 2394 |
|
'related' => 'http://example.com/books/1/co-author' |
| 2395 |
|
], |
| 2396 |
|
], |
| 2397 |
|
'author-with-meta' => [ |
| 2398 |
|
'links' => [ |
| 2399 |
|
'self' => 'http://example.com/books/1/relationships/author-with-meta', |
| 2400 |
|
'related' => 'http://example.com/books/1/author-with-meta' |
| 2401 |
|
], |
| 2402 |
|
], |
| 2403 |
|
], |
| 2404 |
|
], |
| 2405 |
|
[ |
| 2406 |
|
'type' => 'books', |
| 2407 |
|
'id' => '2', |
| 2408 |
|
'attributes' => [ |
| 2409 |
|
'title' => 'Bar', |
| 2410 |
|
'year' => 1997, |
| 2411 |
|
], |
| 2412 |
|
'links' => [ |
| 2413 |
|
'self' => 'http://example.com/books/2', |
| 2414 |
|
], |
| 2415 |
|
'relationships' => [ |
| 2416 |
|
'author' => [ |
| 2417 |
|
'links' => [ |
| 2418 |
|
'self' => 'http://example.com/books/2/relationships/author', |
| 2419 |
|
'related' => 'http://example.com/books/2/author', |
| 2420 |
|
], |
| 2421 |
|
], |
| 2422 |
|
'co-author' => [ |
| 2423 |
|
'links' => [ |
| 2424 |
|
'self' => 'http://example.com/books/2/relationships/co-author', |
| 2425 |
|
'related' => 'http://example.com/books/2/co-author' |
| 2426 |
|
], |
| 2427 |
|
], |
| 2428 |
|
'author-with-meta' => [ |
| 2429 |
|
'links' => [ |
| 2430 |
|
'self' => 'http://example.com/books/2/relationships/author-with-meta', |
| 2431 |
|
'related' => 'http://example.com/books/2/author-with-meta' |
| 2432 |
|
], |
| 2433 |
|
], |
| 2434 |
|
], |
| 2435 |
|
], |
| 2436 |
|
], |
| 2437 |
|
'meta' => [ |
| 2438 |
|
'pagination' => [ |
| 2439 |
|
'total' => 10, |
| 2440 |
|
'count' => 2, |
| 2441 |
|
'per_page' => 2, |
| 2442 |
|
'current_page' => 5, |
| 2443 |
|
'total_pages' => 5 |
| 2444 |
|
] |
| 2445 |
|
], |
| 2446 |
|
'links' => [ |
| 2447 |
|
'self' => 'http://example.com/books/?page=5', |
| 2448 |
|
'first' => 'http://example.com/books/?page=1', |
| 2449 |
|
'prev' => 'http://example.com/books/?page=4', |
| 2450 |
|
'last' => 'http://example.com/books/?page=5' |
| 2451 |
|
] |
| 2452 |
|
]; |
| 2453 |
|
|
| 2454 |
|
$this->assertSame($expected, $scope->toArray()); |
| 2455 |
|
|
| 2456 |
|
$expectedJson = '{"data":[{"type":"books","id":"1","attributes":{"title":"Foo","year":1991},"links":{"self":"http:\/\/example.com\/books\/1"},"relationships":{"author":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/author","related":"http:\/\/example.com\/books\/1\/author"}},"co-author":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/co-author","related":"http:\/\/example.com\/books\/1\/co-author"}},"author-with-meta":{"links":{"self":"http:\/\/example.com\/books\/1\/relationships\/author-with-meta","related":"http:\/\/example.com\/books\/1\/author-with-meta"}}}},{"type":"books","id":"2","attributes":{"title":"Bar","year":1997},"links":{"self":"http:\/\/example.com\/books\/2"},"relationships":{"author":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/author","related":"http:\/\/example.com\/books\/2\/author"}},"co-author":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/co-author","related":"http:\/\/example.com\/books\/2\/co-author"}},"author-with-meta":{"links":{"self":"http:\/\/example.com\/books\/2\/relationships\/author-with-meta","related":"http:\/\/example.com\/books\/2\/author-with-meta"}}}}],"meta":{"pagination":{"total":10,"count":2,"per_page":2,"current_page":5,"total_pages":5}},"links":{"self":"http:\/\/example.com\/books\/?page=5","first":"http:\/\/example.com\/books\/?page=1","prev":"http:\/\/example.com\/books\/?page=4","last":"http:\/\/example.com\/books\/?page=5"}}'; |
| 2457 |
|
$this->assertSame($expectedJson, $scope->toJson()); |
| 2458 |
|
} |
| 2459 |
|
|
| 2460 |
|
public function testCustomLinkMerge() |
| 2461 |
|
{ |