Chris@16
|
1 <?php
|
Chris@16
|
2
|
Chris@16
|
3 namespace Drupal\Tests\text\FunctionalJavascript;
|
Chris@16
|
4
|
Chris@16
|
5 use Drupal\field\Entity\FieldConfig;
|
Chris@17
|
6 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
|
Chris@16
|
7
|
Chris@16
|
8 /**
|
Chris@16
|
9 * Tests the JavaScript functionality of the text_textarea_with_summary widget.
|
Chris@16
|
10 *
|
Chris@16
|
11 * @group text
|
Chris@16
|
12 */
|
Chris@17
|
13 class TextareaWithSummaryTest extends WebDriverTestBase {
|
Chris@16
|
14
|
Chris@16
|
15 /**
|
Chris@16
|
16 * {@inheritdoc}
|
Chris@16
|
17 */
|
Chris@16
|
18 public static $modules = ['text', 'node'];
|
Chris@16
|
19
|
Chris@16
|
20 /**
|
Chris@16
|
21 * {@inheritdoc}
|
Chris@16
|
22 */
|
Chris@16
|
23 protected function setUp() {
|
Chris@16
|
24 parent::setUp();
|
Chris@16
|
25
|
Chris@16
|
26 $this->drupalCreateContentType(['type' => 'page']);
|
Chris@16
|
27
|
Chris@16
|
28 $account = $this->drupalCreateUser(['create page content', 'edit own page content']);
|
Chris@16
|
29 $this->drupalLogin($account);
|
Chris@16
|
30 }
|
Chris@16
|
31
|
Chris@16
|
32 /**
|
Chris@16
|
33 * Helper to test toggling the summary area.
|
Chris@16
|
34 */
|
Chris@16
|
35 protected function assertSummaryToggle() {
|
Chris@16
|
36 $this->drupalGet('node/add/page');
|
Chris@16
|
37 $widget = $this->getSession()->getPage()->findById('edit-body-wrapper');
|
Chris@16
|
38 $summary_field = $widget->findField('edit-body-0-summary');
|
Chris@16
|
39
|
Chris@16
|
40 $this->assertEquals(FALSE, $summary_field->isVisible(), 'Summary field is hidden by default.');
|
Chris@16
|
41 $this->assertEquals(FALSE, $widget->hasButton('Hide summary'), 'No Hide summary link by default.');
|
Chris@16
|
42
|
Chris@16
|
43 $widget->pressButton('Edit summary');
|
Chris@16
|
44 $this->assertEquals(FALSE, $widget->hasButton('Edit summary'), 'Edit summary link is removed after clicking.');
|
Chris@16
|
45 $this->assertEquals(TRUE, $summary_field->isVisible(), 'Summary field is shown.');
|
Chris@16
|
46
|
Chris@16
|
47 $widget->pressButton('Hide summary');
|
Chris@16
|
48 $this->assertEquals(FALSE, $widget->hasButton('Hide summary'), 'Hide summary link is removed after clicking.');
|
Chris@16
|
49 $this->assertEquals(FALSE, $summary_field->isVisible(), 'Summary field is hidden again.');
|
Chris@16
|
50 $this->assertEquals(TRUE, $widget->hasButton('Edit summary'), 'Edit summary link is visible again.');
|
Chris@16
|
51 }
|
Chris@16
|
52
|
Chris@16
|
53 /**
|
Chris@16
|
54 * Tests the textSummary javascript behavior.
|
Chris@16
|
55 */
|
Chris@16
|
56 public function testTextSummaryBehavior() {
|
Chris@16
|
57 // Test with field defaults.
|
Chris@16
|
58 $this->assertSummaryToggle();
|
Chris@16
|
59
|
Chris@16
|
60 // Repeat test with non-empty field description.
|
Chris@16
|
61 $body_field = FieldConfig::loadByName('node', 'page', 'body');
|
Chris@16
|
62 $body_field->set('description', 'Text with Summary field description.');
|
Chris@16
|
63 $body_field->save();
|
Chris@16
|
64
|
Chris@16
|
65 $this->assertSummaryToggle();
|
Chris@16
|
66
|
Chris@16
|
67 // Test summary is shown when non-empty.
|
Chris@16
|
68 $node = $this->createNode([
|
Chris@16
|
69 'body' => [
|
Chris@16
|
70 [
|
Chris@16
|
71 'value' => $this->randomMachineName(32),
|
Chris@16
|
72 'summary' => $this->randomMachineName(32),
|
Chris@16
|
73 'format' => filter_default_format(),
|
Chris@16
|
74 ],
|
Chris@16
|
75 ],
|
Chris@16
|
76 ]);
|
Chris@16
|
77
|
Chris@16
|
78 $this->drupalGet('node/' . $node->id() . '/edit');
|
Chris@16
|
79 $page = $this->getSession()->getPage();
|
Chris@16
|
80 $summary_field = $page->findField('edit-body-0-summary');
|
Chris@16
|
81
|
Chris@16
|
82 $this->assertEquals(TRUE, $summary_field->isVisible(), 'Non-empty summary field is shown by default.');
|
Chris@16
|
83 }
|
Chris@16
|
84
|
Chris@16
|
85 }
|