InstallUninstallTest.php in Lightning Media 8.3
File
modules/lightning_media_slideshow/tests/src/Functional/InstallUninstallTest.php
View source
<?php
namespace Drupal\Tests\lightning_media_slideshow\Functional;
use Drupal\block_content\Entity\BlockContent;
use Drupal\field\Entity\FieldConfig;
use Drupal\Tests\BrowserTestBase;
class InstallUninstallTest extends BrowserTestBase {
protected $defaultTheme = 'stark';
protected static $configSchemaCheckerExclusions = [
'core.entity_view_display.block_content.media_slideshow.default',
];
protected static $modules = [
'lightning_media_slideshow',
];
protected function setUp() {
parent::setUp();
$this->moduleInstaller = $this->container
->get('module_installer');
}
private $moduleInstaller;
public function testInstall() {
$this->moduleInstaller
->install([
'lightning_media_image',
]);
$this
->assertEquals([
'image',
], $this
->getAllowedMediaTypes());
$this->moduleInstaller
->install([
'lightning_media_document',
]);
$this
->assertEquals([
'document',
'image',
], $this
->getAllowedMediaTypes());
$this->moduleInstaller
->uninstall([
'lightning_media_image',
]);
$this
->assertEquals([
'document',
'image',
], $this
->getAllowedMediaTypes());
}
private function getAllowedMediaTypes() {
$handler_settings = FieldConfig::loadByName('block_content', 'media_slideshow', 'field_slideshow_items')
->getSetting('handler_settings');
$target_bundles = array_values($handler_settings['target_bundles']);
$this
->assertTrue(sort($target_bundles));
return $target_bundles;
}
public function testUninstall() {
$problems = $this->moduleInstaller
->validateUninstall([
'lightning_media_slideshow',
]);
$this
->assertEmpty($problems);
$slideshow_block = BlockContent::create([
'type' => 'media_slideshow',
'name' => $this
->randomString(),
]);
$slideshow_block
->save();
$problems = $this->moduleInstaller
->validateUninstall([
'lightning_media_slideshow',
]);
$this
->assertEquals([
'To uninstall Media Slideshow, you must delete all slideshow blocks first.',
], $problems['lightning_media_slideshow']);
$slideshow_block
->delete();
$problems = $this->moduleInstaller
->validateUninstall([
'lightning_media_slideshow',
]);
$this
->assertEmpty($problems);
$module_data = $this->container
->get('extension.list.module')
->reset()
->get('lightning_media_slideshow');
$this
->assertArrayNotHasKey('required', $module_data->info);
}
}