public function PluginTestBase::testPaging in Purge 8.3
Test the paging behavior.
File
- tests/
src/ Kernel/ Queue/ PluginTestBase.php, line 192
Class
- PluginTestBase
- Provides a abstract test class to aid thorough tests for queue plugins.
Namespace
Drupal\Tests\purge\Kernel\QueueCode
public function testPaging() : void {
$this
->assertEquals(0, $this->queue
->numberOfItems());
// Assert that setting the paging limit, gets reflected properly.
$this
->assertEquals($this->queue
->selectPageLimit(), 15);
$this
->assertEquals($this->queue
->selectPageLimit(37), 37);
$this
->assertEquals($this->queue
->selectPageLimit(), 37);
$this
->assertEquals($this->queue
->selectPageLimit(7), 7);
$this
->assertEquals($this->queue
->selectPageLimit(), 7);
// Assert that an empty queue, results in no pages at all.
$this
->assertEquals($this->queue
->selectPageMax(), 0);
$this
->assertEquals($this->queue
->selectPage(), []);
// Create 25 items, which should be 3,5 (so 4) pages of 7 items each.
$this
->assertSame(count($this->queue
->createItemMultiple([
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
])), 25);
$this
->assertEquals($this->queue
->selectPageMax(), 4);
$this
->assertEquals($this->queue
->selectPageLimit(5), 5);
$this
->assertEquals($this->queue
->selectPageMax(), 5);
$this
->assertEquals($this->queue
->selectPageLimit(7), 7);
// Test the data in the first page, omit the page parameter which is 1.
$page_1 = $this->queue
->selectPage();
$this
->assertEquals(count($page_1), 7);
$this
->assertEquals($page_1[0]->item_id, 1);
$this
->assertEquals($page_1[1]->item_id, 2);
$this
->assertEquals($page_1[2]->item_id, 3);
$this
->assertEquals($page_1[3]->item_id, 4);
$this
->assertEquals($page_1[4]->item_id, 5);
$this
->assertEquals($page_1[5]->item_id, 6);
$this
->assertEquals($page_1[6]->item_id, 7);
$this
->assertEquals($page_1[0]->data, 1);
$this
->assertEquals($page_1[1]->data, 2);
$this
->assertEquals($page_1[2]->data, 3);
$this
->assertEquals($page_1[3]->data, 4);
$this
->assertEquals($page_1[4]->data, 5);
$this
->assertEquals($page_1[5]->data, 6);
$this
->assertEquals($page_1[6]->data, 7);
$this
->assertEquals($page_1[0]->expire, 0);
$this
->assertEquals($page_1[1]->expire, 0);
$this
->assertEquals($page_1[2]->expire, 0);
$this
->assertEquals($page_1[3]->expire, 0);
$this
->assertEquals($page_1[4]->expire, 0);
$this
->assertEquals($page_1[5]->expire, 0);
$this
->assertEquals($page_1[6]->expire, 0);
// Test the second page, which should be 7 items.
$page_2 = $this->queue
->selectPage(2);
$this
->assertEquals(count($page_2), 7);
$this
->assertEquals($page_2[0]->data, 8);
$this
->assertEquals($page_2[1]->data, 9);
$this
->assertEquals($page_2[2]->data, 10);
$this
->assertEquals($page_2[3]->data, 11);
$this
->assertEquals($page_2[4]->data, 12);
$this
->assertEquals($page_2[5]->data, 13);
$this
->assertEquals($page_2[6]->data, 14);
// Test the third page, which should be 7 items as well.
$page_3 = $this->queue
->selectPage(3);
$this
->assertEquals(count($page_3), 7);
$this
->assertEquals($page_3[0]->data, 15);
$this
->assertEquals($page_3[1]->data, 16);
$this
->assertEquals($page_3[2]->data, 17);
$this
->assertEquals($page_3[3]->data, 18);
$this
->assertEquals($page_3[4]->data, 19);
$this
->assertEquals($page_3[5]->data, 20);
$this
->assertEquals($page_3[6]->data, 21);
// The last page, should only be 4 items in total.
$page_4 = $this->queue
->selectPage(4);
$this
->assertEquals(count($page_4), 4);
$this
->assertEquals($page_4[0]->data, 22);
$this
->assertEquals($page_4[1]->data, 23);
$this
->assertEquals($page_4[2]->data, 24);
$this
->assertEquals($page_4[3]->data, 25);
// And obviously, there should be no fifth page.
$this
->assertEquals($this->queue
->selectPage(5), []);
$this->queue
->deleteQueue();
}