55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
namespace Drupal\Tests;
 | 
						|
 | 
						|
use Drupal\Core\Config\TypedConfigManagerInterface;
 | 
						|
use Drupal\Core\Config\Schema\SchemaCheckTrait;
 | 
						|
 | 
						|
/**
 | 
						|
 * 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): void {
 | 
						|
    $check = $this->checkConfigSchema($typed_config, $config_name, $config_data);
 | 
						|
    $message = '';
 | 
						|
    if ($check === FALSE) {
 | 
						|
      $message = 'Error: No schema exists.';
 | 
						|
    }
 | 
						|
    elseif ($check !== TRUE) {
 | 
						|
      $this->assertIsArray($check, "The config schema check errors should be in the form of an array.");
 | 
						|
      $message = "Errors:\n";
 | 
						|
      foreach ($check as $key => $error) {
 | 
						|
        $message .= "Schema key $key failed with: $error\n";
 | 
						|
      }
 | 
						|
    }
 | 
						|
    $this->assertTrue($check, "There should be no errors in configuration '$config_name'. $message");
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Asserts configuration, specified by name, has a valid schema.
 | 
						|
   *
 | 
						|
   * @param string $config_name
 | 
						|
   *   The configuration name.
 | 
						|
   */
 | 
						|
  public function assertConfigSchemaByName($config_name): void {
 | 
						|
    $config = $this->config($config_name);
 | 
						|
    $this->assertConfigSchema(\Drupal::service('config.typed'), $config->getName(), $config->get());
 | 
						|
  }
 | 
						|
 | 
						|
}
 |