test_support-1.0.x-dev/tests/src/Kernel/Installs/InstallsViewsTest.php
tests/src/Kernel/Installs/InstallsViewsTest.php
<?php
namespace Drupal\Tests\test_support\Kernel\Installs;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\test_support\Traits\Installs\InstallsViews;
use Drupal\views\Entity\View;
class InstallsViewsTest extends KernelTestBase
{
use InstallsViews;
protected $strictConfigSchema = false;
protected function setUp(): void
{
parent::setUp();
$this->setConfigDirectory(__DIR__ . '/__fixtures__/config/sync/views');
}
/** @test */
public function installing_view_sets_up_dependencies(): void
{
$this->assertFalse($this->container->get('module_handler')->moduleExists('views'));
$entityTypeDefinitions = $this->container->get('entity_type.manager')->getDefinitions();
$this->assertArrayNotHasKey('view', $entityTypeDefinitions);
$this->installViews('media');
$entityTypeDefinitions = $this->container->get('entity_type.manager')->getDefinitions();
$this->assertArrayHasKey('view', $entityTypeDefinitions);
$this->assertTrue($this->container->get('module_handler')->moduleExists('views'));
}
/** @test */
public function install_single_view(): void
{
$this->enableModules([
'system',
'user',
'views',
]);
$this->installEntitySchema('view');
$viewStorage = $this->container->get('entity_type.manager')->getStorage('view');
$this->assertEmpty($viewStorage->loadMultiple());
$this->installViews('media');
/** @var array<mixed> $views */
$views = $viewStorage->loadMultiple();
$this->assertNotEmpty($views);
$this->assertInstanceOf(View::class, $viewStorage->load('media'));
}
/** @test */
public function install_multiple_views(): void
{
$this->enableModules([
'system',
'user',
'views',
]);
$this->installEntitySchema('view');
$viewStorage = $this->container->get('entity_type.manager')->getStorage('view');
$this->assertEmpty($viewStorage->loadMultiple());
$this->installViews([
'media',
'redirect',
]);
$this->assertInstanceOf(View::class, $viewStorage->load('media'));
$this->assertInstanceOf(View::class, $viewStorage->load('redirect'));
}
}
