Skip to content

Commit e47b23d

Browse files
committed
Add orderable collection tests for next and previous tags.
1 parent 43f7e60 commit e47b23d

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

tests/Tags/Collection/CollectionTest.php

+98
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)