View source
<?php
namespace Drupal\Tests\webform\Unit\Utility;
use Drupal\webform\Utility\WebformFormHelper;
use Drupal\Tests\UnitTestCase;
class WebformFormHelperTest extends UnitTestCase {
public function testCleanupFormStateValues(array $values, array $keys, $expected) {
$result = WebformFormHelper::cleanupFormStateValues($values, $keys);
$this
->assertEquals($expected, $result);
}
public function providerCleanupFormStateValues() {
$tests[] = [
[
'key' => 'value',
],
[],
[
'key' => 'value',
],
];
$tests[] = [
[
'key' => 'value',
'form_token' => 'ignored',
],
[],
[
'key' => 'value',
],
];
$tests[] = [
[
'key' => 'value',
'form_token' => 'ignored',
],
[
'key',
],
[],
];
return $tests;
}
public function testFlattenElements() {
$elements = [
'one' => [
'#title' => 'one',
'two' => [
'#title' => 'two',
],
],
];
$flattened_elements = WebformFormHelper::flattenElements($elements);
$this
->assertEquals($flattened_elements, [
'one' => [
'#title' => 'one',
'two' => [
'#title' => 'two',
],
],
'two' => [
'#title' => 'two',
],
]);
$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',
],
]);
$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',
],
],
]);
$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',
],
],
]);
}
}