Mercurial > hg > cmmr2012-drupal-site
diff core/tests/Drupal/Tests/SchemaCheckTestTrait.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/Tests/SchemaCheckTestTrait.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,59 @@ +<?php + +namespace Drupal\Tests; + +use Drupal\Core\Config\TypedConfigManagerInterface; +use Drupal\Core\Config\Schema\SchemaCheckTrait; +use Drupal\Component\Utility\SafeMarkup; + +/** + * Provides a class for checking configuration schema. + */ +trait SchemaCheckTestTrait { + + use SchemaCheckTrait; + + /** + * Asserts the TypedConfigManager has a valid schema for the configuration. + * + * @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_config + * The TypedConfigManager. + * @param string $config_name + * The configuration name. + * @param array $config_data + * The configuration data. + */ + public function assertConfigSchema(TypedConfigManagerInterface $typed_config, $config_name, $config_data) { + $errors = $this->checkConfigSchema($typed_config, $config_name, $config_data); + if ($errors === FALSE) { + // @todo Since the use of this trait is under TestBase, it works. + // Can be fixed as part of https://www.drupal.org/node/2260053. + $this->fail(SafeMarkup::format('No schema for @config_name', ['@config_name' => $config_name])); + return; + } + elseif ($errors === TRUE) { + // @todo Since the use of this trait is under TestBase, it works. + // Can be fixed as part of https://www.drupal.org/node/2260053. + $this->pass(SafeMarkup::format('Schema found for @config_name and values comply with schema.', ['@config_name' => $config_name])); + } + else { + foreach ($errors as $key => $error) { + // @todo Since the use of this trait is under TestBase, it works. + // Can be fixed as part of https://www.drupal.org/node/2260053. + $this->fail(SafeMarkup::format('Schema key @key failed with: @error', ['@key' => $key, '@error' => $error])); + } + } + } + + /** + * Asserts configuration, specified by name, has a valid schema. + * + * @param string $config_name + * The configuration name. + */ + public function assertConfigSchemaByName($config_name) { + $config = $this->config($config_name); + $this->assertConfigSchema(\Drupal::service('config.typed'), $config->getName(), $config->get()); + } + +}