3 namespace Drupal\KernelTests\Core\Messenger;
5 use Drupal\Core\Messenger\LegacyMessenger;
6 use Drupal\Core\Messenger\Messenger;
7 use Drupal\Core\Messenger\MessengerInterface;
8 use Drupal\KernelTests\KernelTestBase;
12 * @coversDefaultClass \Drupal\Core\Messenger\LegacyMessenger
14 * Note: The Symphony PHPUnit Bridge automatically treats any test class that
15 * starts with "Legacy" as a deprecation. To subvert that, reverse it here.
17 * @see http://symfony.com/blog/new-in-symfony-2-7-phpunit-bridge
18 * @see https://www.drupal.org/node/2931598#comment-12395743
20 class MessengerLegacyTest extends KernelTestBase {
23 * Retrieves the Messenger service from LegacyMessenger.
25 * @param \Drupal\Core\Messenger\LegacyMessenger $legacy_messenger
26 * The legacy messenger.
28 * @return \Drupal\Core\Messenger\MessengerInterface|null
29 * A messenger implementation.
31 protected function getMessengerService(LegacyMessenger $legacy_messenger) {
32 $method = new \ReflectionMethod($legacy_messenger, 'getMessengerService');
33 $method->setAccessible(TRUE);
34 return $method->invoke($legacy_messenger);
38 * @covers \Drupal::messenger
39 * @covers ::getMessengerService
41 * @covers ::addMessage
44 * @covers ::addWarning
46 public function testMessages() {
47 // Save the current container for later use.
48 $container = \Drupal::getContainer();
50 // Unset the container to mimic not having one.
51 \Drupal::unsetContainer();
53 /** @var \Drupal\Core\Messenger\LegacyMessenger $messenger */
54 // Verify that the Messenger service doesn't exists.
55 $messenger = \Drupal::messenger();
56 $this->assertNull($this->getMessengerService($messenger));
59 $messenger->addMessage('Foobar', 'custom');
60 $messenger->addMessage('Foobar', 'custom', TRUE);
61 $messenger->addError('Foo');
62 $messenger->addError('Foo', TRUE);
64 // Verify that retrieving another instance and adding more messages works.
65 $messenger = \Drupal::messenger();
66 $messenger->addStatus('Bar');
67 $messenger->addStatus('Bar', TRUE);
68 $messenger->addWarning('Fiz');
69 $messenger->addWarning('Fiz', TRUE);
71 // Restore the container.
72 \Drupal::setContainer($container);
74 // Verify that the Messenger service exists.
75 $messenger = \Drupal::messenger();
76 $this->assertInstanceOf(Messenger::class, $this->getMessengerService($messenger));
79 $messenger->addMessage('Platypus', 'custom');
80 $messenger->addMessage('Platypus', 'custom', TRUE);
81 $messenger->addError('Rhinoceros');
82 $messenger->addError('Rhinoceros', TRUE);
83 $messenger->addStatus('Giraffe');
84 $messenger->addStatus('Giraffe', TRUE);
85 $messenger->addWarning('Cheetah');
86 $messenger->addWarning('Cheetah', TRUE);
88 // Verify all messages added via LegacyMessenger are accounted for.
89 $messages = $messenger->all();
90 $this->assertContains('Foobar', $messages['custom']);
91 $this->assertContains('Foo', $messages[MessengerInterface::TYPE_ERROR]);
92 $this->assertContains('Bar', $messages[MessengerInterface::TYPE_STATUS]);
93 $this->assertContains('Fiz', $messages[MessengerInterface::TYPE_WARNING]);
95 // Verify all messages added via Messenger service are accounted for.
96 $this->assertContains('Platypus', $messages['custom']);
97 $this->assertContains('Rhinoceros', $messages[MessengerInterface::TYPE_ERROR]);
98 $this->assertContains('Giraffe', $messages[MessengerInterface::TYPE_STATUS]);
99 $this->assertContains('Cheetah', $messages[MessengerInterface::TYPE_WARNING]);
101 // Verify repeat counts.
102 $this->assertCount(4, $messages['custom']);
103 $this->assertCount(4, $messages[MessengerInterface::TYPE_STATUS]);
104 $this->assertCount(4, $messages[MessengerInterface::TYPE_WARNING]);
105 $this->assertCount(4, $messages[MessengerInterface::TYPE_ERROR]);