You are here

public function WebformFormHelperTest::testFlattenElements in Webform 6.x

Same name and namespace in other branches
  1. 8.5 tests/src/Unit/Utility/WebformFormHelperTest.php \Drupal\Tests\webform\Unit\Utility\WebformFormHelperTest::testFlattenElements()

Tests WebformFormHelper::flattenElements().

See also

WebformFormHelper::flattenElements()

File

tests/src/Unit/Utility/WebformFormHelperTest.php, line 53

Class

WebformFormHelperTest
Tests webform helper utility.

Namespace

Drupal\Tests\webform\Unit\Utility

Code

public function testFlattenElements() {
  $elements = [
    'one' => [
      '#title' => 'one',
      'two' => [
        '#title' => 'two',
      ],
    ],
  ];
  $flattened_elements = WebformFormHelper::flattenElements($elements);

  // Check flattened elements.
  $this
    ->assertEquals($flattened_elements, [
    'one' => [
      '#title' => 'one',
      'two' => [
        '#title' => 'two',
      ],
    ],
    'two' => [
      '#title' => 'two',
    ],
  ]);

  // Check flattened elements references.
  $elements['one']['#title'] .= '-UPDATED';
  $elements['one']['two']['#title'] .= '-UPDATED';
  $elements['one']['two']['#type'] = 'textfield';
  $this
    ->assertEquals($flattened_elements, [
    'one' => [
      '#title' => 'one-UPDATED',
      'two' => [
        '#title' => 'two-UPDATED',
        '#type' => 'textfield',
      ],
    ],
    'two' => [
      '#title' => 'two-UPDATED',
      '#type' => 'textfield',
    ],
  ]);

  // Check flattened elements with duplicate keys.
  $elements = [
    'one' => [
      '#title' => 'one',
      'two' => [
        '#title' => 'two-FIRST',
      ],
    ],
    'two' => [
      '#title' => 'two-SECOND',
    ],
  ];
  $flattened_elements = WebformFormHelper::flattenElements($elements);
  $this
    ->assertEquals($flattened_elements, [
    'one' => [
      '#title' => 'one',
      'two' => [
        '#title' => 'two-FIRST',
      ],
    ],
    'two' => [
      [
        '#title' => 'two-FIRST',
      ],
      [
        '#title' => 'two-SECOND',
      ],
    ],
  ]);

  // Check flattened elements references with duplicate keys.
  $elements['one']['#title'] .= '-UPDATED';
  $elements['one']['two']['#title'] .= '-UPDATED';
  $elements['one']['two']['#type'] = 'textfield';
  $this
    ->assertEquals($flattened_elements, [
    'one' => [
      '#title' => 'one-UPDATED',
      'two' => [
        '#title' => 'two-FIRST-UPDATED',
        '#type' => 'textfield',
      ],
    ],
    'two' => [
      [
        '#title' => 'two-FIRST-UPDATED',
        '#type' => 'textfield',
      ],
      [
        '#title' => 'two-SECOND',
      ],
    ],
  ]);
}