paragraphs-8.x-1.11/tests/src/Functional/ParagraphsUiTest.php
tests/src/Functional/ParagraphsUiTest.php
<?php namespace Drupal\Tests\paragraphs\Functional; use Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTestBase; /** * Tests the Paragraphs user interface. * * @group paragraphs */ class ParagraphsUiTest extends ParagraphsTestBase { /** * Modules to enable. * * @var string[] */ protected static $modules = [ 'node', 'paragraphs', 'field', 'field_ui', 'block', ]; /** * Tests if the paragraph type class is present when added. */ public function testParagraphTypeClass() { $this->loginAsAdmin(); // Add a Paragraphed test content. $this->addParagraphedContentType('paragraphed_test', 'paragraphs'); $this->addParagraphsType('test_paragraph'); $this->addParagraphsType('text'); // Add paragraphs to a node and check if their type is present as a class. $this->drupalGet('node/add/paragraphed_test'); $this->getSession()->getPage()->findButton('paragraphs_test_paragraph_add_more')->press(); $this->assertSession()->responseContains('paragraph-type--test-paragraph'); $this->getSession()->getPage()->findButton('paragraphs_text_add_more')->press(); $this->assertSession()->responseContains('paragraph-type--text'); $this->getSession()->getPage()->findButton('paragraphs_0_remove')->press(); $this->assertSession()->responseContains('paragraph-type--text'); } /** * Test paragraphs summary with markup text. */ public function testSummary() { $this->addParagraphedContentType('paragraphed_test', 'paragraphs'); $this->addParagraphsType('text'); $this->addFieldtoParagraphType('text', 'field_text_demo', 'text'); $this->loginAsAdmin(['edit any paragraphed_test content']); $settings = [ 'edit_mode' => 'closed', 'closed_mode' => 'summary', ]; $this->setParagraphsWidgetSettings('paragraphed_test', 'paragraphs', $settings, 'paragraphs'); // Create a node and add a paragraph. $this->drupalGet('node/add/paragraphed_test'); $this->getSession()->getPage()->findButton('paragraphs_text_add_more')->press(); $edit = [ 'title[0][value]' => 'Llama test', 'paragraphs[0][subform][field_text_demo][0][value]' => '<iframe src="https://www.llamatest.neck"></iframe>', ]; $this->submitForm($edit, 'Save'); $this->assertSession()->pageTextContains('paragraphed_test Llama test has been created.'); // Assert that the summary contains the html text. $node = $this->getNodeByTitle('Llama test'); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->pageTextContains('<iframe src="https://www.llamatest.neck'); $this->assertSession()->responseContains('class="paragraphs-description paragraphs-collapsed-description"><div class="paragraphs-content-wrapper"><span class="summary-content"><iframe src='); // Assert that the summary keeps showing html even with longer html. $this->getSession()->getPage()->pressButton('paragraphs_0_edit'); $edit = [ 'paragraphs[0][subform][field_text_demo][0][value]' => '<iframe src="https://www.llamatest.neck" class="this-is-a-pretty-long-class-that-needs-to-be-really-long-for-testing-purposes-so-we-have-a-better-summary-test-and-it-has-exactly-144-characters"></iframe>', ]; $this->submitForm($edit, 'Save'); $this->assertSession()->pageTextContains('paragraphed_test Llama test has been updated.'); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->pageTextContains('<iframe src="https://www.llamatest.neck" class="this-is-a-pretty-long-class-that-needs-to-be-really-long-for-testing-purposes-so-we-'); $this->assertSession()->responseContains('class="paragraphs-description paragraphs-collapsed-description"><div class="paragraphs-content-wrapper"><span class="summary-content"><iframe src='); // Asset that the summary does not display markup even when we have long // html. $this->getSession()->getPage()->pressButton('paragraphs_0_edit'); $edit = [ 'paragraphs[0][subform][field_text_demo][0][value]' => '<iframe src="https://www.llamatest.neck" class="this-is-a-pretty-long-class-that-needs-to-be-really-long-for-testing-purposes-so-we-have-a-better-summary-test-and-it-has-exactly-144-characters"></iframe><h1>This is a title</h1>', ]; $this->submitForm($edit, 'Save'); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->responseContains('class="paragraphs-description paragraphs-collapsed-description"><div class="paragraphs-content-wrapper"><span class="summary-content">This is a title'); } /** * Test the default paragraphs widget used. */ public function testDefaultWidget() { $this->loginAsAdmin(); // Create a new content type. $this->drupalGet('admin/structure/types/add'); $this->submitForm([ 'name' => 'Test', 'type' => 'test', ], 'Save and manage fields'); // Add a new paragraphs field to the content type. $this->clickLink('Create a new field'); $this->getSession()->getPage()->fillField('new_storage_type', 'field_ui:entity_reference_revisions:paragraph'); if ($this->coreVersion('10.3')) { $this->getSession()->getPage()->pressButton('Continue'); } $edit = [ 'label' => 'Paragraph', 'field_name' => 'paragraph', ]; $this->submitForm($edit, 'Continue'); $this->submitForm([], 'Save settings'); // Visit the "Manage form display" page of the new content type. $this->drupalGet('admin/structure/types/manage/test/form-display'); // The selected widget should be "paragraphs". $this->assertSession()->fieldValueEquals('fields[field_paragraph][type]', 'paragraphs'); } }