installEntitySchema('user'); $this->installEntitySchema('paragraph'); $this->installSchema('system', ['sequences']); \Drupal::moduleHandler()->loadInclude('paragraphs', 'install'); // Create a text paragraph type with test_text_color plugin enabled. $paragraph_type = ParagraphsType::create(array( 'label' => 'text_paragraph', 'id' => 'text_paragraph', 'behavior_plugins' => [ 'test_text_color' => [ 'enabled' => TRUE, ] ], )); $paragraph_type->save(); $this->addParagraphsField('text_paragraph', 'text', 'string'); // Add a nested Paragraph type. $paragraphs_type = ParagraphsType::create([ 'id' => 'nested_paragraph', 'label' => 'nested_paragraph', ]); $paragraphs_type->save(); $this->addParagraphsField('nested_paragraph', 'nested_paragraph_field', 'entity_reference_revisions', ['target_type' => 'paragraph']); } /** * Tests the collapsed summary additional options. */ public function testCollapsedSummaryOptions() { // Create a paragraph and set its feature settings. $paragraph = Paragraph::create([ 'type' => 'text_paragraph', 'text' => 'Example text for a text paragraph', ]); $feature_settings = [ 'test_text_color' => [ 'text_color' => 'red' ], ]; $paragraph->setAllBehaviorSettings($feature_settings); $paragraph->save(); // Load the paragraph and assert its stored feature settings. $paragraph = Paragraph::load($paragraph->id()); $this->assertEquals($paragraph->getAllBehaviorSettings(), $feature_settings); $this->assertEquals($paragraph->getSummary(), 'Example text for a text paragraph, Text color: red'); // Check the summary and the additional options. $paragraph_1 = Paragraph::create([ 'type' => 'nested_paragraph', 'nested_paragraph_field' => [$paragraph], ]); $paragraph_1->save(); $this->assertEquals($paragraph_1->getSummary(), '1 child, Example text for a text paragraph, Text color: red'); $this->assertEquals($paragraph_1->getSummary(['show_behavior_summary' => FALSE]), '1 child, Example text for a text paragraph'); $this->assertEquals($paragraph_1->getSummary(['depth_limit' => 0]), ''); } /** * Tests nested paragraph summary. */ public function testNestedParagraphSummary() { // Create a text paragraph. $paragraph_text_1 = Paragraph::create([ 'type' => 'text_paragraph', 'text' => 'Text paragraph on nested level', ]); $paragraph_text_1->save(); // Add a nested paragraph with the text inside. $paragraph_nested_1 = Paragraph::create([ 'type' => 'nested_paragraph', 'nested_paragraph_field' => [$paragraph_text_1], ]); $paragraph_nested_1->save(); // Create a new text paragraph. $paragraph_text_2 = Paragraph::create([ 'type' => 'text_paragraph', 'text' => 'Text paragraph on top level', ]); $paragraph_text_2->save(); // Add a nested paragraph with the new text and nested paragraph inside. $paragraph_nested_2 = Paragraph::create([ 'type' => 'nested_paragraph', 'nested_paragraph_field' => [$paragraph_text_2, $paragraph_nested_1], ]); $paragraph_nested_2->save(); $this->assertEquals($paragraph_nested_2->getSummary(['show_behavior_summary' => FALSE]), '2 children, Text paragraph on top level'); $this->assertEquals($paragraph_nested_2->getSummary(['show_behavior_summary' => FALSE, 'depth_limit' => 2]), '2 children, Text paragraph on top level, 1 child, Text paragraph on nested level'); } /** * Adds a field to a given paragraph type. * * @param string $paragraph_type_name * Paragraph type name to be used. * @param string $field_name * Paragraphs field name to be used. * @param string $field_type * Type of the field. * @param array $field_edit * Edit settings for the field. */ protected function addParagraphsField($paragraph_type_name, $field_name, $field_type, $field_edit = []) { // Add a paragraphs field. $field_storage = FieldStorageConfig::create([ 'field_name' => $field_name, 'entity_type' => 'paragraph', 'type' => $field_type, 'cardinality' => '-1', 'settings' => $field_edit ]); $field_storage->save(); $field = FieldConfig::create([ 'field_storage' => $field_storage, 'bundle' => $paragraph_type_name, 'settings' => [ 'handler' => 'default:paragraph', 'handler_settings' => ['target_bundles' => NULL], ], ]); $field->save(); } }