public function ParagraphsGridLayoutPluginTest::testGridLayoutPlugin in Paragraphs Collection 8
Tests the grid layout plugin settings and functionality.
File
- tests/
src/ Functional/ ParagraphsGridLayoutPluginTest.php, line 26
Class
- ParagraphsGridLayoutPluginTest
- Tests the grid layout plugin.
Namespace
Drupal\Tests\paragraphs_collection\FunctionalCode
public function testGridLayoutPlugin() {
$this
->loginAsAdmin([
'edit behavior plugin settings',
]);
// Paragraph types add form.
$this
->drupalGet('admin/structure/paragraphs_type/add');
$this
->assertText('Grid layout');
// Paragraph type edit form.
$this
->drupalGet('admin/structure/paragraphs_type/grid');
$this
->assertFieldChecked('edit-behavior-plugins-grid-layout-enabled');
$this
->assertText('Grid field');
$this
->assertOptionSelected('edit-behavior-plugins-grid-layout-settings-paragraph-reference-field', 'paragraphs_container_paragraphs');
$this
->assertText('Grid layouts');
$this
->assertText('Two columns');
// Test that entity reference field is also an option if cardinality is
// greater than 1.
static::fieldUIAddNewField('admin/structure/paragraphs_type/grid', 'user_reference', 'User', 'entity_reference', [
'settings[target_type]' => 'user',
], []);
$this
->drupalGet('admin/structure/paragraphs_type/grid');
$this
->assertNoOption('edit-behavior-plugins-grid-layout-settings-paragraph-reference-field', 'field_user_reference');
$this
->drupalGet('admin/structure/paragraphs_type/grid/fields/paragraph.grid.field_user_reference/storage');
$edit = [
'cardinality' => '-1',
];
$this
->drupalPostForm(NULL, $edit, t('Save field settings'));
$this
->drupalGet('admin/structure/paragraphs_type/grid');
$this
->assertOption('edit-behavior-plugins-grid-layout-settings-paragraph-reference-field', 'field_user_reference');
$this
->drupalPostForm('admin/structure/paragraphs_type/grid/fields/paragraph.grid.field_user_reference/delete', [], t('Delete'));
$this
->assertText('The field User has been deleted from the Grid content type.');
// Node creation.
$this
->addParagraphedContentType('paragraphed_test', 'paragraphs_container');
$this
->drupalGet('node/add/paragraphed_test');
$this
->drupalPostForm(NULL, [], 'paragraphs_container_grid_add_more');
// Check that the grid layout options are sorted alphabetically.
$options = $this
->xpath('//select[contains(@id, :id)]/option', [
':id' => 'edit-paragraphs-container-0-behavior-plugins-grid-layout-layout',
]);
$this
->assertEquals('- None -', $options[0]
->getText());
$this
->assertEquals('Three columns', $options[1]
->getText());
$this
->assertEquals('Two columns', $options[2]
->getText());
// Create a grid of paragraphs.
$this
->drupalPostForm(NULL, [], 'paragraphs_container_0_subform_paragraphs_container_paragraphs_container_add_more');
$this
->drupalPostForm(NULL, [], 'paragraphs_container_0_subform_paragraphs_container_paragraphs_container_add_more');
$this
->drupalPostForm(NULL, [], 'paragraphs_container_0_subform_paragraphs_container_paragraphs_container_add_more');
$edit = [
'title[0][value]' => 'Grid',
'paragraphs_container[0][behavior_plugins][grid_layout][layout_wrapper][layout]' => 'paragraphs_collection_test_two_column',
];
$this
->drupalPostForm(NULL, $edit, 'Save');
$this
->assertText('paragraphed_test Grid has been created.');
$this
->assertRaw('paragraphs_collection_test/css/grid-layout.css');
$this
->drupalGet('node/1');
// We ship with the grid container label hidden, so we don't have the
// field__items wrapper.
$grid_columns[] = '//div[contains(@class, "paragraphs-behavior-grid-layout-row")]/div[1][contains(@class, "paragraphs-behavior-grid-layout-col-8")]';
$grid_columns[] = '//div[contains(@class, "paragraphs-behavior-grid-layout-row")]/div[2][contains(@class, "paragraphs-behavior-grid-layout-col-4")]';
$grid_columns[] = '//div[contains(@class, "paragraphs-behavior-grid-layout-row")]/div[3][contains(@class, "paragraphs-behavior-grid-layout-col-8")]';
foreach ($grid_columns as $key => $column) {
$this
->assertFieldByXPath($column, NULL, "Grid structure found for column {$key}");
}
$this
->drupalPostForm('admin/structure/paragraphs_type/grid/fields/paragraph.grid.paragraphs_container_paragraphs/delete', [], t('Delete'));
$this
->assertText('The field Paragraphs has been deleted from the Grid content type.');
$node = $this
->getNodeByTitle('Grid');
$this
->drupalGet('node/' . $node
->id());
$this
->assertResponse(200);
$this
->drupalGet('admin/structure/paragraphs_type/grid');
$this
->assertResponse(200);
$this
->assertText('No paragraph reference field type available. Please add at least one in the Manage fields page.');
$this
->drupalPostForm(NULL, [
'behavior_plugins[grid_layout][enabled]' => TRUE,
], t('Save'));
$this
->assertText('The grid layout plugin cannot be enabled if the paragraph reference field is missing.');
}