@@ -318,6 +318,104 @@ function it_can_get_previous_and_next_entries_in_a_dated_asc_collection()
318318 $ this ->assertEquals (['Carrot ' , 'Banana ' , 'Danish ' ], $ this ->runTagAndGetTitles ('older ' )); // Alias of prev when date:desc
319319 }
320320
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+
321419 /** @test */
322420 function it_adds_defaults_for_missing_items_based_on_blueprint ()
323421 {
0 commit comments