Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / action / tests / src / Kernel / Plugin / Action / EmailActionTest.php
diff --git a/web/core/modules/action/tests/src/Kernel/Plugin/Action/EmailActionTest.php b/web/core/modules/action/tests/src/Kernel/Plugin/Action/EmailActionTest.php
new file mode 100644 (file)
index 0000000..a47f9b3
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\Tests\action\Kernel\Plugin\Action;
+
+use Drupal\Core\Test\AssertMailTrait;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests for the EmailAction plugin.
+ *
+ * @group action
+ */
+class EmailActionTest extends KernelTestBase {
+  use AssertMailTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system', 'user', 'action', 'dblog'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('user');
+    $this->installSchema('dblog', ['watchdog']);
+  }
+
+  /**
+   * Test the email action plugin.
+   */
+  public function testEmailAction() {
+    /** @var \Drupal\Core\Action\ActionManager $plugin_manager */
+    $plugin_manager = $this->container->get('plugin.manager.action');
+    $configuration = [
+      'recipient' => 'test@example.com',
+      'subject' => 'Test subject',
+      'message' => 'Test message',
+    ];
+    $plugin_manager
+      ->createInstance('action_send_email_action', $configuration)
+      ->execute();
+
+    $mails = $this->getMails();
+    $this->assertCount(1, $this->getMails());
+    $this->assertEquals('test@example.com', $mails[0]['to']);
+    $this->assertEquals('Test subject', $mails[0]['subject']);
+    $this->assertEquals("Test message\n", $mails[0]['body']);
+
+    // Ensure that the email sending is logged.
+    $log = \Drupal::database()
+      ->select('watchdog', 'w')
+      ->fields('w', ['message', 'variables'])
+      ->orderBy('wid', 'DESC')
+      ->range(0, 1)
+      ->execute()
+      ->fetch();
+
+    $this->assertEquals($log->message, 'Sent email to %recipient');
+    $variables = unserialize($log->variables);
+    $this->assertEquals($variables['%recipient'], 'test@example.com');
+  }
+
+}