class TypographyTest
Same name and namespace in other branches
- 11.x core/tests/Drupal/Tests/Core/Theme/DesignToken/Plugin/TypographyTest.php \Drupal\Tests\Core\Theme\DesignToken\Plugin\TypographyTest
Tests typography value plugin.
Attributes
#[CoversClass(Typography::class)]
#[Group('design_token')]
Hierarchy
- class \Drupal\Tests\DrupalTestCase uses \Drupal\Tests\DrupalTestCaseTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\UnitTestCase uses \Prophecy\PhpUnit\ProphecyTrait, \Drupal\Tests\RandomGeneratorTrait extends \Drupal\Tests\DrupalTestCase
- class \Drupal\Tests\Core\Theme\DesignToken\DesignTokenValuePluginTestBase extends \Drupal\Tests\UnitTestCase
- class \Drupal\Tests\Core\Theme\DesignToken\Plugin\TypographyTest extends \Drupal\Tests\Core\Theme\DesignToken\DesignTokenValuePluginTestBase
- class \Drupal\Tests\Core\Theme\DesignToken\DesignTokenValuePluginTestBase extends \Drupal\Tests\UnitTestCase
- class \Drupal\Tests\UnitTestCase uses \Prophecy\PhpUnit\ProphecyTrait, \Drupal\Tests\RandomGeneratorTrait extends \Drupal\Tests\DrupalTestCase
Expanded class hierarchy of TypographyTest
File
-
core/
tests/ Drupal/ Tests/ Core/ Theme/ DesignToken/ Plugin/ TypographyTest.php, line 25
Namespace
Drupal\Tests\Core\Theme\DesignToken\PluginView source
class TypographyTest extends DesignTokenValuePluginTestBase {
/**
* {@inheritdoc}
*/
protected string $pluginId = 'typography';
/**
* The typography's properties.
*
* @var array|string[]
*/
protected array $properties = [
'fontFamily' => 'fontFamily',
'fontSize' => 'dimension',
'fontWeight' => 'fontWeight',
'letterSpacing' => 'dimension',
'lineHeight' => 'number',
];
/**
* {@inheritdoc}
*/
public function testToDtcg(mixed $value, mixed $expected) : void {
$this->assertIsArray($value);
$this->assertIsArray($expected);
$this->setupContainer($value);
$plugin = new Typography($value, $this->pluginId, [], \Drupal::service(DesignTokenValuePluginManagerInterface::class));
$this->assertSame($expected, $plugin->toDtcg());
}
/**
* Data provider for ::testToDtcg().
*
* @return \Generator
* The test cases.
*/
public static function providerToDtcg() : iterable {
yield 'default' => [
[
'fontFamily' => 'Arial',
'fontSize' => [
'value' => 0,
'unit' => 'px',
],
'fontWeight' => 20,
'letterSpacing' => [
'value' => 0,
'unit' => 'px',
],
'lineHeight' => 0,
],
[
'fontFamily' => [
'Arial',
],
'fontSize' => [
'value' => 0,
'unit' => 'px',
],
'fontWeight' => 20,
'letterSpacing' => [
'value' => 0,
'unit' => 'px',
],
'lineHeight' => 0,
],
];
yield 'with enum and other structure' => [
[
'fontFamily' => 'Arial',
'fontSize' => [
'value' => 10,
'unit' => DimensionUnit::Px,
],
'fontWeight' => FontWeightAlias::Regular,
'letterSpacing' => [
'value' => 30,
'unit' => dimensionUnit::Px,
],
'lineHeight' => 5,
],
[
'fontFamily' => [
'Arial',
],
'fontSize' => [
'value' => 10,
'unit' => 'px',
],
'fontWeight' => 400,
'letterSpacing' => [
'value' => 30,
'unit' => 'px',
],
'lineHeight' => 5,
],
];
}
/**
* {@inheritdoc}
*/
public function testToCss(mixed $value, string $expected) : void {
$this->assertIsArray($value);
$this->setupContainer($value);
$plugin = new Typography($value, $this->pluginId, [], \Drupal::service(DesignTokenValuePluginManagerInterface::class));
$this->assertSame($expected, $plugin->toCss());
}
/**
* Data provider for ::testToCss().
*
* @return \Generator
* The test cases.
*/
public static function providerToCss() : iterable {
yield 'default' => [
[
'fontFamily' => [
'Arial',
'sans-serif',
],
'fontSize' => [
'value' => 10,
'unit' => 'px',
],
'fontWeight' => 20,
'letterSpacing' => [
'value' => 30,
'unit' => 'px',
],
'lineHeight' => 5,
],
'20 10px/5 Arial, sans-serif',
];
}
/**
* Sets up service container as needed by the plugin.
*
* @param array $configuration
* The typography plugin configuration.
*/
protected function setupContainer(array $configuration) : void {
$properties = $this->properties;
$instances = [];
foreach ($properties as $property => $propertyType) {
$propertyConfig = DesignTokenValuePluginBase::prepareConfiguration($configuration[$property]);
switch ($propertyType) {
case 'dimension':
$instances[$property] = new Dimension($propertyConfig, $propertyType, []);
break;
case 'fontFamily':
$instances[$property] = new FontFamily($propertyConfig, $propertyType, []);
break;
case 'fontWeight':
$instances[$property] = new FontWeight($propertyConfig, $propertyType, []);
break;
case 'number':
$instances[$property] = new Number($propertyConfig, $propertyType, []);
break;
}
}
$designTokenValuePluginManager = $this->createMock(DesignTokenValuePluginManagerInterface::class);
$designTokenValuePluginManager->expects($this->exactly(5))
->method('createInstance')
->willReturnCallback(static function (string $type, array $preparedPropertyConfig) use ($properties, $configuration, $instances) {
foreach ($properties as $property => $propertyType) {
if ($propertyType != $type) {
continue;
}
$propertyConfig = DesignTokenValuePluginBase::prepareConfiguration($configuration[$property]);
if ($propertyConfig == $preparedPropertyConfig) {
return $instances[$property];
}
}
return '';
});
$container = new ContainerBuilder();
$container->set(DesignTokenValuePluginManagerInterface::class, $designTokenValuePluginManager);
\Drupal::setContainer($container);
}
}
Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|---|
| DrupalTestCase::$root | protected | property | The Drupal root directory. | |||
| DrupalTestCase::getDrupalRoot | Deprecated | protected | function | Returns the Drupal root directory. | 1 | |
| DrupalTestCase::setUpRoot | final protected | function | Ensure that the $root property is set initially. | |||
| DrupalTestCase::skipTestWithAttribute | final protected | function | Supports skipping tests with the Skip attribute. | |||
| DrupalTestCaseTrait::checkErrorHandlerOnTearDown | public | function | Checks the test error handler after test execution. | 1 | ||
| DrupalTestCaseTrait::expectExceptionMessageIs | protected | function | Expects an exactly matching exception message. | |||
| DrupalTestCaseTrait::expectExceptionMessageIsOrContains | protected | function | Expects an exception message containing a specified string. | |||
| DrupalTestCaseTrait::setDebugDumpHandler | public static | function | Registers the dumper CLI handler when the DebugDump extension is enabled. | |||
| 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. | |||
| TypographyTest::$pluginId | protected | property | The tested plugin ID. | Overrides DesignTokenValuePluginTestBase::$pluginId | ||
| TypographyTest::$properties | protected | property | The typography's properties. | |||
| TypographyTest::providerToCss | public static | function | Data provider for ::testToCss(). | |||
| TypographyTest::providerToDtcg | public static | function | Data provider for ::testToDtcg(). | |||
| TypographyTest::setupContainer | protected | function | Sets up service container as needed by the plugin. | |||
| TypographyTest::testToCss | public | function | #[DataProvider('providerToCss')] | Overrides DesignTokenValuePluginTestBase::testToCss | ||
| TypographyTest::testToDtcg | public | function | #[DataProvider('providerToDtcg')] | Overrides DesignTokenValuePluginTestBase::testToDtcg | ||
| UnitTestCase::getClassResolverStub | protected | function | Returns a stub class resolver. | |||
| UnitTestCase::getConfigFactoryStub | public | function | Returns a stub config factory that behaves according to the passed array. | |||
| UnitTestCase::getContainerWithCacheTagsInvalidator | protected | function | Sets up a container with a cache tags invalidator. | |||
| UnitTestCase::getStringTranslationStub | public | function | Returns a stub translation manager that just returns the passed string. | |||
| UnitTestCase::setUp | protected | function | 362 | |||
| UnitTestCase::setupMockIterator | protected | function | Set up a traversable class mock to return specific items when iterated. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.