Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / tests / Drupal / FunctionalJavascriptTests / JavascriptGetDrupalSettingsTest.php
diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/JavascriptGetDrupalSettingsTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/JavascriptGetDrupalSettingsTest.php
new file mode 100644 (file)
index 0000000..72ab2e2
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\FunctionalJavascriptTests;
+
+/**
+ * Tests Drupal settings retrieval in JavascriptTestBase tests.
+ *
+ * @group javascript
+ */
+class JavascriptGetDrupalSettingsTest extends WebDriverTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected static $modules = ['test_page_test'];
+
+  /**
+   * Tests retrieval of Drupal settings.
+   *
+   * @see \Drupal\FunctionalJavascriptTests\WebDriverTestBase::getDrupalSettings()
+   */
+  public function testGetDrupalSettings() {
+    $this->drupalLogin($this->drupalCreateUser());
+    $this->drupalGet('test-page');
+
+    // Check that we can read the JS settings.
+    $js_settings = $this->getDrupalSettings();
+    $this->assertSame('azAZ09();.,\\\/-_{}', $js_settings['test-setting']);
+
+    // Dynamically change the setting using Javascript.
+    $script = <<<EndOfScript
+(function () {
+  drupalSettings['test-setting'] = 'foo';
+})();
+EndOfScript;
+
+    $this->getSession()->evaluateScript($script);
+
+    // Check that the setting has been changed.
+    $js_settings = $this->getDrupalSettings();
+    $this->assertSame('foo', $js_settings['test-setting']);
+  }
+
+}