class ValidKeysConstraintValidatorTest
Same name in other branches
- 10 core/tests/Drupal/KernelTests/Core/TypedData/ValidKeysConstraintValidatorTest.php \Drupal\KernelTests\Core\TypedData\ValidKeysConstraintValidatorTest
Tests the ValidKeys validation constraint.
@group Validation
@covers \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint @covers \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraintValidator
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait
- class \Drupal\KernelTests\Core\TypedData\ValidKeysConstraintValidatorTest extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of ValidKeysConstraintValidatorTest
File
-
core/
tests/ Drupal/ KernelTests/ Core/ TypedData/ ValidKeysConstraintValidatorTest.php, line 21
Namespace
Drupal\KernelTests\Core\TypedDataView source
class ValidKeysConstraintValidatorTest extends KernelTestBase {
/**
* The typed config under test.
*
* @var \Drupal\Core\TypedData\TraversableTypedDataInterface
*
* @see \Drupal\Core\Config\TypedConfigManagerInterface::get()
*/
protected TraversableTypedDataInterface $config;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
// Install the Block module and create a Block config entity, so that we can
// test that the validator infers the required keys from a defined schema.
$this->enableModules([
'system',
'block',
]);
// Also install the config_schema_test module, to enable testing with
// config entities as the example in the test cases below, simulating both
// possible schema states: fully validatable and not fully validatable.
// @see \Drupal\KernelTests\Config\Schema\MappingTest::testMappingInterpretations()
$this->enableModules([
'config_schema_test',
]);
/** @var \Drupal\Core\Extension\ThemeInstallerInterface $theme_installer */
$theme_installer = $this->container
->get('theme_installer');
$theme_installer->install([
'stark',
]);
$block = Block::create([
'id' => 'branding',
'plugin' => 'system_branding_block',
'theme' => 'stark',
'status' => TRUE,
'weight' => 0,
'provider' => 'system',
'settings' => [
'use_site_logo' => TRUE,
'use_site_name' => TRUE,
'use_site_slogan' => TRUE,
'label_display' => FALSE,
],
]);
$block->save();
$this->config = $this->container
->get('config.typed')
->get('block.block.branding');
}
/**
* Tests detecting unsupported keys.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$invalidKeyMessage
*/
public function testSupportedKeys() : void {
// Start from the valid config.
$this->assertEmpty($this->config
->validate());
// Then modify only one thing: generate a non-existent `foobar` setting.
$data = $this->config
->toArray();
$data['settings']['foobar'] = TRUE;
$this->assertValidationErrors('block.block.branding', $data, [
'settings.foobar' => "'foobar' is not a supported key.",
]);
}
/**
* Tests detecting unknown keys.
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$dynamicInvalidKeyMessage
*/
public function testUnknownKeys() : void {
// Start from the valid config.
$this->assertEmpty($this->config
->validate());
// Then modify only one thing: the block plugin that is being used.
$data = $this->config
->toArray();
$data['plugin'] = 'system_powered_by_block';
$this->assertValidationErrors('block.block.branding', $data, [
'settings' => [
"'use_site_logo' is an unknown key because plugin is system_powered_by_block (see config schema type block.settings.*).",
"'use_site_name' is an unknown key because plugin is system_powered_by_block (see config schema type block.settings.*).",
"'use_site_slogan' is an unknown key because plugin is system_powered_by_block (see config schema type block.settings.*).",
],
]);
}
/**
* Tests detecting missing required keys.
*
* @testWith [true, {"settings": "'label_display' is a required key."}]
* [false, {}]
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$missingRequiredKeyMessage
*/
public function testRequiredKeys(bool $block_is_fully_validatable, array $expected_validation_errors) : void {
// Set or unset the `FullyValidatable` constraint on `block.block.*`.
\Drupal::state()->set('config_schema_test_block_fully_validatable', $block_is_fully_validatable);
$this->container
->get('kernel')
->rebuildContainer();
$this->config = $this->container
->get('config.typed')
->get('block.block.branding');
// Start from the valid config.
$this->assertEmpty($this->config
->validate());
// Then modify only one thing: remove the `label_display` setting.
$data = $this->config
->toArray();
unset($data['settings']['label_display']);
$this->config = $this->container
->get('config.typed')
->createFromNameAndData('block.block.branding', $data);
// Now 1 validation error should be triggered: one for the missing
// (statically) required key. It is only required because all block plugins
// are required to set it: see `type: block_settings`.
// @see \Drupal\system\Plugin\Block\SystemBrandingBlock::defaultConfiguration()
// @see \Drupal\system\Plugin\Block\SystemPoweredByBlock::defaultConfiguration()
$this->assertValidationErrors('block.block.branding', $data, $expected_validation_errors);
}
/**
* Tests detecting missing dynamically required keys.
*
* @testWith [true, {"settings": "'use_site_name' is a required key because plugin is system_branding_block (see config schema type block.settings.system_branding_block)."}]
* [false, {}]
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$dynamicMissingRequiredKeyMessage
*/
public function testDynamicallyRequiredKeys(bool $block_is_fully_validatable, array $expected_validation_errors) : void {
// Set or unset the `FullyValidatable` constraint on `block.block.*`.
\Drupal::state()->set('config_schema_test_block_fully_validatable', $block_is_fully_validatable);
$this->container
->get('kernel')
->rebuildContainer();
$this->config = $this->container
->get('config.typed')
->get('block.block.branding');
// Start from the valid config.
$this->assertEmpty($this->config
->validate());
// Then modify only one thing: remove the `use_site_name` setting.
$data = $this->config
->toArray();
unset($data['settings']['use_site_name']);
$this->config = $this->container
->get('config.typed')
->createFromNameAndData('block.block.branding', $data);
// Now 1 validation error should be triggered: one for the missing
// required key. It is only dynamically required because not
// all block plugins support this key in their configuration.
// @see \Drupal\system\Plugin\Block\SystemBrandingBlock::defaultConfiguration()
// @see \Drupal\system\Plugin\Block\SystemPoweredByBlock::defaultConfiguration()
$this->assertValidationErrors('block.block.branding', $data, $expected_validation_errors);
}
/**
* Tests detecting both unknown and required keys.
*
* @testWith [true, ["'primary' is a required key because plugin is local_tasks_block (see config schema type block.settings.local_tasks_block).", "'secondary' is a required key because plugin is local_tasks_block (see config schema type block.settings.local_tasks_block)."]]
* [false, []]
*
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$dynamicInvalidKeyMessage
* @see \Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraint::$dynamicMissingRequiredKeyMessage
*/
public function testBothUnknownAndDynamicallyRequiredKeys(bool $block_is_fully_validatable, array $additional_expected_validation_errors) : void {
// Set or unset the `FullyValidatable` constraint on `block.block.*`.
\Drupal::state()->set('config_schema_test_block_fully_validatable', $block_is_fully_validatable);
$this->container
->get('kernel')
->rebuildContainer();
$this->config = $this->container
->get('config.typed')
->get('block.block.branding');
// Start from the valid config.
$this->assertEmpty($this->config
->validate());
// Then modify only one thing: the block plugin that is being used.
$data = $this->config
->toArray();
$data['plugin'] = 'local_tasks_block';
$this->config = $this->container
->get('config.typed')
->createFromNameAndData('block.block.branding', $data);
// Now 3 validation errors should be triggered: one for each of the settings
// that exist in the "branding" block but not the "powered by" block.
// @see \Drupal\system\Plugin\Block\SystemBrandingBlock::defaultConfiguration()
// @see \Drupal\system\Plugin\Block\SystemPoweredByBlock::defaultConfiguration()
$this->assertValidationErrors('block.block.branding', $data, [
'settings' => [
"'use_site_logo' is an unknown key because plugin is local_tasks_block (see config schema type block.settings.local_tasks_block).",
"'use_site_name' is an unknown key because plugin is local_tasks_block (see config schema type block.settings.local_tasks_block).",
"'use_site_slogan' is an unknown key because plugin is local_tasks_block (see config schema type block.settings.local_tasks_block).",
$additional_expected_validation_errors,
],
]);
}
/**
* Tests the ValidKeys constraint validator.
*/
public function testValidation() : void {
// Create a data definition that specifies certain allowed keys.
$definition = MapDataDefinition::create('mapping')->addConstraint('ValidKeys', [
'north',
'south',
'west',
]);
$definition['mapping'] = [
'north' => [
'type' => 'string',
'requiredKey' => FALSE,
],
'east' => [
'type' => 'string',
'requiredKey' => FALSE,
],
'south' => [
'type' => 'string',
'requiredKey' => FALSE,
],
'west' => [
'type' => 'string',
'requiredKey' => FALSE,
],
];
// @todo Remove this line in https://www.drupal.org/project/drupal/issues/3403782
$definition->setClass('Drupal\\Core\\Config\\Schema\\Mapping');
/** @var \Drupal\Core\TypedData\TypedDataManagerInterface $typed_config */
$typed_config = $this->container
->get('config.typed');
// @see \Drupal\Core\Config\TypedConfigManager::buildDataDefinition()
// @see \Drupal\Core\TypedData\TypedDataManager::createDataDefinition()
$definition->setTypedDataManager($typed_config);
// Passing a non-array value should raise an exception.
try {
// We must clone the definition because the instance is modified when
// processing.
// @see \Drupal\Core\Config\Schema\Mapping::processRequiredKeyFlags()
$typed_config->create(clone $definition, 2501)
->validate();
$this->fail('Expected an exception but none was raised.');
} catch (UnexpectedTypeException $e) {
$this->assertSame('Expected argument of type "array", "int" given', $e->getMessage());
}
// Empty arrays are valid.
$this->assertCount(0, $typed_config->create(clone $definition, [])
->validate());
// Indexed arrays are never valid.
$violations = $typed_config->create(clone $definition, [
'north',
'south',
])
->validate();
$this->assertCount(1, $violations);
$this->assertSame('Numerically indexed arrays are not allowed.', (string) $violations->get(0)
->getMessage());
// Arrays with automatically assigned keys, AND a valid key, should be
// considered invalid overall.
$violations = $typed_config->create(clone $definition, [
'north',
'south' => 'west',
])
->validate();
$this->assertCount(1, $violations);
$this->assertSame("'0' is not a supported key.", (string) $violations->get(0)
->getMessage());
// Associative arrays with an invalid key should be invalid.
$violations = $typed_config->create(clone $definition, [
'north' => 'south',
'east' => 'west',
])
->validate();
$this->assertCount(1, $violations);
$this->assertSame("'east' is not a supported key.", (string) $violations->get(0)
->getMessage());
// If the array only contains the allowed keys, it's fine.
$value = [
'north' => 'Boston',
'south' => 'Atlanta',
'west' => 'San Francisco',
];
$violations = $typed_config->create(clone $definition, $value)
->validate();
$this->assertCount(0, $violations);
// If, in the mapping definition, some keys do NOT have
// `requiredKey: false` set, then they MUST be set. In other
// words, all keys are required unless they individually
// specify otherwise.
// First test without changing the value: no error should occur because all
// keys passed to the ValidKeys constraint have a value.
unset($definition['mapping']['south']['requiredKey']);
unset($definition['mapping']['east']['requiredKey']);
$violations = $typed_config->create(clone $definition, $value)
->validate();
$this->assertCount(0, $violations);
// If in the mapping definition some keys that do NOT have
// `requiredKey: false` set, then they MUST be set.
// First test without changing the value: no error should occur because all
// keys passed to the ValidKeys constraint have a value.
unset($definition['mapping']['south']['requiredKey']);
unset($definition['mapping']['east']['requiredKey']);
$violations = $typed_config->create(clone $definition, $value)
->validate();
$this->assertCount(0, $violations);
// Then remove the required key-value pair: this must trigger an error, but
// only if the root type has opted in.
unset($value['south']);
$violations = $typed_config->create(clone $definition, $value)
->validate();
$this->assertCount(0, $violations);
$definition->addConstraint('FullyValidatable', NULL);
$violations = $typed_config->create(clone $definition, $value)
->validate();
$this->assertCount(1, $violations);
$this->assertSame("'south' is a required key.", (string) $violations->get(0)
->getMessage());
}
/**
* Tests that valid keys can be inferred from the data definition.
*/
public function testValidKeyInference() : void {
// Install the System module and its config so that we can test that the
// validator infers the allowed keys from a defined schema.
$this->enableModules([
'system',
]);
$this->installConfig('system');
$config = $this->container
->get('config.typed')
->get('system.site');
$config->getDataDefinition()
->addConstraint('ValidKeys', '<infer>');
$data = $config->getValue();
$data['invalid-key'] = "There's a snake in my boots.";
$config->setValue($data);
$violations = $config->validate();
$this->assertCount(1, $violations);
$this->assertSame("'invalid-key' is not a supported key.", (string) $violations->get(0)
->getMessage());
// Ensure that ValidKeys will freak out if the option is not exactly
// `<infer>`.
$config->getDataDefinition()
->addConstraint('ValidKeys', 'infer');
$this->expectExceptionMessage("'infer' is not a valid set of allowed keys.");
$config->validate();
}
/**
* Tests ValidKeys constraint validator detecting optional keys.
*/
public function testMarkedAsOptional() : void {
\Drupal::state()->set('config_schema_test_block_fully_validatable', TRUE);
$this->container
->get('kernel')
->rebuildContainer();
$this->config = $this->container
->get('config.typed')
->get('block.block.branding');
$violations = $this->config
->validate();
$this->assertCount(0, $violations);
// Reference to the mapping in the schema, to allow adjusting it for testing
// purposes.
assert($this->config
->getDataDefinition() instanceof MapDataDefinition);
$mapping = $this->config
->getDataDefinition()['mapping'];
// Removing a key-value pair should trigger a validation error.
$data = $this->config
->getValue();
unset($data['status']);
$this->config
->setValue($data);
$violations = $this->config
->validate();
$this->assertCount(1, $violations);
$this->assertSame("'status' is a required key.", (string) $violations->get(0)
->getMessage());
// Unless a key is explicitly marked as optional.
$mapping['status']['requiredKey'] = FALSE;
$this->config
->getDataDefinition()['mapping'] = $mapping;
$violations = $this->config
->validate();
$this->assertCount(0, $violations);
}
/**
* Asserts a set of validation errors is raised when the config is validated.
*
* @param string $config_name
* The machine name of the configuration.
* @param array $config_data
* The data associated with the configuration. Note: This configuration
* doesn't yet have to be stored.
* @param array<string, string|string[]> $expected_messages
* The expected validation error messages. Keys are property paths, values
* are the expected messages: a string if a single message is expected, an
* array of strings if multiple are expected.
*/
protected function assertValidationErrors(string $config_name, array $config_data, array $expected_messages) : void {
$violations = $this->container
->get('config.typed')
->createFromNameAndData($config_name, $config_data)
->validate();
$actual_messages = [];
foreach ($violations as $violation) {
$property_path = $violation->getPropertyPath();
if (!isset($actual_messages[$property_path])) {
$actual_messages[$property_path] = (string) $violation->getMessage();
}
else {
// Transform value from string to array.
if (is_string($actual_messages[$property_path])) {
$actual_messages[$property_path] = (array) $actual_messages[$violation->getPropertyPath()];
}
// And append.
$actual_messages[$property_path][] = (string) $violation->getMessage();
}
}
ksort($expected_messages);
ksort($actual_messages);
$this->assertSame($expected_messages, $actual_messages);
}
}
Members
Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|---|
AssertContentTrait::$content | protected | property | The current raw content. | |||
AssertContentTrait::$drupalSettings | protected | property | The drupalSettings value from the current raw $content. | |||
AssertContentTrait::$elements | protected | property | The XML structure parsed from the current raw $content. | 1 | ||
AssertContentTrait::$plainTextContent | protected | property | The plain-text content of raw $content (text nodes). | |||
AssertContentTrait::assertEscaped | protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |||
AssertContentTrait::assertField | protected | function | Asserts that a field exists with the given name or ID. | |||
AssertContentTrait::assertFieldById | Deprecated | protected | function | Asserts that a field exists with the given ID and value. | ||
AssertContentTrait::assertFieldByName | protected | function | Asserts that a field exists with the given name and value. | |||
AssertContentTrait::assertFieldByXPath | protected | function | Asserts that a field exists in the current page by the given XPath. | |||
AssertContentTrait::assertFieldChecked | Deprecated | protected | function | Asserts that a checkbox field in the current page is checked. | ||
AssertContentTrait::assertFieldsByValue | protected | function | Asserts that a field exists in the current page with a given Xpath result. | |||
AssertContentTrait::assertLink | protected | function | Passes if a link with the specified label is found. | |||
AssertContentTrait::assertLinkByHref | protected | function | Passes if a link containing a given href (part) is found. | |||
AssertContentTrait::assertNoDuplicateIds | Deprecated | protected | function | Asserts that each HTML ID is used for just a single element. | ||
AssertContentTrait::assertNoEscaped | protected | function | Passes if raw text IS NOT found escaped on loaded page, fail otherwise. | |||
AssertContentTrait::assertNoField | Deprecated | protected | function | Asserts that a field does not exist with the given name or ID. | ||
AssertContentTrait::assertNoFieldById | Deprecated | protected | function | Asserts that a field does not exist with the given ID and value. | ||
AssertContentTrait::assertNoFieldByName | Deprecated | protected | function | Asserts that a field does not exist with the given name and value. | ||
AssertContentTrait::assertNoFieldByXPath | Deprecated | protected | function | Asserts that a field does not exist or its value does not match, by XPath. | ||
AssertContentTrait::assertNoFieldChecked | Deprecated | protected | function | Asserts that a checkbox field in the current page is not checked. | ||
AssertContentTrait::assertNoLink | protected | function | Passes if a link with the specified label is not found. | |||
AssertContentTrait::assertNoLinkByHref | Deprecated | protected | function | Passes if a link containing a given href (part) is not found. | ||
AssertContentTrait::assertNoLinkByHrefInMainRegion | Deprecated | protected | function | Passes if a link containing a given href is not found in the main region. | ||
AssertContentTrait::assertNoOption | Deprecated | protected | function | Asserts that a select option in the current page does not exist. | ||
AssertContentTrait::assertNoOptionSelected | Deprecated | protected | function | Asserts that a select option in the current page is not checked. | ||
AssertContentTrait::assertNoPattern | protected | function | Triggers a pass if the perl regex pattern is not found in raw content. | |||
AssertContentTrait::assertNoRaw | protected | function | Passes if the raw text is NOT found on the loaded page, fail otherwise. | |||
AssertContentTrait::assertNoText | protected | function | Passes if the page (with HTML stripped) does not contains the text. | |||
AssertContentTrait::assertNoTitle | protected | function | Pass if the page title is not the given string. | |||
AssertContentTrait::assertNoUniqueText | Deprecated | protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | ||
AssertContentTrait::assertOption | protected | function | Asserts that a select option in the current page exists. | |||
AssertContentTrait::assertOptionByText | Deprecated | protected | function | Asserts that a select option with the visible text exists. | ||
AssertContentTrait::assertOptionSelected | Deprecated | protected | function | Asserts that a select option in the current page is checked. | ||
AssertContentTrait::assertOptionSelectedWithDrupalSelector | Deprecated | protected | function | Asserts that a select option in the current page is checked. | ||
AssertContentTrait::assertOptionWithDrupalSelector | protected | function | Asserts that a select option in the current page exists. | |||
AssertContentTrait::assertPattern | protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |||
AssertContentTrait::assertRaw | protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | |||
AssertContentTrait::assertText | protected | function | Passes if the page (with HTML stripped) contains the text. | |||
AssertContentTrait::assertTextHelper | protected | function | Helper for assertText and assertNoText. | |||
AssertContentTrait::assertTextPattern | Deprecated | protected | function | Asserts that a Perl regex pattern is found in the plain-text content. | ||
AssertContentTrait::assertThemeOutput | protected | function | Asserts themed output. | |||
AssertContentTrait::assertTitle | protected | function | Pass if the page title is the given string. | |||
AssertContentTrait::assertUniqueText | Deprecated | protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | ||
AssertContentTrait::assertUniqueTextHelper | Deprecated | protected | function | Helper for assertUniqueText and assertNoUniqueText. | ||
AssertContentTrait::buildXPathQuery | protected | function | Builds an XPath query. | |||
AssertContentTrait::constructFieldXpath | protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |||
AssertContentTrait::cssSelect | protected | function | Searches elements using a CSS selector in the raw content. | |||
AssertContentTrait::getAllOptions | protected | function | Get all option elements, including nested options, in a select. | |||
AssertContentTrait::getDrupalSettings | protected | function | Gets the value of drupalSettings for the currently-loaded page. | |||
AssertContentTrait::getRawContent | protected | function | Gets the current raw content. | |||
AssertContentTrait::getSelectedItem | protected | function | Get the selected value from a select field. | |||
AssertContentTrait::getTextContent | protected | function | Retrieves the plain-text content from the current raw content. | |||
AssertContentTrait::parse | protected | function | Parse content returned from curlExec using DOM and SimpleXML. | |||
AssertContentTrait::removeWhiteSpace | protected | function | Removes all white-space between HTML tags from the raw content. | |||
AssertContentTrait::setDrupalSettings | protected | function | Sets the value of drupalSettings for the currently-loaded page. | |||
AssertContentTrait::setRawContent | protected | function | Sets the raw content (e.g. HTML). | |||
AssertContentTrait::xpath | protected | function | Performs an xpath search on the contents of the internal browser. | |||
ConfigTestTrait::configImporter | protected | function | Returns a ConfigImporter object to import test configuration. | |||
ConfigTestTrait::copyConfig | protected | function | Copies configuration objects from source storage to target storage. | |||
ExpectDeprecationTrait::expectDeprecation | public | function | Adds an expected deprecation. | |||
ExpectDeprecationTrait::getCallableName | private static | function | Returns a callable as a string suitable for inclusion in a message. | |||
ExpectDeprecationTrait::setUpErrorHandler | public | function | Sets up the test error handler. | |||
ExpectDeprecationTrait::tearDownErrorHandler | public | function | Tears down the test error handler. | |||
ExtensionListTestTrait::getModulePath | protected | function | Gets the path for the specified module. | |||
ExtensionListTestTrait::getThemePath | protected | function | Gets the path for the specified theme. | |||
KernelTestBase::$classLoader | protected | property | ||||
KernelTestBase::$configImporter | protected | property | @todo Move into Config test base class. | 6 | ||
KernelTestBase::$configSchemaCheckerExclusions | protected static | property | An array of config object names that are excluded from schema checking. | 4 | ||
KernelTestBase::$container | protected | property | ||||
KernelTestBase::$databasePrefix | protected | property | ||||
KernelTestBase::$keyValue | protected | property | The key_value service that must persist between container rebuilds. | |||
KernelTestBase::$modules | protected static | property | Modules to install. | 575 | ||
KernelTestBase::$root | protected | property | The app root. | |||
KernelTestBase::$siteDirectory | protected | property | ||||
KernelTestBase::$strictConfigSchema | protected | property | Set to TRUE to strict check all configuration saved. | 9 | ||
KernelTestBase::$usesSuperUserAccessPolicy | protected | property | Set to TRUE to make user 1 a super user. | 2 | ||
KernelTestBase::$vfsRoot | protected | property | The virtual filesystem root directory. | |||
KernelTestBase::assertPostConditions | protected | function | 1 | |||
KernelTestBase::bootEnvironment | protected | function | Bootstraps a basic test environment. | |||
KernelTestBase::bootKernel | protected | function | Bootstraps a kernel for a test. | 1 | ||
KernelTestBase::config | protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |||
KernelTestBase::disableModules | protected | function | Disables modules for this test. | |||
KernelTestBase::enableModules | protected | function | Enables modules for this test. | 2 | ||
KernelTestBase::getConfigSchemaExclusions | protected | function | Gets the config schema exclusions for this test. | |||
KernelTestBase::getDatabaseConnectionInfo | protected | function | Returns the Database connection info to be used for this test. | 2 | ||
KernelTestBase::getDatabasePrefix | public | function | ||||
KernelTestBase::getExtensionsForModules | private | function | Returns Extension objects for $modules to install. | |||
KernelTestBase::getModulesToEnable | private static | function | Returns the modules to install for this test. | |||
KernelTestBase::initFileCache | protected | function | Initializes the FileCache component. | |||
KernelTestBase::installConfig | protected | function | Installs default configuration for a given list of modules. | |||
KernelTestBase::installEntitySchema | protected | function | Installs the storage schema for a specific entity type. | |||
KernelTestBase::installSchema | protected | function | Installs database tables from a module schema definition. | |||
KernelTestBase::register | public | function | Registers test-specific services. | Overrides ServiceProviderInterface::register | 32 | |
KernelTestBase::render | protected | function | Renders a render array. | 1 | ||
KernelTestBase::setInstallProfile | protected | function | Sets the install profile and rebuilds the container to update it. | |||
KernelTestBase::setSetting | protected | function | Sets an in-memory Settings variable. | |||
KernelTestBase::setUpBeforeClass | public static | function | ||||
KernelTestBase::setUpFilesystem | protected | function | Sets up the filesystem, so things like the file directory. | 3 | ||
KernelTestBase::tearDown | protected | function | 9 | |||
KernelTestBase::tearDownCloseDatabaseConnection | public | function | Additional tear down method to close the connection at the end. | |||
KernelTestBase::vfsDump | protected | function | Dumps the current state of the virtual filesystem to STDOUT. | |||
KernelTestBase::__construct | public | function | ||||
KernelTestBase::__sleep | public | function | Prevents serializing any properties. | |||
RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |||
RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |||
RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |||
RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |||
StorageCopyTrait::replaceStorageContents | protected static | function | Copy the configuration from one storage to another and remove stale items. | |||
TestRequirementsTrait::getDrupalRoot | protected static | function | Returns the Drupal root directory. | |||
ValidKeysConstraintValidatorTest::$config | protected | property | The typed config under test. | |||
ValidKeysConstraintValidatorTest::assertValidationErrors | protected | function | Asserts a set of validation errors is raised when the config is validated. | |||
ValidKeysConstraintValidatorTest::setUp | protected | function | Overrides KernelTestBase::setUp | |||
ValidKeysConstraintValidatorTest::testBothUnknownAndDynamicallyRequiredKeys | public | function | Tests detecting both unknown and required keys. | |||
ValidKeysConstraintValidatorTest::testDynamicallyRequiredKeys | public | function | Tests detecting missing dynamically required keys. | |||
ValidKeysConstraintValidatorTest::testMarkedAsOptional | public | function | Tests ValidKeys constraint validator detecting optional keys. | |||
ValidKeysConstraintValidatorTest::testRequiredKeys | public | function | Tests detecting missing required keys. | |||
ValidKeysConstraintValidatorTest::testSupportedKeys | public | function | Tests detecting unsupported keys. | |||
ValidKeysConstraintValidatorTest::testUnknownKeys | public | function | Tests detecting unknown keys. | |||
ValidKeysConstraintValidatorTest::testValidation | public | function | Tests the ValidKeys constraint validator. | |||
ValidKeysConstraintValidatorTest::testValidKeyInference | public | function | Tests that valid keys can be inferred from the data definition. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.