function LayoutEntityHelperTraitTest::providerSectionsWithInlineComponents

Same name in other branches
  1. 9 core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php \Drupal\Tests\layout_builder\Unit\LayoutEntityHelperTraitTest::providerSectionsWithInlineComponents()
  2. 8.9.x core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php \Drupal\Tests\layout_builder\Unit\LayoutEntityHelperTraitTest::providerSectionsWithInlineComponents()
  3. 11.x core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php \Drupal\Tests\layout_builder\Unit\LayoutEntityHelperTraitTest::providerSectionsWithInlineComponents()

Data provider method for tests that need sections with inline blocks.

File

core/modules/layout_builder/tests/src/Unit/LayoutEntityHelperTraitTest.php, line 26

Class

LayoutEntityHelperTraitTest
@coversDefaultClass \Drupal\layout_builder\LayoutEntityHelperTrait

Namespace

Drupal\Tests\layout_builder\Unit

Code

public static function providerSectionsWithInlineComponents() {
    $prophet = new Prophet();
    $components = [];
    // Ensure a non-derivative component is not returned.
    $non_derivative_component = $prophet->prophesize(SectionComponent::class);
    $non_derivative_component->getPlugin()
        ->willReturn($prophet->prophesize(PluginInspectionInterface::class)
        ->reveal());
    $components[] = $non_derivative_component->reveal();
    // Ensure a derivative component with a different base Id is not returned.
    $derivative_non_inline_component = $prophet->prophesize(SectionComponent::class);
    $plugin = $prophet->prophesize(DerivativeInspectionInterface::class);
    $plugin->getBaseId()
        ->willReturn('some_other_base_id_which_we_do_not_care_about_but_it_is_nothing_personal');
    $derivative_non_inline_component->getPlugin()
        ->willReturn($plugin);
    $components[] = $derivative_non_inline_component->reveal();
    // Ensure that inline block component is returned.
    $inline_component = $prophet->prophesize(SectionComponent::class);
    $inline_plugin = $prophet->prophesize(DerivativeInspectionInterface::class)
        ->willImplement(ConfigurableInterface::class);
    $inline_plugin->getBaseId()
        ->willReturn('inline_block');
    $inline_plugin->getConfiguration()
        ->willReturn([
        'block_revision_id' => 'the_revision_id',
    ]);
    $inline_component->getPlugin()
        ->willReturn($inline_plugin->reveal());
    $inline_component = $inline_component->reveal();
    $components[] = $inline_component;
    // Ensure that inline block component without revision is returned.
    $inline_component_without_revision_id = $prophet->prophesize(SectionComponent::class);
    $inline_plugin_without_revision_id = $prophet->prophesize(DerivativeInspectionInterface::class)
        ->willImplement(ConfigurableInterface::class);
    $inline_plugin_without_revision_id->getBaseId()
        ->willReturn('inline_block');
    $inline_plugin_without_revision_id->getConfiguration()
        ->willReturn([
        'other_key' => 'other_value',
    ]);
    $inline_component_without_revision_id->getPlugin()
        ->willReturn($inline_plugin_without_revision_id->reveal());
    $inline_component_without_revision_id = $inline_component_without_revision_id->reveal();
    $components[] = $inline_component_without_revision_id;
    $section = $prophet->prophesize(Section::class);
    $section->getComponents()
        ->willReturn($components);
    $components = [];
    // Ensure that inline block components in all sections are returned.
    $inline_component2 = $prophet->prophesize(SectionComponent::class);
    $inline_plugin2 = $prophet->prophesize(DerivativeInspectionInterface::class)
        ->willImplement(ConfigurableInterface::class);
    $inline_plugin2->getBaseId()
        ->willReturn('inline_block');
    $inline_plugin2->getConfiguration()
        ->willReturn([
        'block_revision_id' => 'the_other_revision_id',
    ]);
    $inline_component2->getPlugin()
        ->willReturn($inline_plugin2->reveal());
    $inline_component2 = $inline_component2->reveal();
    $components[] = $inline_component2;
    $section2 = $prophet->prophesize(Section::class);
    $section2->getComponents()
        ->willReturn($components);
    return [
        [
            [
                $section->reveal(),
                $section2->reveal(),
            ],
            // getInlineBlockComponents() should return inline blocks even if they
            // have no revision Id.
[
                $inline_component,
                $inline_component_without_revision_id,
                $inline_component2,
            ],
            // getInlineBlockRevisionIdsInSections should just the revision Ids.
[
                'the_revision_id',
                'the_other_revision_id',
            ],
        ],
    ];
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.