public function ParagraphsAccordionPluginTest::testCreatingAccordionContent

Test creating accordion content.

File

paragraphs_collection/modules/paragraphs_collection_demo/tests/src/Functional/ParagraphsAccordionPluginTest.php, line 46

Class

ParagraphsAccordionPluginTest
Tests Accordion plugin.

Namespace

Drupal\Tests\paragraphs_collection_demo\Functional

Code

public function testCreatingAccordionContent() {
  $this
    ->drupalGet('node/add/paragraphed_accordion_test');
  $this
    ->submitForm([], 'field_paragraphs_accordion_add_more');
  $this
    ->submitForm([], 'field_paragraphs_0_subform_paragraphs_accordion_paragraphs_accordion_content_add_more');
  $this
    ->submitForm([], 'field_paragraphs_0_subform_paragraphs_accordion_paragraphs_accordion_content_add_more');
  $this
    ->submitForm([], 'field_paragraphs_0_subform_paragraphs_accordion_paragraphs_accordion_content_add_more');
  $this
    ->submitForm([], 'field_paragraphs_0_subform_paragraphs_accordion_paragraphs_accordion_content_add_more');
  $edit = [
    'title[0][value]' => 'Accordion',
    'field_paragraphs[0][subform][paragraphs_accordion_paragraphs][0][subform][field_accordion_content][0][value]' => 'Title',
    'field_paragraphs[0][subform][paragraphs_accordion_paragraphs][1][subform][field_accordion_content][0][value]' => 'Body text.',
    'field_paragraphs[0][subform][paragraphs_accordion_paragraphs][2][subform][field_accordion_content][0][value]' => 'Second title',
    'field_paragraphs[0][subform][paragraphs_accordion_paragraphs][3][subform][field_accordion_content][0][value]' => 'Second Body text.',
  ];
  $this
    ->submitForm($edit, 'Save');
  $node = $this
    ->getNodeByTitle('Accordion');
  $this
    ->drupalGet('node/' . $node
    ->id());

  // Ensure expected markup for an accordion.
  $elements = $this
    ->xpath('//div[contains(@class, :accordion-class)]/div[contains(@class, :items-class)]', [
    ':accordion-class' => 'accordion',
    ':items-class' => 'field__items',
  ]);
  $this
    ->assertTrue(!empty($elements), 'The proper accordion markup was found.');
  $this
    ->drupalGet('admin/structure/paragraphs_type/accordion/fields/paragraph.accordion.paragraphs_accordion_paragraphs/delete');
  $this
    ->submitForm([], t('Delete'));
  $this
    ->assertSession()
    ->pageTextContains('The field Accordion has been deleted from the Accordion content type.');
  $node = $this
    ->getNodeByTitle('Accordion');
  $this
    ->drupalGet('node/' . $node
    ->id());
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $this
    ->drupalGet('admin/structure/paragraphs_type/accordion');
  $this
    ->assertSession()
    ->statusCodeEquals(200);
  $this
    ->submitForm([
    'behavior_plugins[accordion][enabled]' => TRUE,
  ], t('Save'));
  $this
    ->assertSession()
    ->responseContains('The Accordion plugin cannot be enabled if the accordion field is missing.');
}