Newer
Older
<?php
namespace Drupal\Tests\Core\Render\Element;
use Drupal\Core\Access\CsrfTokenGenerator;
use Drupal\Core\Form\FormState;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Language\LanguageInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Render\Element\MachineName;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* @coversDefaultClass \Drupal\Core\Render\Element\MachineName
* @group Render
*/
class MachineNameTest extends UnitTestCase {
/**
* @covers ::valueCallback
*
* @dataProvider providerTestValueCallback
*/
public function testValueCallback($expected, $input) {
$element = [];
$form_state = $this->prophesize(FormStateInterface::class)->reveal();
$this->assertSame($expected, MachineName::valueCallback($element, $input, $form_state));
}
/**
* Data provider for testValueCallback().
*/
public function providerTestValueCallback() {
$data = [];
$data[] = [NULL, FALSE];
$data[] = [NULL, NULL];
$data[] = ['', ['test']];
$data[] = ['test', 'test'];
$data[] = ['123', 123];
return $data;
}
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* @covers ::processMachineName
*/
public function testProcessMachineName() {
$form_state = new FormState();
$element = [
'#id' => 'test',
'#field_suffix' => 'test_suffix',
'#field_prefix' => 'test_prefix',
'#machine_name' => [
'source' => [
'test_source',
],
'maxlength' => 32,
'additional_property' => TRUE,
'#additional_property_with_hash' => TRUE,
]
];
$complete_form = [
'test_source' => [
'#type' => 'textfield',
'#id' => 'source',
],
'test_machine_name' => $element
];
$form_state->setCompleteForm($complete_form);
$language = $this->prophesize(LanguageInterface::class);
$language->getId()->willReturn('xx-lolspeak');
$language_manager = $this->prophesize(LanguageManagerInterface::class);
$language_manager->getCurrentLanguage()->willReturn($language);
$csrf_token = $this->prophesize(CsrfTokenGenerator::class);
$csrf_token->get('[^a-z0-9_]+')->willReturn('tis-a-fine-token');
$container = $this->prophesize(ContainerInterface::class);
$container->get('language_manager')->willReturn($language_manager->reveal());
$container->get('csrf_token')->willReturn($csrf_token->reveal());
\Drupal::setContainer($container->reveal());
$element = MachineName::processMachineName($element, $form_state, $complete_form);
$settings = $element['#attached']['drupalSettings']['machineName']['#source'];
$allowed_options = [
'replace_pattern',
'replace',
'maxlength',
'target',
'label',
'field_prefix',
'field_suffix',
'suffix',
'replace_token',
];
$this->assertEmpty(array_diff_key($settings, array_flip($allowed_options)));
foreach ($allowed_options as $key) {
$this->assertArrayHasKey($key, $settings);
}
}
}
namespace Drupal\Core\Render\Element;
if (!function_exists('t')) {
function t($string, array $args = []) {
return strtr($string, $args);
}