@@ -318,6 +318,104 @@ function it_can_get_previous_and_next_entries_in_a_dated_asc_collection()
318
318
$ this ->assertEquals (['Carrot ' , 'Banana ' , 'Danish ' ], $ this ->runTagAndGetTitles ('older ' )); // Alias of prev when date:desc
319
319
}
320
320
321
+ /** @test */
322
+ function it_can_get_previous_and_next_entries_in_an_orderable_asc_collection ()
323
+ {
324
+ $ this ->foods ->orderable (true )->save ();
325
+
326
+ $ this ->makeEntry ($ this ->foods , 'a ' )->set ('title ' , 'Apple ' )->save ();
327
+ $ this ->makeEntry ($ this ->foods , 'b ' )->set ('title ' , 'Banana ' )->save ();
328
+ $ this ->makeEntry ($ this ->foods , 'c ' )->set ('title ' , 'Carrot ' )->save ();
329
+ $ this ->makeEntry ($ this ->foods , 'd ' )->set ('title ' , 'Danish ' )->save ();
330
+ $ this ->makeEntry ($ this ->foods , 'e ' )->set ('title ' , 'Egg ' )->save ();
331
+ $ this ->makeEntry ($ this ->foods , 'f ' )->set ('title ' , 'Fig ' )->save ();
332
+ $ this ->makeEntry ($ this ->foods , 'g ' )->set ('title ' , 'Grape ' )->save ();
333
+ $ this ->makeEntry ($ this ->foods , 'h ' )->set ('title ' , 'Hummus ' )->save ();
334
+ $ this ->makeEntry ($ this ->foods , 'i ' )->set ('title ' , 'Ice Cream ' )->save ();
335
+
336
+ $ this ->foods ->setEntryPositions ([
337
+ $ this ->findEntryByTitle ('Carrot ' )->id (),
338
+ $ this ->findEntryByTitle ('Hummus ' )->id (),
339
+ $ this ->findEntryByTitle ('Apple ' )->id (),
340
+ $ this ->findEntryByTitle ('Ice Cream ' )->id (),
341
+ $ this ->findEntryByTitle ('Banana ' )->id (),
342
+ $ this ->findEntryByTitle ('Fig ' )->id (),
343
+ $ this ->findEntryByTitle ('Grape ' )->id (),
344
+ $ this ->findEntryByTitle ('Egg ' )->id (),
345
+ $ this ->findEntryByTitle ('Danish ' )->id (),
346
+ ])->save ();
347
+
348
+ $ currentId = $ this ->findEntryByTitle ('Banana ' )->id ();
349
+
350
+ $ orderBy = 'order:asc ' ;
351
+ // Hummus
352
+ // Apple
353
+ // Ice Cream
354
+ // Banana (current)
355
+ // Fig
356
+ // Grape
357
+ // Egg
358
+
359
+ $ this ->setTagParameters (['in ' => 'foods ' , 'current ' => $ currentId , 'order_by ' => $ orderBy , 'limit ' => 1 ]);
360
+
361
+ $ this ->assertEquals (['Fig ' ], $ this ->runTagAndGetTitles ('next ' ));
362
+ $ this ->assertEquals (['Ice Cream ' ], $ this ->runTagAndGetTitles ('previous ' ));
363
+
364
+ $ this ->setTagParameters (['in ' => 'foods ' , 'current ' => $ currentId , 'order_by ' => $ orderBy , 'limit ' => 3 ]);
365
+
366
+ $ this ->assertEquals (['Fig ' , 'Grape ' , 'Egg ' ], $ this ->runTagAndGetTitles ('next ' ));
367
+ $ this ->assertEquals (['Hummus ' , 'Apple ' , 'Ice Cream ' ], $ this ->runTagAndGetTitles ('previous ' ));
368
+ }
369
+
370
+ /** @test */
371
+ function it_can_get_previous_and_next_entries_in_an_orderable_desc_collection ()
372
+ {
373
+ $ this ->foods ->orderable (true )->save ();
374
+
375
+ $ this ->makeEntry ($ this ->foods , 'a ' )->set ('title ' , 'Apple ' )->save ();
376
+ $ this ->makeEntry ($ this ->foods , 'b ' )->set ('title ' , 'Banana ' )->save ();
377
+ $ this ->makeEntry ($ this ->foods , 'c ' )->set ('title ' , 'Carrot ' )->save ();
378
+ $ this ->makeEntry ($ this ->foods , 'd ' )->set ('title ' , 'Danish ' )->save ();
379
+ $ this ->makeEntry ($ this ->foods , 'e ' )->set ('title ' , 'Egg ' )->save ();
380
+ $ this ->makeEntry ($ this ->foods , 'f ' )->set ('title ' , 'Fig ' )->save ();
381
+ $ this ->makeEntry ($ this ->foods , 'g ' )->set ('title ' , 'Grape ' )->save ();
382
+ $ this ->makeEntry ($ this ->foods , 'h ' )->set ('title ' , 'Hummus ' )->save ();
383
+ $ this ->makeEntry ($ this ->foods , 'i ' )->set ('title ' , 'Ice Cream ' )->save ();
384
+
385
+ $ this ->foods ->setEntryPositions ([
386
+ $ this ->findEntryByTitle ('Carrot ' )->id (),
387
+ $ this ->findEntryByTitle ('Hummus ' )->id (),
388
+ $ this ->findEntryByTitle ('Apple ' )->id (),
389
+ $ this ->findEntryByTitle ('Ice Cream ' )->id (),
390
+ $ this ->findEntryByTitle ('Banana ' )->id (),
391
+ $ this ->findEntryByTitle ('Fig ' )->id (),
392
+ $ this ->findEntryByTitle ('Grape ' )->id (),
393
+ $ this ->findEntryByTitle ('Egg ' )->id (),
394
+ $ this ->findEntryByTitle ('Danish ' )->id (),
395
+ ])->save ();
396
+
397
+ $ currentId = $ this ->findEntryByTitle ('Banana ' )->id ();
398
+
399
+ $ orderBy = 'order:desc ' ;
400
+ // Egg
401
+ // Grape
402
+ // Fig
403
+ // Banana (current)
404
+ // Ice Cream
405
+ // Apple
406
+ // Hummus
407
+
408
+ $ this ->setTagParameters (['in ' => 'foods ' , 'current ' => $ currentId , 'order_by ' => $ orderBy , 'limit ' => 1 ]);
409
+
410
+ $ this ->assertEquals (['Ice Cream ' ], $ this ->runTagAndGetTitles ('next ' ));
411
+ $ this ->assertEquals (['Fig ' ], $ this ->runTagAndGetTitles ('previous ' ));
412
+
413
+ $ this ->setTagParameters (['in ' => 'foods ' , 'current ' => $ currentId , 'order_by ' => $ orderBy , 'limit ' => 3 ]);
414
+
415
+ $ this ->assertEquals (['Ice Cream ' , 'Apple ' , 'Hummus ' ], $ this ->runTagAndGetTitles ('next ' ));
416
+ $ this ->assertEquals (['Egg ' , 'Grape ' , 'Fig ' ], $ this ->runTagAndGetTitles ('previous ' ));
417
+ }
418
+
321
419
/** @test */
322
420
function it_adds_defaults_for_missing_items_based_on_blueprint ()
323
421
{
0 commit comments