
| Current Path : /var/www/html/holz-machines/web/core/modules/datetime/tests/src/Functional/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/holz-machines/web/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php |
<?php
namespace Drupal\Tests\datetime\Functional;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
/**
* Tests Datetime widgets functionality.
*
* @group datetime
*/
class DateTimeWidgetTest extends DateTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* The default display settings to use for the formatters.
*
* @var array
*/
protected $defaultSettings = ['timezone_override' => ''];
/**
* {@inheritdoc}
*/
protected function getTestFieldType() {
return 'datetime';
}
/**
* Test default value functionality.
*/
public function testDateonlyDefaultValue() {
// Create a test content type.
$this->drupalCreateContentType(['type' => 'dateonly_content']);
// Create a field storage with settings to validate.
$field_storage = FieldStorageConfig::create([
'field_name' => 'field_dateonly',
'entity_type' => 'node',
'type' => 'datetime',
'settings' => ['datetime_type' => 'date'],
]);
$field_storage->save();
$field = FieldConfig::create([
'field_storage' => $field_storage,
'bundle' => 'dateonly_content',
]);
$field->save();
$edit = [
'fields[field_dateonly][region]' => 'content',
'fields[field_dateonly][type]' => 'datetime_default',
];
$this->drupalGet('admin/structure/types/manage/dateonly_content/form-display');
$this->submitForm($edit, 'Save');
$this->drupalGet('admin/structure/types/manage/dateonly_content/display');
$this->submitForm($edit, 'Save');
// Set now as default_value.
$edit = [
'default_value_input[default_date_type]' => 'now',
];
$this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly');
$this->submitForm($edit, 'Save settings');
// Check that default value is selected in default value form.
$this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly');
$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);
$this->drupalGet('node/add/dateonly_content');
$request_time = $this->container->get('datetime.time')->getRequestTime();
$today = $this->dateFormatter->format($request_time, 'html_date', NULL, $timezone);
$this->assertSession()->fieldValueEquals('field_dateonly[0][value][date]', $today);
$edit = [
'title[0][value]' => $timezone,
];
$this->submitForm($edit, 'Save');
$this->assertSession()->pageTextContains('dateonly_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_dateonly->value);
}
}
}