3 use Drupal\Core\DependencyInjection\Container;
4 use Drupal\Core\Logger\LoggerChannel;
5 use Drupal\Core\Logger\LoggerChannelFactory;
6 use Drupal\Core\Queue\QueueFactory;
10 use PHPUnit\Framework\TestCase;
12 use Procrastinator\Result;
13 use Drupal\Core\Queue\QueueInterface;
24 $result = (
new Chain($this))
25 ->add(Result::class,
'getStatus', Result::DONE)
28 $containerChain = $this->getContainerChain($result);
30 ->add(LoggerChannelFactory::class,
'get', LoggerChannel::class)
31 ->add(LoggerChannel::class,
'log', NULL,
'log');
32 $container = $containerChain->getMock();
38 \Drupal::setContainer($container);
40 $queueWorker = Import::create($container, [],
'',
'');
41 $queueWorker->processItem($data);
43 $this->assertEquals(
"Import for 12345 completed.", $containerChain->getStoredInput(
'log')[1]);
50 $result = (
new Chain($this))
51 ->add(Result::class,
'getStatus', Result::ERROR)
52 ->add(Result::class,
'getError',
'Oops')
55 $containerChain = $this->getContainerChain($result);
57 ->add(LoggerChannelFactory::class,
'get', LoggerChannel::class)
58 ->add(LoggerChannel::class,
'log', NULL,
'log');
59 $container = $containerChain->getMock();
65 \Drupal::setContainer($container);
67 $queueWorker = Import::create($container, [],
'',
'');
68 $queueWorker->processItem($data);
70 $this->assertEquals(
"Import for 12345 returned an error: Oops", $containerChain->getStoredInput(
'log')[1]);
77 $result = (
new Chain($this))
78 ->add(Result::class,
'getStatus', Result::STOPPED)
81 $containerChain = $this->getContainerChain($result);
82 $container = $containerChain->getMock();
88 \Drupal::setContainer($container);
90 $queueWorker = Import::create($container, [],
'',
'');
91 $queueWorker->processItem($data);
93 $this->assertEquals([$data], $containerChain->getStoredInput(
'create_item'));
99 private function getContainerChain($result) {
100 $options = (
new Options())
101 ->add(
"logger.factory", LoggerChannelFactory::class)
102 ->add(
"dkan_datastore.service", Service::class)
103 ->add(
'queue', QueueFactory::class)
106 $containerChain = (
new Chain($this))
107 ->add(Container::class,
'get', $options)
108 ->add(Service::class,
'import', [$result])
109 ->add(QueueFactory::class,
'get', QueueInterface::class)
110 ->add(QueueInterface::class,
'createItem', NULL,
'create_item');
112 return $containerChain;