Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Messenger / MessengerLegacyTest.php
diff --git a/web/core/tests/Drupal/KernelTests/Core/Messenger/MessengerLegacyTest.php b/web/core/tests/Drupal/KernelTests/Core/Messenger/MessengerLegacyTest.php
new file mode 100644 (file)
index 0000000..2933464
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Messenger;
+
+use Drupal\Core\Messenger\LegacyMessenger;
+use Drupal\Core\Messenger\Messenger;
+use Drupal\Core\Messenger\MessengerInterface;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * @group Messenger
+ * @coversDefaultClass \Drupal\Core\Messenger\LegacyMessenger
+ *
+ * Note: The Symphony PHPUnit Bridge automatically treats any test class that
+ * starts with "Legacy" as a deprecation. To subvert that, reverse it here.
+ *
+ * @see http://symfony.com/blog/new-in-symfony-2-7-phpunit-bridge
+ * @see https://www.drupal.org/node/2931598#comment-12395743
+ */
+class MessengerLegacyTest extends KernelTestBase {
+
+  /**
+   * Retrieves the Messenger service from LegacyMessenger.
+   *
+   * @param \Drupal\Core\Messenger\LegacyMessenger $legacy_messenger
+   *   The legacy messenger.
+   *
+   * @return \Drupal\Core\Messenger\MessengerInterface|null
+   *   A messenger implementation.
+   */
+  protected function getMessengerService(LegacyMessenger $legacy_messenger) {
+    $method = new \ReflectionMethod($legacy_messenger, 'getMessengerService');
+    $method->setAccessible(TRUE);
+    return $method->invoke($legacy_messenger);
+  }
+
+  /**
+   * @covers \Drupal::messenger
+   * @covers ::getMessengerService
+   * @covers ::all
+   * @covers ::addMessage
+   * @covers ::addError
+   * @covers ::addStatus
+   * @covers ::addWarning
+   */
+  public function testMessages() {
+    // Save the current container for later use.
+    $container = \Drupal::getContainer();
+
+    // Unset the container to mimic not having one.
+    \Drupal::unsetContainer();
+
+    /** @var \Drupal\Core\Messenger\LegacyMessenger $messenger */
+    // Verify that the Messenger service doesn't exists.
+    $messenger = \Drupal::messenger();
+    $this->assertNull($this->getMessengerService($messenger));
+
+    // Add messages.
+    $messenger->addMessage('Foobar', 'custom');
+    $messenger->addMessage('Foobar', 'custom', TRUE);
+    $messenger->addError('Foo');
+    $messenger->addError('Foo', TRUE);
+
+    // Verify that retrieving another instance and adding more messages works.
+    $messenger = \Drupal::messenger();
+    $messenger->addStatus('Bar');
+    $messenger->addStatus('Bar', TRUE);
+    $messenger->addWarning('Fiz');
+    $messenger->addWarning('Fiz', TRUE);
+
+    // Restore the container.
+    \Drupal::setContainer($container);
+
+    // Verify that the Messenger service exists.
+    $messenger = \Drupal::messenger();
+    $this->assertInstanceOf(Messenger::class, $this->getMessengerService($messenger));
+
+    // Add more messages.
+    $messenger->addMessage('Platypus', 'custom');
+    $messenger->addMessage('Platypus', 'custom', TRUE);
+    $messenger->addError('Rhinoceros');
+    $messenger->addError('Rhinoceros', TRUE);
+    $messenger->addStatus('Giraffe');
+    $messenger->addStatus('Giraffe', TRUE);
+    $messenger->addWarning('Cheetah');
+    $messenger->addWarning('Cheetah', TRUE);
+
+    // Verify all messages added via LegacyMessenger are accounted for.
+    $messages = $messenger->all();
+    $this->assertContains('Foobar', $messages['custom']);
+    $this->assertContains('Foo', $messages[MessengerInterface::TYPE_ERROR]);
+    $this->assertContains('Bar', $messages[MessengerInterface::TYPE_STATUS]);
+    $this->assertContains('Fiz', $messages[MessengerInterface::TYPE_WARNING]);
+
+    // Verify all messages added via Messenger service are accounted for.
+    $this->assertContains('Platypus', $messages['custom']);
+    $this->assertContains('Rhinoceros', $messages[MessengerInterface::TYPE_ERROR]);
+    $this->assertContains('Giraffe', $messages[MessengerInterface::TYPE_STATUS]);
+    $this->assertContains('Cheetah', $messages[MessengerInterface::TYPE_WARNING]);
+
+    // Verify repeat counts.
+    $this->assertCount(4, $messages['custom']);
+    $this->assertCount(4, $messages[MessengerInterface::TYPE_STATUS]);
+    $this->assertCount(4, $messages[MessengerInterface::TYPE_WARNING]);
+    $this->assertCount(4, $messages[MessengerInterface::TYPE_ERROR]);
+  }
+
+}