Version 1
[yaffs-website] / web / core / modules / views / tests / src / FunctionalJavascript / Plugin / views / Handler / FieldTest.php
diff --git a/web/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php b/web/core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php
new file mode 100644 (file)
index 0000000..76f0ff1
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+
+namespace Drupal\Tests\views\FunctionalJavascript\Plugin\views\Handler;
+
+use Drupal\Tests\SchemaCheckTestTrait;
+use Drupal\field\Entity\FieldConfig;
+use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
+use Drupal\node\Entity\NodeType;
+use Drupal\views\Tests\ViewTestData;
+
+/**
+ * Tests the field field handler UI.
+ *
+ * @group views
+ */
+class FieldTest extends JavascriptTestBase {
+  use SchemaCheckTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'views', 'views_ui', 'views_test_config'];
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = ['test_field_body'];
+
+  /**
+   * The account.
+   *
+   * @var \Drupal\user\UserInterface
+   */
+  protected $account;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    ViewTestData::createTestViews(get_class($this), ['views_test_config']);
+
+    // Disable automatic live preview to make the sequence of calls clearer.
+    \Drupal::configFactory()->getEditable('views.settings')->set('ui.always_live_preview', FALSE)->save();
+
+    $this->account = $this->drupalCreateUser(['administer views']);
+    $this->drupalLogin($this->account);
+
+    NodeType::create([
+      'type' => 'page',
+    ])->save();
+
+    FieldConfig::create([
+      'entity_type' => 'node',
+      'field_name' => 'body',
+      'bundle' => 'page',
+    ])->save();
+  }
+
+  public function testFormatterChanging() {
+    $web_assert = $this->assertSession();
+    $url = '/admin/structure/views/view/test_field_body';
+    $this->drupalGet($url);
+
+    $page = $this->getSession()->getPage();
+
+    $page->clickLink('Body field');
+    $web_assert->assertWaitOnAjaxRequest();
+
+    $page->fillField('options[type]', 'text_trimmed');
+    // Add a value to the trim_length setting.
+    $web_assert->assertWaitOnAjaxRequest();
+    $page->fillField('options[settings][trim_length]', '700');
+    $apply_button = $page->find('css', '.views-ui-dialog button.button--primary');
+    $this->assertTrue(!empty($apply_button));
+    $apply_button->press();
+    $web_assert->assertWaitOnAjaxRequest();
+
+    // Save the page.
+    $save_button = $page->find('css', '#edit-actions-submit');
+    $save_button->press();
+
+    // Set the body field back to 'default' and test that the trim_length
+    // settings are not in the config.
+    $this->drupalGet($url);
+    $page->clickLink('Body field');
+    $web_assert->assertWaitOnAjaxRequest();
+
+    $page->fillField('options[type]', 'text_default');
+    $web_assert->assertWaitOnAjaxRequest();
+    $apply_button = $page->find('css', '.views-ui-dialog button.button--primary');
+    $apply_button->press();
+    $web_assert->assertWaitOnAjaxRequest();
+
+    // Save the page.
+    $save_button = $page->find('css', '#edit-actions-submit');
+    $save_button->press();
+
+    $this->assertConfigSchemaByName('views.view.test_field_body');
+  }
+
+}