Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / datetime_range / tests / src / Kernel / SeparatorTranslationTest.php
1 <?php
2
3 namespace Drupal\Tests\datetime_range\Kernel;
4
5 use Drupal\Core\Entity\Entity\EntityViewDisplay;
6 use Drupal\Core\Language\Language;
7 use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
8 use Drupal\entity_test\Entity\EntityTest;
9 use Drupal\field\Entity\FieldConfig;
10 use Drupal\field\Entity\FieldStorageConfig;
11 use Drupal\KernelTests\KernelTestBase;
12 use Drupal\language\Entity\ConfigurableLanguage;
13
14 /**
15  * Test to ensure the datetime range separator is translatable.
16  *
17  * @group datetime
18  */
19 class SeparatorTranslationTest extends KernelTestBase {
20
21   /**
22    * A field storage to use in this test class.
23    *
24    * @var \Drupal\field\Entity\FieldStorageConfig
25    */
26   protected $fieldStorage;
27
28   /**
29    * The field used in this test class.
30    *
31    * @var \Drupal\field\Entity\FieldConfig
32    */
33   protected $field;
34
35   /**
36    * {@inheritdoc}
37    */
38   public static $modules = [
39     'datetime',
40     'datetime_range',
41     'entity_test',
42     'field',
43     'language',
44     'system',
45     'user',
46   ];
47
48   /**
49    * {@inheritdoc}
50    */
51   protected function setUp() {
52     parent::setUp();
53
54     $this->installEntitySchema('entity_test');
55     $this->installEntitySchema('user');
56     $this->installConfig(['system']);
57     $this->installSchema('system', ['sequences', 'key_value']);
58
59     // Add a datetime range field.
60     $this->fieldStorage = FieldStorageConfig::create([
61       'field_name' => mb_strtolower($this->randomMachineName()),
62       'entity_type' => 'entity_test',
63       'type' => 'daterange',
64       'settings' => ['datetime_type' => DateTimeItem::DATETIME_TYPE_DATE],
65     ]);
66     $this->fieldStorage->save();
67
68     $this->field = FieldConfig::create([
69       'field_storage' => $this->fieldStorage,
70       'bundle' => 'entity_test',
71       'required' => TRUE,
72     ]);
73     $this->field->save();
74
75     $display_options = [
76       'type' => 'daterange_default',
77       'label' => 'hidden',
78       'settings' => [
79         'format_type' => 'fallback',
80         'separator' => 'UNTRANSLATED',
81       ],
82     ];
83     EntityViewDisplay::create([
84       'targetEntityType' => $this->field->getTargetEntityTypeId(),
85       'bundle' => $this->field->getTargetBundle(),
86       'mode' => 'default',
87       'status' => TRUE,
88     ])->setComponent($this->fieldStorage->getName(), $display_options)
89       ->save();
90   }
91
92   /**
93    * Tests the translation of the range separator.
94    */
95   public function testSeparatorTranslation() {
96     // Create an entity.
97     $entity = EntityTest::create([
98       'name' => $this->randomString(),
99       $this->fieldStorage->getName() => [
100         'value' => '2016-09-20',
101         'end_value' => '2016-09-21',
102       ],
103     ]);
104
105     // Verify the untranslated separator.
106     $display = EntityViewDisplay::collectRenderDisplay($entity, 'default');
107     $build = $display->build($entity);
108     $output = $this->container->get('renderer')->renderRoot($build);
109     $this->verbose($output);
110     $this->assertContains('UNTRANSLATED', (string) $output);
111
112     // Translate the separator.
113     ConfigurableLanguage::createFromLangcode('nl')->save();
114     /** @var \Drupal\language\ConfigurableLanguageManagerInterface $language_manager */
115     $language_manager = $this->container->get('language_manager');
116     $language_manager->getLanguageConfigOverride('nl', 'core.entity_view_display.entity_test.entity_test.default')
117       ->set('content.' . $this->fieldStorage->getName() . '.settings.separator', 'NL_TRANSLATED!')
118       ->save();
119
120     $this->container->get('language.config_factory_override')
121       ->setLanguage(new Language(['id' => 'nl']));
122     $this->container->get('cache_tags.invalidator')->invalidateTags($entity->getCacheTags());
123     $display = EntityViewDisplay::collectRenderDisplay($entity, 'default');
124     $build = $display->build($entity);
125     $output = $this->container->get('renderer')->renderRoot($build);
126     $this->verbose($output);
127     $this->assertContains('NL_TRANSLATED!', (string) $output);
128   }
129
130 }