function DesignTokenConfigEntityKernelTest::testPreSave

Tests preSave.

File

core/tests/Drupal/KernelTests/Core/Theme/DesignToken/DesignTokenConfigEntityKernelTest.php, line 55

Class

DesignTokenConfigEntityKernelTest
Tests values are from test module design_tokens_test.

Namespace

Drupal\KernelTests\Core\Theme\DesignToken

Code

public function testPreSave() : void {
  $values = [
    'id' => 'my_id',
    'path' => 'foo.bar.baz',
    'type' => 'dimension',
    'scopes' => [
      ':root' => [
        'value' => 12,
        'unit' => 'px',
      ],
      '.card' => [
        'value' => 14,
        'unit' => 'rem',
      ],
      '%breadcrumb' => [
        'value' => 14,
        'unit' => 'rem',
      ],
    ],
  ];
  $expected = [
    ':root' => [
      'value' => 12,
      'unit' => 'px',
    ],
    '%card' => [
      'value' => 14,
      'unit' => 'rem',
    ],
    '%breadcrumb' => [
      'value' => 14,
      'unit' => 'rem',
    ],
  ];
  $expectedProcessed = [
    ':root' => new Dimension([
      'value' => 12,
      'unit' => 'px',
    ], 'dimension', [
      'class' => Dimension::class,
      'provider' => 'core',
      'id' => 'dimension',
      'label' => new TranslatableMarkup('Dimension'),
    ]),
    '%card' => new Dimension([
      'value' => 14,
      'unit' => 'rem',
    ], 'dimension', [
      'class' => Dimension::class,
      'provider' => 'core',
      'id' => 'dimension',
      'label' => new TranslatableMarkup('Dimension'),
    ]),
    '%breadcrumb' => new Dimension([
      'value' => 14,
      'unit' => 'rem',
    ], 'dimension', [
      'class' => Dimension::class,
      'provider' => 'core',
      'id' => 'dimension',
      'label' => new TranslatableMarkup('Dimension'),
    ]),
  ];
  /** @var \Drupal\Core\Theme\Entity\DesignTokenInterface $config */
  $config = $this->entityTypeManager
    ->getStorage('design_token')
    ->create($values);
  $config->save();
  $reflection = new \ReflectionClass($config);
  $property = $reflection->getProperty('scopes');
  // Ensure scopes had been converted for storage.
  $this->assertEquals($expected, $property->getValue($config));
  // Ensure conversion for storage does not impact export.
  foreach ($expectedProcessed as $scope => $pluginInstance) {
    $this->assertEquals($pluginInstance, $config->getScopes()
      ->get($scope));
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.