class ThemeEventTest in Hook Event Dispatcher 8
Class ThemeEventTest.
@package Drupal\Tests\hook_event_dispatcher\Unit\Theme
@group hook_event_dispatcher
Hierarchy
- class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses PhpunitCompatibilityTrait
- class \Drupal\Tests\hook_event_dispatcher\Unit\Theme\ThemeEventTest
Expanded class hierarchy of ThemeEventTest
File
- tests/
src/ Unit/ Theme/ ThemeEventTest.php, line 19
Namespace
Drupal\Tests\hook_event_dispatcher\Unit\ThemeView source
class ThemeEventTest extends UnitTestCase {
/**
* The manager.
*
* @var \Drupal\Tests\hook_event_dispatcher\Unit\HookEventDispatcherManagerSpy
*/
private $manager;
/**
* Sets up the test.
*/
public function setUp() {
$builder = new ContainerBuilder();
$this->manager = new HookEventDispatcherManagerSpy();
$builder
->set('hook_event_dispatcher.manager', $this->manager);
$builder
->compile();
Drupal::setContainer($builder);
}
/**
* ThemeEvent with addNewThemes test.
*/
public function testThemeEventWithAddNewThemes() {
$newThemes = [
'some_custom__hook_theme' => [
'variables' => [
'custom_variable' => NULL,
],
'path' => 'some/path',
],
];
$this->manager
->setEventCallbacks([
HookEventDispatcherInterface::THEME => function (ThemeEvent $event) use ($newThemes) {
$event
->addNewThemes($newThemes);
},
]);
$existing = [
'existing_theme_hook__with_information' => [
'render element' => [
'#type' => 'date',
'#title' => 'Some date',
'#default_value' => [
'year' => 2020,
'month' => 2,
'day' => 15,
],
],
],
];
$hookNewInformation = hook_event_dispatcher_theme($existing);
/** @var \Drupal\hook_event_dispatcher\Event\Theme\ThemeEvent $event */
$event = $this->manager
->getRegisteredEvent(HookEventDispatcherInterface::THEME);
self::assertSame($existing, $event
->getExisting());
self::assertSame($newThemes, $hookNewInformation);
}
/**
* ThemeEvent with addNewThemes test.
*/
public function testThemeEventWithAddNewThemesPathException() {
$newThemes = [
'some_custom__hook_theme' => [
'variables' => [
'custom_variable' => NULL,
],
],
];
$this->manager
->setEventCallbacks([
HookEventDispatcherInterface::THEME => function (ThemeEvent $event) use ($newThemes) {
$event
->addNewThemes($newThemes);
},
]);
$this
->expectException(\RuntimeException::class);
$this
->expectExceptionMessage('Missing path in the information array. ThemeEvent needs the path to be set manually, to have a proper default theme implementation. See \\hook_theme() for more information.');
hook_event_dispatcher_theme([]);
}
/**
* ThemeEvent with addNewTheme test.
*/
public function testThemeEventWithAddNewTheme() {
$themeHook = 'extra_theme__hook';
$information = [
'test' => 'extra_theme_information',
'path' => 'some/path',
];
$expectedNewTheme = [
$themeHook => $information,
];
$this->manager
->setEventCallbacks([
HookEventDispatcherInterface::THEME => function (ThemeEvent $event) use ($themeHook, $information) {
$event
->addNewTheme($themeHook, $information);
},
]);
$existing = [
'existing_theme_hook__with_information' => [
'render element' => [
'#type' => 'date',
'#title' => 'Some date',
'#default_value' => [
'year' => 2020,
'month' => 2,
'day' => 15,
],
],
],
];
$hookNewInformation = hook_event_dispatcher_theme($existing);
/** @var \Drupal\hook_event_dispatcher\Event\Theme\ThemeEvent $event */
$event = $this->manager
->getRegisteredEvent(HookEventDispatcherInterface::THEME);
self::assertSame($existing, $event
->getExisting());
self::assertSame($expectedNewTheme, $hookNewInformation);
}
/**
* ThemeEvent with addNewTheme test.
*/
public function testThemeEventWithAddNewThemeWithPathException() {
$themeHook = 'extra_theme__hook';
$information = [
'test' => 'extra_theme_information',
];
$this->manager
->setEventCallbacks([
HookEventDispatcherInterface::THEME => function (ThemeEvent $event) use ($themeHook, $information) {
$event
->addNewTheme($themeHook, $information);
},
]);
$this
->expectException(\RuntimeException::class);
$this
->expectExceptionMessage('Missing path in the information array. ThemeEvent needs the path to be set manually, to have a proper default theme implementation. See \\hook_theme() for more information.');
hook_event_dispatcher_theme([]);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
ThemeEventTest:: |
private | property | The manager. | |
ThemeEventTest:: |
public | function |
Sets up the test. Overrides UnitTestCase:: |
|
ThemeEventTest:: |
public | function | ThemeEvent with addNewTheme test. | |
ThemeEventTest:: |
public | function | ThemeEvent with addNewThemes test. | |
ThemeEventTest:: |
public | function | ThemeEvent with addNewThemes test. | |
ThemeEventTest:: |
public | function | ThemeEvent with addNewTheme test. | |
UnitTestCase:: |
protected | property | The random generator. | |
UnitTestCase:: |
protected | property | The app root. | 1 |
UnitTestCase:: |
protected | function | Asserts if two arrays are equal by sorting them first. | |
UnitTestCase:: |
protected | function | Mocks a block with a block plugin. | 1 |
UnitTestCase:: |
protected | function | Returns a stub class resolver. | |
UnitTestCase:: |
public | function | Returns a stub config factory that behaves according to the passed array. | |
UnitTestCase:: |
public | function | Returns a stub config storage that returns the supplied configuration. | |
UnitTestCase:: |
protected | function | Sets up a container with a cache tags invalidator. | |
UnitTestCase:: |
protected | function | Gets the random generator for the utility methods. | |
UnitTestCase:: |
public | function | Returns a stub translation manager that just returns the passed string. | |
UnitTestCase:: |
public | function | Generates a unique random string containing letters and numbers. |