public function DisplayApiTest::testFieldItemListView in Drupal 9
Same name and namespace in other branches
- 8 core/modules/field/tests/src/Kernel/DisplayApiTest.php \Drupal\Tests\field\Kernel\DisplayApiTest::testFieldItemListView()
Tests the FieldItemListInterface::view() method.
File
- core/
modules/ field/ tests/ src/ Kernel/ DisplayApiTest.php, line 126
Class
- DisplayApiTest
- Tests the field display API.
Namespace
Drupal\Tests\field\KernelCode
public function testFieldItemListView() {
$items = $this->entity
->get($this->fieldName);
\Drupal::service('theme_installer')
->install([
'classy',
]);
$this
->config('system.theme')
->set('default', 'classy')
->save();
// No display settings: check that default display settings are used.
$build = $items
->view();
$this
->render($build);
$settings = \Drupal::service('plugin.manager.field.formatter')
->getDefaultSettings('field_test_default');
$setting = $settings['test_formatter_setting'];
$this
->assertText($this->label, 'Label was displayed.');
foreach ($this->values as $delta => $value) {
$this
->assertText($setting . '|' . $value['value'], new FormattableMarkup('Value @delta was displayed with expected setting.', [
'@delta' => $delta,
]));
}
// Display settings: Check hidden field.
$display = [
'label' => 'hidden',
'type' => 'field_test_multiple',
'settings' => [
'test_formatter_setting_multiple' => $this
->randomMachineName(),
'alter' => TRUE,
],
];
$build = $items
->view($display);
$this
->render($build);
$setting = $display['settings']['test_formatter_setting_multiple'];
$this
->assertNoText($this->label, 'Label was not displayed.');
$this
->assertText('field_test_entity_display_build_alter', 'Alter fired, display passed.');
$this
->assertText('entity language is en', 'Language is placed onto the context.');
$array = [];
foreach ($this->values as $delta => $value) {
$array[] = $delta . ':' . $value['value'];
}
$this
->assertText($setting . '|' . implode('|', $array), 'Values were displayed with expected setting.');
// Display settings: Check visually_hidden field.
$display = [
'label' => 'visually_hidden',
'type' => 'field_test_multiple',
'settings' => [
'test_formatter_setting_multiple' => $this
->randomMachineName(),
'alter' => TRUE,
],
];
$build = $items
->view($display);
$this
->render($build);
$setting = $display['settings']['test_formatter_setting_multiple'];
$this
->assertRaw('visually-hidden', 'Label was visually hidden.');
$this
->assertText('field_test_entity_display_build_alter', 'Alter fired, display passed.');
$this
->assertText('entity language is en', 'Language is placed onto the context.');
$array = [];
foreach ($this->values as $delta => $value) {
$array[] = $delta . ':' . $value['value'];
}
$this
->assertText($setting . '|' . implode('|', $array), 'Values were displayed with expected setting.');
// Check the prepare_view steps are invoked.
$display = [
'label' => 'hidden',
'type' => 'field_test_with_prepare_view',
'settings' => [
'test_formatter_setting_additional' => $this
->randomMachineName(),
],
];
$build = $items
->view($display);
$this
->render($build);
$setting = $display['settings']['test_formatter_setting_additional'];
$this
->assertNoText($this->label, 'Label was not displayed.');
$this
->assertNoText('field_test_entity_display_build_alter', 'Alter not fired.');
foreach ($this->values as $delta => $value) {
$this
->assertText($setting . '|' . $value['value'] . '|' . ($value['value'] + 1), new FormattableMarkup('Value @delta was displayed with expected setting.', [
'@delta' => $delta,
]));
}
// View mode: check that display settings specified in the display object
// are used.
$build = $items
->view('teaser');
$this
->render($build);
$setting = $this->displayOptions['teaser']['settings']['test_formatter_setting'];
$this
->assertText($this->label, 'Label was displayed.');
foreach ($this->values as $delta => $value) {
$this
->assertText($setting . '|' . $value['value'], new FormattableMarkup('Value @delta was displayed with expected setting.', [
'@delta' => $delta,
]));
}
// Unknown view mode: check that display settings for 'default' view mode
// are used.
$build = $items
->view('unknown_view_mode');
$this
->render($build);
$setting = $this->displayOptions['default']['settings']['test_formatter_setting'];
$this
->assertText($this->label, 'Label was displayed.');
foreach ($this->values as $delta => $value) {
$this
->assertText($setting . '|' . $value['value'], new FormattableMarkup('Value @delta was displayed with expected setting.', [
'@delta' => $delta,
]));
}
}