Commit c65aafe7 authored by jhedstrom's avatar jhedstrom Committed by GitHub

Merge pull request #204 from kevin-dutra/203-too-many-in-queue-item

#203 Too many messages per deletion queue item
parents ac95b851 d867bed8
...@@ -77,7 +77,11 @@ abstract class MessagePurgeBase extends PluginBase implements MessagePurgeInterf ...@@ -77,7 +77,11 @@ abstract class MessagePurgeBase extends PluginBase implements MessagePurgeInterf
* {@inheritdoc} * {@inheritdoc}
*/ */
public function process(array $ids) { public function process(array $ids) {
$this->queue->createItem($ids); if (!empty($ids)) {
foreach (array_chunk($ids, MessagePurgeInterface::MESSAGE_DELETE_SIZE) as $queue_set) {
$this->queue->createItem($queue_set);
}
}
} }
/** /**
......
<?php
namespace Drupal\Tests\message\Unit\Plugin\MessagePurge;
use Drupal\Core\Entity\Query\QueryInterface;
use Drupal\Core\Queue\QueueInterface;
use Drupal\message\MessagePurgeInterface;
use Drupal\message\Plugin\MessagePurge\Days;
use Drupal\Tests\UnitTestCase;
use Prophecy\Argument;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Unit tests for the days purge plugin.
*
* @coversDefaultClass \Drupal\message\Plugin\MessagePurge\Days
*
* @group Message
*/
class DaysTest extends UnitTestCase {
/**
* Test processing zero message.
*
* @covers ::process
*/
public function testProcessNone() {
$query = $this->prophesize(QueryInterface::class)->reveal();
$request_stack = $this->prophesize(RequestStack::class)->reveal();
$queue = $this->prophesize(QueueInterface::class);
$queue->createItem(Argument::any())->shouldNotBeCalled();
$plugin = new Days([], 'days', [], $query, $queue->reveal(), $request_stack);
$plugin->process([]);
}
/**
* Tests processing more than defined queue item limit.
*
* @covers ::process
*/
public function testProcess() {
$query = $this->prophesize(QueryInterface::class)->reveal();
$request_stack = $this->prophesize(RequestStack::class)->reveal();
$queue = $this->prophesize(QueueInterface::class);
$queue->createItem(Argument::size(MessagePurgeInterface::MESSAGE_DELETE_SIZE))->shouldBeCalledTimes(1);
$queue->createItem(Argument::size(1))->shouldBeCalledTimes(1);
$plugin = new Days([], 'days', [], $query, $queue->reveal(), $request_stack);
$messages = range(1, MessagePurgeInterface::MESSAGE_DELETE_SIZE + 1);
$plugin->process($messages);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment