diff -u b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php --- b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php +++ b/src/Plugin/paragraphs/Behavior/ParagraphsStylePlugin.php @@ -261,7 +261,7 @@ // In case the current style is not set, fallback to the default style. // If default style is set to none, no style will be applied. $paragraph_styles = []; - if (isset($this->configuration['defaults'])) { + if (!empty($this->configuration['defaults'])) { foreach ($this->configuration['defaults'] as $key => $value) { $paragraph_styles[$key] = $paragraph->getBehaviorSetting($this->getPluginId(), $key, $this->configuration['defaults'][$key]); } diff -u b/src/Tests/ParagraphsStylePluginTest.php b/src/Tests/ParagraphsStylePluginTest.php --- b/src/Tests/ParagraphsStylePluginTest.php +++ b/src/Tests/ParagraphsStylePluginTest.php @@ -322,7 +322,7 @@ } /** - * Tests the style selection plugin settings and functionality. + * Tests the multiple style selection plugin settings and functionality. */ public function testMultipleGroups() { // Install Paragraph Collection Test in order to have styles. @@ -340,35 +340,6 @@ $this->addParagraphsType($paragraph_type); // Add a text field. $this->fieldUIAddExistingField('admin/structure/paragraphs_type/' . $paragraph_type, 'paragraphs_text', $paragraph_type); - $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); - $this->assertFieldByName('behavior_plugins[style][settings][groups][]'); - $this->assertFieldByName('behavior_plugins[style][settings][default]', ''); - $edit = [ - 'behavior_plugins[style][enabled]' => TRUE, - 'behavior_plugins[style][settings][groups][]' => [], - 'behavior_plugins[style][settings][default]' => '', - ]; - $this->drupalPostForm(NULL, $edit, t('Save')); - - // Create paragraphed content. - $this->drupalGet('node/add/paragraphed_test'); - $this->drupalPostAjaxForm(NULL, [], 'paragraphs_test_style_plugin_add_more'); - - // Check that a style without a style group is available. - $options = $this->xpath('//select[@name=:name]//option[normalize-space(text())=:text]', [ - ':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][style]', - ':text' => 'Groupless', - ]); - $this->assertTrue(isset($options[0]), 'Groupless style available.'); - - // Check that the style options are sorted alphabetically. - $styles = $this->xpath('//select[contains(@id, :id)]', [':id' => 'edit-paragraphs-0-behavior-plugins-style-style']); - $this->assertEqual('- Default -', $styles[0]->option[0]); - $this->assertEqual('Bold', $styles[0]->option[1]); - $this->assertEqual('Groupless', $styles[0]->option[2]); - $this->assertEqual('Italic', $styles[0]->option[3]); - $this->assertEqual('Regular', $styles[0]->option[4]); - $this->assertEqual('Underline', $styles[0]->option[5]); // Restrict the paragraphs type to the "Italic Test Group" style group. $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); @@ -382,10 +353,7 @@ 'behavior_plugins[style][settings][defaults][italic_test_group]' => 'italic', ]; $this->drupalPostForm(NULL, $edit, t('Save')); - - $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); - - // Check that the style without a style group is no longer available. + // Create a paragraphed test node and check the style classes. $this->drupalGet('node/add/paragraphed_test'); $this->drupalPostAjaxForm(NULL, [], 'paragraphs_test_style_plugin_add_more'); // Since Italic Group defines only two styles, assert that only they appear. @@ -400,7 +368,7 @@ $this->drupalPostForm(NULL, $edit, 'Save'); $this->assertRaw('paragraphs-behavior-style--italic'); - // Configure Regular as a default style. + // Configure two groups and set their defaults. $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); $edit = [ 'behavior_plugins[style][settings][groups][]' => ['Italic Test Group', 'Regular Test Group'], @@ -409,12 +377,12 @@ $edit = [ 'behavior_plugins[style][settings][groups][]' => ['Italic Test Group', 'Regular Test Group'], 'behavior_plugins[style][settings][defaults][regular_test_group]' => 'regular', + 'behavior_plugins[style][settings][defaults][italic_test_group]' => 'italic', ]; $this->drupalPostForm(NULL, $edit, t('Save')); - + // Check the selects elements for each enabled group and check the classes. $node = $this->getNodeByTitle('title_to_remember'); $this->drupalGet('node/' . $node->id() . '/edit'); - // Since Italic Group defines only two styles, assert that only they appear. $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]']); $this->assertEqual(2, count($styles[0]->option)); $this->assertEqual('- Regular -', $styles[0]->option[0]); @@ -423,26 +391,100 @@ $this->assertEqual(2, count($styles[0]->option)); $this->assertEqual('- Italic -', $styles[0]->option[0]); $this->assertEqual('Bold', $styles[0]->option[1]); + $this->drupalGet('node/' . $node->id()); + $this->assertRaw('paragraphs-behavior-style--italic'); + $this->assertRaw('paragraphs-behavior-style--regular'); + + // Configure Regular as a default style. + $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); + $edit = [ + 'behavior_plugins[style][settings][groups][]' => ['Regular Test Group'], + ]; + $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]'); $edit = [ - 'paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]' => 'bold', + 'behavior_plugins[style][settings][groups][]' => ['Regular Test Group'], + 'behavior_plugins[style][settings][defaults][regular_test_group]' => 'bold', ]; $this->drupalPostForm(NULL, $edit, t('Save')); + // Check that there is only one select and only one style class. + $this->drupalGet('node/' . $node->id() . '/edit'); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]']); + $this->assertEqual(2, count($styles[0]->option)); + $this->assertEqual('- Bold -', $styles[0]->option[0]); + $this->assertEqual('Regular', $styles[0]->option[1]); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]']); + $this->assertEqual([], $styles); + $this->drupalGet('node/' . $node->id()); + $this->assertNoRaw('paragraphs-behavior-style--italic'); + $this->assertRaw('paragraphs-behavior-style--bold'); + // Configure Regular as a default style. + $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); + $edit = [ + 'behavior_plugins[style][settings][groups][]' => ['Italic Test Group', 'Regular Test Group', 'Underline Test Group'], + ]; + $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]'); + $edit = [ + 'behavior_plugins[style][settings][groups][]' => ['Italic Test Group', 'Regular Test Group', 'Underline Test Group'], + 'behavior_plugins[style][settings][defaults][italic_test_group]' => 'italic', + 'behavior_plugins[style][settings][defaults][regular_test_group]' => 'regular', + 'behavior_plugins[style][settings][defaults][underline_test_group]' => 'underline', + ]; + $this->drupalPostForm(NULL, $edit, t('Save')); + // Check that there is only one select and only one style class. + $this->drupalGet('node/' . $node->id() . '/edit'); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]']); + $this->assertEqual(2, count($styles[0]->option)); + $this->assertEqual('- Regular -', $styles[0]->option[0]); + $this->assertEqual('Bold', $styles[0]->option[1]); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]']); + $this->assertEqual(2, count($styles[0]->option)); + $this->assertEqual('- Italic -', $styles[0]->option[0]); + $this->assertEqual('Bold', $styles[0]->option[1]); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][underline_test_group]']); + $this->assertEqual(2, count($styles[0]->option)); + $this->assertEqual('- Underline -', $styles[0]->option[0]); + $this->assertEqual('Bold', $styles[0]->option[1]); $this->drupalGet('node/' . $node->id()); + $this->assertRaw('paragraphs-behavior-style--italic'); $this->assertRaw('paragraphs-behavior-style--regular'); + $this->assertRaw('paragraphs-behavior-style--underline'); + + // Change a plugin. + $this->drupalGet('node/' . $node->id() . '/edit'); + $edit = [ + 'paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]' => 'bold' + ]; + $this->drupalPostForm(NULL, $edit, 'Save'); + $this->assertRaw('paragraphs-behavior-style--italic'); $this->assertRaw('paragraphs-behavior-style--bold'); + $this->assertRaw('paragraphs-behavior-style--underline'); - // Configure Regular as a default style. + // Configure no groups. $this->drupalGet('admin/structure/paragraphs_type/' . $paragraph_type); $edit = [ - 'behavior_plugins[style][settings][groups][]' => ['Regular Test Group'], + 'behavior_plugins[style][settings][groups][]' => [], ]; $this->drupalPostAjaxForm(NULL, $edit, 'behavior_plugins[style][settings][groups][]'); $edit = [ - 'behavior_plugins[style][settings][groups][]' => ['Regular Test Group'], - 'behavior_plugins[style][settings][defaults][regular_test_group]' => 'bold', + 'behavior_plugins[style][settings][groups][]' => [], ]; $this->drupalPostForm(NULL, $edit, t('Save')); + // Check that there is only one select and only one style class. + $this->drupalGet('node/' . $node->id() . '/edit'); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][regular_test_group]']); + $this->assertEqual([], $styles); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][italic_test_group]']); + $this->assertEqual([], $styles); + $styles = $this->xpath('//select[contains(@name, :name)]', [':name' => 'paragraphs[0][behavior_plugins][style][style_wrapper][underline_test_group]']); + $this->assertEqual([], $styles); + $edit = [ + 'paragraphs[0][behavior_plugins][style][style_wrapper][style]' => 'underline' + ]; + $this->drupalPostForm(NULL, $edit, 'Save'); + $this->assertNoRaw('paragraphs-behavior-style--italic'); + $this->assertNoRaw('paragraphs-behavior-style--bold'); + $this->assertRaw('paragraphs-behavior-style--underline'); } }