Same filename and directory in other branches
- 8.9.x core/tests/Drupal/Tests/UnitTestCase.php
- 9 core/tests/Drupal/Tests/UnitTestCase.php
Namespace
Drupal\Tests
File
core/tests/Drupal/Tests/UnitTestCase.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests;
use Drupal\Component\FileCache\FileCacheFactory;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Cache\CacheTagsInvalidatorInterface;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
use Drupal\Tests\Traits\PhpUnitWarnings;
use Drupal\TestTools\TestVarDumper;
use PHPUnit\Framework\TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
use Symfony\Component\VarDumper\VarDumper;
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
abstract class UnitTestCase extends TestCase {
use PhpUnitWarnings;
use PhpUnitCompatibilityTrait;
use ProphecyTrait;
use ExpectDeprecationTrait;
use RandomGeneratorTrait;
protected $root;
public static function setUpBeforeClass() : void {
parent::setUpBeforeClass();
VarDumper::setHandler(TestVarDumper::class . '::cliHandler');
}
protected function setUp() : void {
parent::setUp();
\Drupal::unsetContainer();
FileCacheFactory::setConfiguration([
FileCacheFactory::DISABLE_CACHE => TRUE,
]);
FileCacheFactory::setPrefix('prefix');
$this->root = dirname(substr(__DIR__, 0, -strlen(__NAMESPACE__)), 2);
}
public function __get(string $name) {
if ($name === 'randomGenerator') {
@trigger_error('Accessing the randomGenerator property is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use getRandomGenerator() instead. See https://www.drupal.org/node/3358445', E_USER_DEPRECATED);
return $this
->getRandomGenerator();
}
}
public function getConfigFactoryStub(array $configs = []) {
$config_get_map = [];
$config_editable_map = [];
foreach ($configs as $config_name => $config_values) {
$config_get = function ($key = '') use ($config_values) {
if (empty($key)) {
return $config_values;
}
if (isset($config_values[$key])) {
return $config_values[$key];
}
$parts = explode('.', $key);
$value = NestedArray::getValue($config_values, $parts, $key_exists);
return $key_exists ? $value : NULL;
};
$immutable_config_object = $this
->getMockBuilder('Drupal\\Core\\Config\\ImmutableConfig')
->disableOriginalConstructor()
->getMock();
$immutable_config_object
->expects($this
->any())
->method('get')
->willReturnCallback($config_get);
$config_get_map[] = [
$config_name,
$immutable_config_object,
];
$mutable_config_object = $this
->getMockBuilder('Drupal\\Core\\Config\\Config')
->disableOriginalConstructor()
->getMock();
$mutable_config_object
->expects($this
->any())
->method('get')
->willReturnCallback($config_get);
$config_editable_map[] = [
$config_name,
$mutable_config_object,
];
}
$config_factory = $this
->createMock('Drupal\\Core\\Config\\ConfigFactoryInterface');
$config_factory
->expects($this
->any())
->method('get')
->willReturnMap($config_get_map);
$config_factory
->expects($this
->any())
->method('getEditable')
->willReturnMap($config_editable_map);
return $config_factory;
}
public function getConfigStorageStub(array $configs) {
$config_storage = $this
->createMock('Drupal\\Core\\Config\\NullStorage');
$config_storage
->expects($this
->any())
->method('listAll')
->willReturn(array_keys($configs));
foreach ($configs as $name => $config) {
$config_storage
->expects($this
->any())
->method('read')
->with($this
->equalTo($name))
->willReturn($config);
}
return $config_storage;
}
public function getStringTranslationStub() {
$translation = $this
->createMock('Drupal\\Core\\StringTranslation\\TranslationInterface');
$translation
->expects($this
->any())
->method('translate')
->willReturnCallback(function ($string, array $args = [], array $options = []) use ($translation) {
return new TranslatableMarkup($string, $args, $options, $translation);
});
$translation
->expects($this
->any())
->method('translateString')
->willReturnCallback(function (TranslatableMarkup $wrapper) {
return $wrapper
->getUntranslatedString();
});
$translation
->expects($this
->any())
->method('formatPlural')
->willReturnCallback(function ($count, $singular, $plural, array $args = [], array $options = []) use ($translation) {
$wrapper = new PluralTranslatableMarkup($count, $singular, $plural, $args, $options, $translation);
return $wrapper;
});
return $translation;
}
protected function getContainerWithCacheTagsInvalidator(CacheTagsInvalidatorInterface $cache_tags_validator) {
$container = $this
->createMock('Symfony\\Component\\DependencyInjection\\ContainerInterface');
$container
->expects($this
->any())
->method('get')
->with('cache_tags.invalidator')
->willReturn($cache_tags_validator);
\Drupal::setContainer($container);
return $container;
}
protected function getClassResolverStub() {
$class_resolver = $this
->createMock('Drupal\\Core\\DependencyInjection\\ClassResolverInterface');
$class_resolver
->expects($this
->any())
->method('getInstanceFromDefinition')
->willReturnCallback(function ($class) {
if (is_subclass_of($class, 'Drupal\\Core\\DependencyInjection\\ContainerInjectionInterface')) {
return $class::create(new ContainerBuilder());
}
else {
return new $class();
}
});
return $class_resolver;
}
}
Classes
Name |
Description |
UnitTestCase |
Provides a base class and helpers for Drupal unit tests. |