abstract class SectionListTestBase in Drupal 10
Same name and namespace in other branches
- 9 core/modules/layout_builder/tests/src/Kernel/SectionListTestBase.php \Drupal\Tests\layout_builder\Kernel\SectionListTestBase
Provides a base class for testing implementations of a section list.
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, AssertContentTrait, ConfigTestTrait, ExtensionListTestTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings
- class \Drupal\KernelTests\Core\Entity\EntityKernelTestBase uses UserCreationTrait
- class \Drupal\Tests\layout_builder\Kernel\SectionListTestBase
- class \Drupal\KernelTests\Core\Entity\EntityKernelTestBase uses UserCreationTrait
Expanded class hierarchy of SectionListTestBase
File
- core/
modules/ layout_builder/ tests/ src/ Kernel/ SectionListTestBase.php, line 12
Namespace
Drupal\Tests\layout_builder\KernelView source
abstract class SectionListTestBase extends EntityKernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'layout_builder',
'layout_discovery',
'layout_test',
];
/**
* The section list implementation.
*
* @var \Drupal\layout_builder\SectionListInterface
*/
protected $sectionList;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$section_data = [
new Section('layout_test_plugin', [], [
'first-uuid' => new SectionComponent('first-uuid', 'content', [
'id' => 'foo',
]),
]),
new Section('layout_test_plugin', [
'setting_1' => 'bar',
], [
'second-uuid' => new SectionComponent('second-uuid', 'content', [
'id' => 'foo',
]),
]),
];
$this->sectionList = $this
->getSectionList($section_data);
}
/**
* Sets up the section list.
*
* @param array $section_data
* An array of section data.
*
* @return \Drupal\layout_builder\SectionListInterface
* The section list.
*/
protected abstract function getSectionList(array $section_data);
/**
* Tests ::getSections().
*/
public function testGetSections() {
$expected = [
new Section('layout_test_plugin', [
'setting_1' => 'Default',
], [
'first-uuid' => new SectionComponent('first-uuid', 'content', [
'id' => 'foo',
]),
]),
new Section('layout_test_plugin', [
'setting_1' => 'bar',
], [
'second-uuid' => new SectionComponent('second-uuid', 'content', [
'id' => 'foo',
]),
]),
];
$this
->assertSections($expected);
}
/**
* @covers ::getSection
*/
public function testGetSection() {
$this
->assertInstanceOf(Section::class, $this->sectionList
->getSection(0));
}
/**
* @covers ::getSection
*/
public function testGetSectionInvalidDelta() {
$this
->expectException(\OutOfBoundsException::class);
$this
->expectExceptionMessage('Invalid delta "2"');
$this->sectionList
->getSection(2);
}
/**
* @covers ::insertSection
*/
public function testInsertSection() {
$expected = [
new Section('layout_test_plugin', [
'setting_1' => 'Default',
], [
'first-uuid' => new SectionComponent('first-uuid', 'content', [
'id' => 'foo',
]),
]),
new Section('layout_onecol'),
new Section('layout_test_plugin', [
'setting_1' => 'bar',
], [
'second-uuid' => new SectionComponent('second-uuid', 'content', [
'id' => 'foo',
]),
]),
];
$this->sectionList
->insertSection(1, new Section('layout_onecol'));
$this
->assertSections($expected);
}
/**
* @covers ::appendSection
*/
public function testAppendSection() {
$expected = [
new Section('layout_test_plugin', [
'setting_1' => 'Default',
], [
'first-uuid' => new SectionComponent('first-uuid', 'content', [
'id' => 'foo',
]),
]),
new Section('layout_test_plugin', [
'setting_1' => 'bar',
], [
'second-uuid' => new SectionComponent('second-uuid', 'content', [
'id' => 'foo',
]),
]),
new Section('layout_onecol'),
];
$this->sectionList
->appendSection(new Section('layout_onecol'));
$this
->assertSections($expected);
}
/**
* @covers ::removeAllSections
*
* @dataProvider providerTestRemoveAllSections
*/
public function testRemoveAllSections($set_blank, $expected) {
if ($set_blank === NULL) {
$this->sectionList
->removeAllSections();
}
else {
$this->sectionList
->removeAllSections($set_blank);
}
$this
->assertSections($expected);
}
/**
* Provides test data for ::testRemoveAllSections().
*/
public function providerTestRemoveAllSections() {
$data = [];
$data[] = [
NULL,
[],
];
$data[] = [
FALSE,
[],
];
$data[] = [
TRUE,
[
new Section('layout_builder_blank'),
],
];
return $data;
}
/**
* @covers ::removeSection
*/
public function testRemoveSection() {
$expected = [
new Section('layout_test_plugin', [
'setting_1' => 'bar',
], [
'second-uuid' => new SectionComponent('second-uuid', 'content', [
'id' => 'foo',
]),
]),
];
$this->sectionList
->removeSection(0);
$this
->assertSections($expected);
}
/**
* @covers ::removeSection
*/
public function testRemoveMultipleSections() {
$expected = [
new Section('layout_builder_blank'),
];
$this->sectionList
->removeSection(0);
$this->sectionList
->removeSection(0);
$this
->assertSections($expected);
}
/**
* Tests __clone().
*/
public function testClone() {
$this
->assertSame([
'setting_1' => 'Default',
], $this->sectionList
->getSection(0)
->getLayoutSettings());
$new_section_storage = clone $this->sectionList;
$new_section_storage
->getSection(0)
->setLayoutSettings([
'asdf' => 'qwer',
]);
$this
->assertSame([
'setting_1' => 'Default',
], $this->sectionList
->getSection(0)
->getLayoutSettings());
}
/**
* Asserts that the field list has the expected sections.
*
* @param \Drupal\layout_builder\Section[] $expected
* The expected sections.
*/
protected function assertSections(array $expected) {
$result = $this->sectionList
->getSections();
$this
->assertEquals($expected, $result);
$this
->assertSame(array_keys($expected), array_keys($result));
}
}