installSchema('system', ['key_value_expire']); $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->sectionStorage = $this->getSectionStorage($section_data); } /** * Sets up the section storage entity. * * @param array $section_data * An array of section data. * * @return \Drupal\Core\Entity\EntityInterface * The entity. */ abstract protected function getSectionStorage(array $section_data); /** * @covers ::getSections */ public function testGetSections() { $expected = [ 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->assertSections($expected); } /** * @covers ::getSection */ public function testGetSection() { $this->assertInstanceOf(Section::class, $this->sectionStorage->getSection(0)); } /** * @covers ::getSection */ public function testGetSectionInvalidDelta() { $this->setExpectedException(\OutOfBoundsException::class, 'Invalid delta "2"'); $this->sectionStorage->getSection(2); } /** * @covers ::insertSection */ public function testInsertSection() { $expected = [ new Section('layout_test_plugin', [], [ 'first-uuid' => new SectionComponent('first-uuid', 'content', ['id' => 'foo']), ]), new Section('setting_1'), new Section('layout_test_plugin', ['setting_1' => 'bar'], [ 'second-uuid' => new SectionComponent('second-uuid', 'content', ['id' => 'foo']), ]), ]; $this->sectionStorage->insertSection(1, new Section('setting_1')); $this->assertSections($expected); } /** * @covers ::appendSection */ public function testAppendSection() { $expected = [ 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']), ]), new Section('foo'), ]; $this->sectionStorage->appendSection(new Section('foo')); $this->assertSections($expected); } /** * @covers ::removeSection */ public function testRemoveSection() { $expected = [ new Section('layout_test_plugin', ['setting_1' => 'bar'], [ 'second-uuid' => new SectionComponent('second-uuid', 'content', ['id' => 'foo']), ]), ]; $this->sectionStorage->removeSection(0); $this->assertSections($expected); } /** * 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->sectionStorage->getSections(); $this->assertEquals($expected, $result); $this->assertSame(array_keys($expected), array_keys($result)); } }