function DateTimeWidgetTest::testDateOnlyDefaultValue
Same name in other branches
- 9 core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php \Drupal\Tests\datetime\Functional\DateTimeWidgetTest::testDateonlyDefaultValue()
- 10 core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php \Drupal\Tests\datetime\Functional\DateTimeWidgetTest::testDateOnlyDefaultValue()
Test default value functionality.
File
-
core/
modules/ datetime/ tests/ src/ Functional/ DateTimeWidgetTest.php, line 39
Class
- DateTimeWidgetTest
- Tests Datetime widgets functionality.
Namespace
Drupal\Tests\datetime\FunctionalCode
public function testDateOnlyDefaultValue() : void {
// Create a test content type.
$this->drupalCreateContentType([
'type' => 'date_only_content',
]);
// Create a field storage with settings to validate.
$field_storage = FieldStorageConfig::create([
'field_name' => 'field_date_only',
'entity_type' => 'node',
'type' => 'datetime',
'settings' => [
'datetime_type' => 'date',
],
]);
$field_storage->save();
$field = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => 'date_only_content',
]);
$field->save();
$edit = [
'fields[field_date_only][region]' => 'content',
'fields[field_date_only][type]' => 'datetime_default',
];
$this->drupalGet('admin/structure/types/manage/date_only_content/form-display');
$this->submitForm($edit, 'Save');
$this->drupalGet('admin/structure/types/manage/date_only_content/display');
$this->submitForm($edit, 'Save');
// Set now as default_value.
$edit = [
'set_default_value' => '1',
'default_value_input[default_date_type]' => 'now',
];
$this->drupalGet('admin/structure/types/manage/date_only_content/fields/node.date_only_content.field_date_only');
$this->submitForm($edit, 'Save settings');
// Check that default value is selected in default value form.
$this->drupalGet('admin/structure/types/manage/date_only_content/fields/node.date_only_content.field_date_only');
$option_field = $this->assertSession()
->optionExists('edit-default-value-input-default-date-type', 'now');
$this->assertTrue($option_field->hasAttribute('selected'));
$this->assertSession()
->fieldValueEquals('default_value_input[default_date]', '');
// Loop through defined timezones to test that date-only defaults work at
// the extremes.
foreach (static::$timezones as $timezone) {
$this->setSiteTimezone($timezone);
$this->assertEquals($timezone, $this->config('system.date')
->get('timezone.default'), 'Time zone set to ' . $timezone);
// The time of the request is determined very early on in the request so
// use the current time prior to making a request.
$request_time = $this->container
->get('datetime.time')
->getCurrentTime();
$this->drupalGet('node/add/date_only_content');
$today = $this->dateFormatter
->format($request_time, 'html_date', NULL, $timezone);
$this->assertSession()
->fieldValueEquals('field_date_only[0][value][date]', $today);
$edit = [
'title[0][value]' => $timezone,
];
$this->submitForm($edit, 'Save');
$this->assertSession()
->pageTextContains('date_only_content ' . $timezone . ' has been created');
$node = $this->drupalGetNodeByTitle($timezone);
$today_storage = $this->dateFormatter
->format($request_time, 'html_date', NULL, $timezone);
$this->assertEquals($today_storage, $node->field_date_only->value);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.