X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fparagraphs%2Fsrc%2FTests%2FExperimental%2FParagraphsExperimentalHeaderActionsTest.php;fp=web%2Fmodules%2Fcontrib%2Fparagraphs%2Fsrc%2FTests%2FExperimental%2FParagraphsExperimentalHeaderActionsTest.php;h=df1ddcd35c0f707b3c887f4ef6f2270d945b4c28;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/web/modules/contrib/paragraphs/src/Tests/Experimental/ParagraphsExperimentalHeaderActionsTest.php b/web/modules/contrib/paragraphs/src/Tests/Experimental/ParagraphsExperimentalHeaderActionsTest.php new file mode 100644 index 000000000..df1ddcd35 --- /dev/null +++ b/web/modules/contrib/paragraphs/src/Tests/Experimental/ParagraphsExperimentalHeaderActionsTest.php @@ -0,0 +1,256 @@ +set('paragraphs_test_dragdrop_force_show', TRUE); + + $this->addParagraphedContentType('paragraphed_test'); + + $this->loginAsAdmin([ + 'create paragraphed_test content', + 'edit any paragraphed_test content', + ]); + + // Add a Paragraph type. + $paragraph_type = 'text_paragraph'; + $this->addParagraphsType($paragraph_type); + + // Add a text field to the text_paragraph type. + static::fieldUIAddNewField( + 'admin/structure/paragraphs_type/' . $paragraph_type, + 'text', + 'Text', + 'text_long', + [], + [] + ); + + // Add 2 paragraphs and check for Collapse/Edit all button. + $this->drupalGet('node/add/paragraphed_test'); + $this->assertNoRaw('field_paragraphs_collapse_all'); + $this->assertNoRaw('field_paragraphs_edit_all'); + $this->assertRaw('field_paragraphs_dragdrop_mode'); + + // Ensure there is only a single table row. + $table_rows = $this->xpath('//table[contains(@class, :class)]/tbody/tr', [':class' => 'field-multiple-table']); + $this->assertEqual(1, count($table_rows)); + + // Add second paragraph and check for Collapse/Edit all button. + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); + $this->assertRaw('field_paragraphs_collapse_all'); + $this->assertRaw('field_paragraphs_edit_all'); + + $edit = [ + 'field_paragraphs[0][subform][field_text][0][value]' => 'First text', + 'field_paragraphs[1][subform][field_text][0][value]' => 'Second text', + ]; + $this->drupalPostForm(NULL, $edit, 'Collapse all'); + + // Checks that after collapsing all we can edit again these paragraphs. + $this->assertRaw('field_paragraphs_0_edit'); + $this->assertRaw('field_paragraphs_1_edit'); + + // Test Edit all button. + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); + $this->assertRaw('field_paragraphs_0_collapse'); + $this->assertRaw('field_paragraphs_1_collapse'); + + $edit = [ + 'title[0][value]' => 'Test', + ]; + $this->drupalPostForm(NULL, $edit, t('Save')); + $this->assertText('paragraphed_test Test has been created.'); + + $node = $this->getNodeByTitle('Test'); + $this->drupalGet('node/' . $node->id()); + $this->clickLink('Edit'); + $this->assertNoText('No Paragraph added yet.'); + + // Add and remove another paragraph. + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); + $edit = [ + 'field_paragraphs[2][subform][field_text][0][value]' => 'Third text', + ]; + $this->drupalPostAjaxForm(NULL, $edit, 'field_paragraphs_2_remove'); + + // Check that pressing "Collapse all" does not restore the removed + // paragraph. + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); + $this->assertText('First text'); + $this->assertText('Second text'); + $this->assertNoText('Third text'); + + // Check that pressing "Edit all" does not restore the removed paragraph, + // either. + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_collapse_all'); + $this->assertText('First text'); + $this->assertText('Second text'); + $this->assertNoText('Third text'); + } + + /** + * Tests that header actions works fine with nesting. + */ + public function testHeaderActionsWithNesting() { + $this->addParagraphedContentType('paragraphed_test'); + + $this->loginAsAdmin([ + 'create paragraphed_test content', + 'edit any paragraphed_test content', + ]); + + // Add Paragraph types. + $nested_paragraph_type = 'nested_paragraph'; + $this->addParagraphsType($nested_paragraph_type); + $paragraph_type = 'text'; + $this->addParagraphsType($paragraph_type); + + // Add a text field to the text_paragraph type. + static::fieldUIAddNewField( + 'admin/structure/paragraphs_type/' . $paragraph_type, + 'text', + 'Text', + 'text_long', + [], + [] + ); + + // Add a ERR paragraph field to the nested_paragraph type. + static::fieldUIAddNewField( + 'admin/structure/paragraphs_type/' . $nested_paragraph_type, + 'nested', + 'Nested', + 'field_ui:entity_reference_revisions:paragraph', [ + 'settings[target_type]' => 'paragraph', + 'cardinality' => '-1', + ], + [] + ); + + // Checks that Collapse/Edit all button is presented. + $this->drupalGet('node/add/paragraphed_test'); + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_nested_paragraph_add_more'); + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_add_more'); + $this->assertRaw('field_paragraphs_collapse_all'); + $this->assertRaw('field_paragraphs_edit_all'); + + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_add_more'); + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_0_subform_field_nested_text_add_more'); + $this->assertNoRaw('field_paragraphs_0_collapse_all'); + $this->assertNoRaw('field_paragraphs_0_edit_all'); + $edit = [ + 'field_paragraphs[0][subform][field_nested][0][subform][field_text][0][value]' => 'Nested text', + 'field_paragraphs[1][subform][field_text][0][value]' => 'Second text paragraph', + ]; + $this->drupalPostForm(NULL, $edit, 'Collapse all'); + $this->assertRaw('field-paragraphs-0-edit'); + $this->assertFieldByXPath((new CssSelectorConverter())->toXPath('[name="field_paragraphs_1_edit"] + .paragraphs-dropdown')); + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_edit_all'); + $this->assertRaw('field-paragraphs-0-collapse'); + + $edit = [ + 'title[0][value]' => 'Test', + ]; + $this->drupalPostForm(NULL, $edit, t('Save')); + $this->assertText('paragraphed_test Test has been created.'); + + $node = $this->getNodeByTitle('Test'); + $this->drupalGet('node/' . $node->id()); + $this->clickLink('Edit'); + $this->assertNoText('No Paragraph added yet.'); + } + + /** + * Tests header actions with multi fields. + */ + public function testHeaderActionsWithMultiFields() { + $this->addParagraphedContentType('paragraphed_test'); + $this->loginAsAdmin([ + 'create paragraphed_test content', + 'edit any paragraphed_test content', + ]); + $this->drupalGet('/admin/structure/types/manage/paragraphed_test/fields/add-field'); + + // Add a Paragraph type. + $paragraph_type = 'text_paragraph'; + $this->addParagraphsType($paragraph_type); + $edit = [ + 'new_storage_type' => 'field_ui:entity_reference_revisions:paragraph', + 'label' => 'Second paragraph', + 'field_name' => 'second', + ]; + $this->drupalPostForm(NULL, $edit, 'Save and continue'); + $this->drupalPostForm(NULL, [], 'Save field settings'); + $this->drupalPostForm(NULL, [], 'Save settings'); + + $this->drupalGet('/admin/structure/types/manage/paragraphed_test/form-display'); + $edit = [ + 'fields[field_second][type]' => 'paragraphs', + ]; + $this->drupalPostForm(NULL, $edit, 'Save'); + + // Add a text field to the text_paragraph type. + static::fieldUIAddNewField( + 'admin/structure/paragraphs_type/' . $paragraph_type, + 'text', + 'Text', + 'text_long', + [], + [] + ); + + $this->drupalGet('node/add/paragraphed_test'); + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_text_paragraph_add_more'); + $this->drupalPostAjaxForm(NULL, [], 'field_second_text_paragraph_add_more'); + + // Checks that we have Collapse\Edit all for each field. + $this->assertRaw('field_paragraphs_collapse_all'); + $this->assertRaw('field_paragraphs_edit_all'); + $this->assertRaw('field_second_collapse_all'); + $this->assertRaw('field_second_edit_all'); + + $edit = [ + 'field_second[0][subform][field_text][0][value]' => 'Second field', + ]; + $this->drupalPostAjaxForm(NULL, $edit, 'field_second_collapse_all'); + + // Checks that we collapsed only children from second field. + $this->assertNoRaw('field_paragraphs_0_edit'); + $this->assertRaw('field_second_0_edit'); + + $this->drupalPostAjaxForm(NULL, [], 'field_paragraphs_collapse_all'); + $this->assertRaw('field_paragraphs_0_edit'); + $this->assertRaw('field_second_0_edit'); + + $this->drupalPostAjaxForm(NULL, [], 'field_second_edit_all'); + $this->assertRaw('field_second_0_collapse'); + + $edit = [ + 'title[0][value]' => 'Test', + ]; + $this->drupalPostForm(NULL, $edit, t('Save')); + $this->assertText('paragraphed_test Test has been created.'); + + $node = $this->getNodeByTitle('Test'); + $this->drupalGet('node/' . $node->id()); + $this->clickLink('Edit'); + $this->assertNoText('No Paragraph added yet.'); + } + +}