You are here

public function ParagraphsTypesTest::testRemoveTypesWithContent in Paragraphs 8

Same name in this branch
  1. 8 tests/src/Functional/WidgetLegacy/ParagraphsTypesTest.php \Drupal\Tests\paragraphs\Functional\WidgetLegacy\ParagraphsTypesTest::testRemoveTypesWithContent()
  2. 8 tests/src/Functional/WidgetStable/ParagraphsTypesTest.php \Drupal\Tests\paragraphs\Functional\WidgetStable\ParagraphsTypesTest::testRemoveTypesWithContent()

Tests the deletion of Paragraphs types.

File

tests/src/Functional/WidgetStable/ParagraphsTypesTest.php, line 15

Class

ParagraphsTypesTest
Tests paragraphs types.

Namespace

Drupal\Tests\paragraphs\Functional\WidgetStable

Code

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));
}