You are here

public function TwigExtensionFiltersTest::providerTestAddFilter in Components! 3.x

Same name and namespace in other branches
  1. 8.2 tests/src/Unit/TwigExtensionFiltersTest.php \Drupal\Tests\components\Unit\TwigExtensionFiltersTest::providerTestAddFilter()

Data provider for testAddFilter().

See also

testAddFilter()

File

tests/src/Unit/TwigExtensionFiltersTest.php, line 299

Class

TwigExtensionFiltersTest
@coversDefaultClass \Drupal\components\Template\TwigExtension @group components

Namespace

Drupal\Tests\components\Unit

Code

public function providerTestAddFilter() : array {
  return [
    'replacing a value' => [
      'at' => 'element.#attributes.id',
      'value' => 'new-value',
      'expected' => [
        'existing' => 'value',
        'element' => [
          '#type' => 'element',
          '#attributes' => [
            'class' => [
              'old-value-1',
              'old-value-2',
            ],
            'id' => 'new-value',
          ],
        ],
      ],
    ],
    'setting a new property on an existing array' => [
      'at' => 'element.#attributes.placeholder',
      'value' => 'new-value',
      'expected' => [
        'existing' => 'value',
        'element' => [
          '#type' => 'element',
          '#attributes' => [
            'class' => [
              'old-value-1',
              'old-value-2',
            ],
            'id' => 'element',
            'placeholder' => 'new-value',
          ],
        ],
      ],
    ],
    'targeting an existing array with a string' => [
      'at' => 'element.#attributes.class',
      'value' => 'new-value',
      'expected' => [
        'existing' => 'value',
        'element' => [
          '#type' => 'element',
          '#attributes' => [
            'class' => [
              'old-value-1',
              'old-value-2',
              'new-value',
            ],
            'id' => 'element',
          ],
        ],
      ],
    ],
    'targeting an existing array with an array' => [
      'at' => 'element.#attributes.class',
      'value' => [
        'new-value-1',
        'new-value-2',
      ],
      'expected' => [
        'existing' => 'value',
        'element' => [
          '#type' => 'element',
          '#attributes' => [
            'class' => [
              'old-value-1',
              'old-value-2',
              'new-value-1',
              'new-value-2',
            ],
            'id' => 'element',
          ],
        ],
      ],
    ],
    'targeting a non-existent parent property' => [
      'at' => 'new-element.#attributes.class',
      'value' => [
        'new-value',
      ],
      'expected' => [
        'existing' => 'value',
        'element' => [
          '#type' => 'element',
          '#attributes' => [
            'class' => [
              'old-value-1',
              'old-value-2',
            ],
            'id' => 'element',
          ],
        ],
        'new-element' => [
          '#attributes' => [
            'class' => [
              'new-value',
            ],
          ],
        ],
      ],
    ],
  ];
}