3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
13 * Ensure that the extended interface for SQL-backed queues
14 * work. For example, the createItem() interface supports
18 class CRM_Queue_Queue_SqlTest
extends CiviUnitTestCase
{
20 /* ----------------------- Queue providers ----------------------- */
22 /* Define a list of queue providers which should be tested */
25 * Return a list of persistent and transient queue providers.
27 public function getQueueSpecs() {
32 'name' => 'test-queue',
42 public function setUp() {
44 $this->queueService
= CRM_Queue_Service
::singleton(TRUE);
47 public function tearDown() {
48 CRM_Utils_Time
::resetTime();
50 $tablesToTruncate = ['civicrm_queue_item'];
51 $this->quickCleanup($tablesToTruncate);
55 * Create a few queue items; alternately enqueue and dequeue various
57 * @dataProvider getQueueSpecs
60 public function testPriorities($queueSpec) {
61 $this->queue
= $this->queueService
->create($queueSpec);
62 $this->assertTrue($this->queue
instanceof CRM_Queue_Queue
);
64 $this->queue
->createItem([
67 $this->queue
->createItem([
70 $this->queue
->createItem([
74 $this->assertEquals(3, $this->queue
->numberOfItems());
75 $item = $this->queue
->claimItem();
76 $this->assertEquals('a', $item->data
['test-key']);
77 $this->queue
->deleteItem($item);
79 $this->assertEquals(2, $this->queue
->numberOfItems());
80 $item = $this->queue
->claimItem();
81 $this->assertEquals('b', $item->data
['test-key']);
82 $this->queue
->deleteItem($item);
84 $this->queue
->createItem(
86 'test-key' => 'start',
92 $this->queue
->createItem(
100 $this->queue
->createItem([
104 $this->assertEquals(4, $this->queue
->numberOfItems());
105 $item = $this->queue
->claimItem();
106 $this->assertEquals('start', $item->data
['test-key']);
107 $this->queue
->deleteItem($item);
109 $this->assertEquals(3, $this->queue
->numberOfItems());
110 $item = $this->queue
->claimItem();
111 $this->assertEquals('c', $item->data
['test-key']);
112 $this->queue
->deleteItem($item);
114 $this->assertEquals(2, $this->queue
->numberOfItems());
115 $item = $this->queue
->claimItem();
116 $this->assertEquals('d', $item->data
['test-key']);
117 $this->queue
->deleteItem($item);
119 $this->assertEquals(1, $this->queue
->numberOfItems());
120 $item = $this->queue
->claimItem();
121 $this->assertEquals('end', $item->data
['test-key']);
122 $this->queue
->deleteItem($item);
124 $this->assertEquals(0, $this->queue
->numberOfItems());