class DimensionTest

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Theme/DesignToken/Plugin/DimensionTest.php \Drupal\Tests\Core\Theme\DesignToken\Plugin\DimensionTest

Tests dimension value plugin.

Attributes

#[CoversClass(Dimension::class)] #[Group('design_token')]

Hierarchy

Expanded class hierarchy of DimensionTest

File

core/tests/Drupal/Tests/Core/Theme/DesignToken/Plugin/DimensionTest.php, line 18

Namespace

Drupal\Tests\Core\Theme\DesignToken\Plugin
View source
class DimensionTest extends DesignTokenValuePluginTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected string $pluginId = 'dimension';
  
  /**
   * {@inheritdoc}
   */
  public function testToDtcg(mixed $value, mixed $expected) : void {
    $this->assertIsArray($value);
    $this->assertIsArray($expected);
    $plugin = new Dimension($value, $this->pluginId, []);
    $this->assertSame($expected, $plugin->toDtcg());
  }
  
  /**
   * Data provider for ::testToDtcg().
   *
   * @return \Generator
   *   The test cases.
   */
  public static function providerToDtcg() : iterable {
    yield 'px' => [
      [
        'value' => 12,
        'unit' => 'px',
      ],
      [
        'value' => 12,
        'unit' => 'px',
      ],
    ];
    yield 'rem' => [
      [
        'value' => 2,
        'unit' => 'rem',
      ],
      [
        'value' => 2,
        'unit' => 'rem',
      ],
    ];
    yield 'with enum' => [
      [
        'value' => 2,
        'unit' => DimensionUnit::Px,
      ],
      [
        'value' => 2,
        'unit' => 'px',
      ],
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public function testToCss(mixed $value, string $expected) : void {
    $this->assertIsArray($value);
    $plugin = new Dimension($value, $this->pluginId, []);
    $this->assertSame($expected, $plugin->toCss());
  }
  
  /**
   * Data provider for ::testToCss().
   *
   * @return \Generator
   *   The test cases.
   */
  public static function providerToCss() : iterable {
    yield 'px' => [
      [
        'value' => 12,
        'unit' => 'px',
      ],
      '12px',
    ];
    yield 'rem' => [
      [
        'value' => 2,
        'unit' => 'rem',
      ],
      '2rem',
    ];
  }
  
  /**
   * Tests invalid unit.
   */
  public function testInvalidUnit() : void {
    $this->expectException(\ValueError::class);
    $this->expectExceptionMessage('"<script>alert()</script>" is not a valid backing value for enum Drupal\\Core\\Theme\\DesignToken\\Enum\\DimensionUnit');
    $configuration = [
      'value' => 2,
      'unit' => '<script>alert()</script>',
    ];
    new Dimension($configuration, $this->pluginId, []);
  }
  
  /**
   * Tests creating a dimension plugin with an enum unit.
   */
  public function testEnumUnit() : void {
    $configuration = [
      'value' => 2,
      'unit' => DimensionUnit::Rem,
    ];
    $plugin = new Dimension($configuration, $this->pluginId, []);
    $this->assertEquals(DimensionUnit::Rem, $plugin->getConfiguration()['unit']);
    // Tests with another DimensionUnitInterface than the default one.
    $configuration = [
      'value' => 2,
      'unit' => TestDimensionUnit::Em,
    ];
    $plugin = new Dimension($configuration, $this->pluginId, []);
    $this->assertEquals(TestDimensionUnit::Em, $plugin->getConfiguration()['unit']);
  }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary Overriden Title Overrides
DimensionTest::$pluginId protected property The tested plugin ID. Overrides DesignTokenValuePluginTestBase::$pluginId
DimensionTest::providerToCss public static function Data provider for ::testToCss().
DimensionTest::providerToDtcg public static function Data provider for ::testToDtcg().
DimensionTest::testEnumUnit public function Tests creating a dimension plugin with an enum unit.
DimensionTest::testInvalidUnit public function Tests invalid unit.
DimensionTest::testToCss public function #[DataProvider('providerToCss')] Overrides DesignTokenValuePluginTestBase::testToCss
DimensionTest::testToDtcg public function #[DataProvider('providerToDtcg')] Overrides DesignTokenValuePluginTestBase::testToDtcg
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.
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.