paragraphs-8.x-1.11/tests/src/Functional/WidgetStable/ParagraphsTypesTest.php
tests/src/Functional/WidgetStable/ParagraphsTypesTest.php
<?php namespace Drupal\Tests\paragraphs\Functional\WidgetStable; /** * Tests paragraphs types. * * @group paragraphs */ class ParagraphsTypesTest extends ParagraphsTestBase { /** * Tests the deletion of Paragraphs types. */ public function testRemoveTypesWithContent() { // Add a Paragraphed test content. $this->addParagraphedContentType('paragraphed_test', 'paragraphs'); $this->loginAsAdmin(['edit any paragraphed_test content']); $this->addParagraphsType('paragraph_type_test'); $this->addParagraphsType('text'); // Attempt to delete the content type not used yet. $this->drupalGet('admin/structure/paragraphs_type'); $this->clickLink('Delete'); $this->assertSession()->pageTextContains('This action cannot be undone.'); $this->clickLink('Cancel'); // Add a test node with a Paragraph. $this->drupalGet('node/add/paragraphed_test'); $this->submitForm([], 'paragraphs_paragraph_type_test_add_more'); $edit = ['title[0][value]' => 'test_node']; $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); $this->assertEquals(1, count($table_rows)); $this->submitForm($edit, 'Save'); $this->assertSession()->pageTextContains('paragraphed_test test_node has been created.'); // Attempt to delete the paragraph type already used. $this->drupalGet('admin/structure/paragraphs_type'); $this->clickLink('Delete'); $this->assertSession()->pageTextContains('paragraph_type_test Paragraphs type is used by 1 piece of content on your site. You can not remove this paragraph_type_test Paragraphs type until you have removed all from the content.'); // Delete all entities of that Paragraph type. $this->submitForm([], 'Delete existing Paragraph'); $this->assertSession()->pageTextContains('Entity is successfully deleted.'); $node = $this->drupalGetNodeByTitle('test_node'); $this->drupalGet('node/' . $node->id() . '/edit'); $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); $this->assertEquals(0, count($table_rows)); // @todo Remove this when https://www.drupal.org/node/2846549 is resolved. $this->submitForm($edit, 'Save'); $this->drupalGet('node/' . $node->id() . '/edit'); // Add two different Paragraphs to the node. $this->submitForm([], 'paragraphs_paragraph_type_test_add_more'); $this->submitForm([], 'paragraphs_text_add_more'); $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); $this->assertEquals(2, count($table_rows)); $this->submitForm([], 'Save'); // Attempt to delete the Paragraph type. $this->drupalGet('admin/structure/paragraphs_type'); $this->clickLink('Delete'); $this->assertSession()->pageTextContains('paragraph_type_test Paragraphs type is used by 1 piece of content on your site. You can not remove this paragraph_type_test Paragraphs type until you have removed all from the content.'); $this->submitForm([], 'Delete existing Paragraph'); $this->assertSession()->pageTextContains('Entity is successfully deleted.'); $this->submitForm([], 'Delete'); // Check that the Paragraph of the deleted type is removed and the rest // remains. $node = $this->drupalGetNodeByTitle('test_node'); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->pageTextNotContains('paragraph_type_test'); $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); $this->assertEquals(1, count($table_rows)); } /** * Tests creating paragraph type. */ public function testCreateParagraphType() { $this->loginAsAdmin(); // Add a paragraph type. $this->drupalGet('/admin/structure/paragraphs_type/add'); // Create a paragraph type with label and id more than 32 characters. $edit = [ 'label' => 'Test', 'id' => 'test_name_with_more_than_32_characters' ]; $this->submitForm($edit, 'Save and manage fields'); $this->assertSession()->pageTextContains('Machine-readable name cannot be longer than 32 characters but is currently 38 characters long.'); $edit['id'] = 'new_test_id'; $this->submitForm($edit, 'Save and manage fields'); $this->assertSession()->pageTextContains('Saved the Test Paragraphs type.'); } }