public function PlaceholderResolverTest::testResolvingPlaceholders in Typed Data API enhancements 8
@covers ::resolvePlaceholders
File
- tests/
src/ Kernel/ PlaceholderResolverTest.php, line 239
Class
- PlaceholderResolverTest
- Tests the placeholder resolver.
Namespace
Drupal\Tests\typed_data\KernelCode
public function testResolvingPlaceholders() {
// Test resolving multiple tokens.
$text = 'test {{node.title}} and {{node.title.value}}';
$result = $this->placeholderResolver
->resolvePlaceholders($text, [
'node' => $this->node
->getTypedData(),
]);
$expected = [
'{{node.title}}' => 'test',
'{{node.title.value}}' => 'test',
];
$this
->assertEquals($expected, $result);
// Test resolving multiple tokens, one with a filter.
$this->node->title->value = 'tEsT';
$result = $this->placeholderResolver
->resolvePlaceHolders("test {{ node.title.value | lower }} and {{ node.title.value }}", [
'node' => $this->node
->getTypedData(),
]);
$expected = [
'{{ node.title.value | lower }}' => 'test',
'{{ node.title.value }}' => 'tEsT',
];
$this
->assertEquals($expected, $result);
// Test a placeholder without accessing a property.
$text = 'test {{string}}';
$result = $this->placeholderResolver
->resolvePlaceholders($text, [
'string' => $this->typedDataManager
->create(DataDefinition::create('string'), 'replacement'),
]);
$expected = [
'{{string}}' => 'replacement',
];
$this
->assertEquals($expected, $result);
// Test a global context variable placeholder.
$text = 'test {{ @typed_data_global_context_test.simple_test_context:dragons }}';
$context = $this->simpleTestContext
->getRuntimeContexts([
'dragons',
]);
$result = $this->placeholderResolver
->resolvePlaceholders($text, [
'@typed_data_global_context_test.simple_test_context:dragons' => $context['dragons']
->getContextData(),
]);
$expected = [
'{{ @typed_data_global_context_test.simple_test_context:dragons }}' => 'Dragons are better than unicorns!',
];
$this
->assertEquals($expected, $result);
}