29334647db175319cc1dd9e8d5d8da3539ea9921
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Messenger / MessengerLegacyTest.php
1 <?php
2
3 namespace Drupal\KernelTests\Core\Messenger;
4
5 use Drupal\Core\Messenger\LegacyMessenger;
6 use Drupal\Core\Messenger\Messenger;
7 use Drupal\Core\Messenger\MessengerInterface;
8 use Drupal\KernelTests\KernelTestBase;
9
10 /**
11  * @group Messenger
12  * @coversDefaultClass \Drupal\Core\Messenger\LegacyMessenger
13  *
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.
16  *
17  * @see http://symfony.com/blog/new-in-symfony-2-7-phpunit-bridge
18  * @see https://www.drupal.org/node/2931598#comment-12395743
19  */
20 class MessengerLegacyTest extends KernelTestBase {
21
22   /**
23    * Retrieves the Messenger service from LegacyMessenger.
24    *
25    * @param \Drupal\Core\Messenger\LegacyMessenger $legacy_messenger
26    *   The legacy messenger.
27    *
28    * @return \Drupal\Core\Messenger\MessengerInterface|null
29    *   A messenger implementation.
30    */
31   protected function getMessengerService(LegacyMessenger $legacy_messenger) {
32     $method = new \ReflectionMethod($legacy_messenger, 'getMessengerService');
33     $method->setAccessible(TRUE);
34     return $method->invoke($legacy_messenger);
35   }
36
37   /**
38    * @covers \Drupal::messenger
39    * @covers ::getMessengerService
40    * @covers ::all
41    * @covers ::addMessage
42    * @covers ::addError
43    * @covers ::addStatus
44    * @covers ::addWarning
45    */
46   public function testMessages() {
47     // Save the current container for later use.
48     $container = \Drupal::getContainer();
49
50     // Unset the container to mimic not having one.
51     \Drupal::unsetContainer();
52
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));
57
58     // Add messages.
59     $messenger->addMessage('Foobar', 'custom');
60     $messenger->addMessage('Foobar', 'custom', TRUE);
61     $messenger->addError('Foo');
62     $messenger->addError('Foo', TRUE);
63
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);
70
71     // Restore the container.
72     \Drupal::setContainer($container);
73
74     // Verify that the Messenger service exists.
75     $messenger = \Drupal::messenger();
76     $this->assertInstanceOf(Messenger::class, $this->getMessengerService($messenger));
77
78     // Add more messages.
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);
87
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]);
94
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]);
100
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]);
106   }
107
108 }