3 namespace Drupal\Tests\datetime_range\Kernel;
5 use Drupal\Component\Utility\Unicode;
6 use Drupal\Core\Entity\Entity\EntityViewDisplay;
7 use Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem;
8 use Drupal\entity_test\Entity\EntityTest;
9 use Drupal\field\Entity\FieldConfig;
10 use Drupal\field\Entity\FieldStorageConfig;
11 use Drupal\Tests\field\Kernel\FieldKernelTestBase;
14 * Test datetime range field type via API.
18 class DateRangeItemTest extends FieldKernelTestBase {
21 * A field storage to use in this test class.
23 * @var \Drupal\field\Entity\FieldStorageConfig
25 protected $fieldStorage;
28 * The field used in this test class.
30 * @var \Drupal\field\Entity\FieldConfig
37 public static $modules = [
45 protected function setUp() {
48 // Add a datetime range field.
49 $this->fieldStorage = FieldStorageConfig::create([
50 'field_name' => Unicode::strtolower($this->randomMachineName()),
51 'entity_type' => 'entity_test',
52 'type' => 'daterange',
53 'settings' => ['datetime_type' => DateRangeItem::DATETIME_TYPE_DATE],
55 $this->fieldStorage->save();
57 $this->field = FieldConfig::create([
58 'field_storage' => $this->fieldStorage,
59 'bundle' => 'entity_test',
65 'type' => 'daterange_default',
68 'format_type' => 'fallback',
69 'separator' => 'UNTRANSLATED',
72 EntityViewDisplay::create([
73 'targetEntityType' => $this->field->getTargetEntityTypeId(),
74 'bundle' => $this->field->getTargetBundle(),
77 ])->setComponent($this->fieldStorage->getName(), $display_options)
82 * Tests the field configured for date-only.
84 public function testDateOnly() {
85 $this->fieldStorage->setSetting('datetime_type', DateRangeItem::DATETIME_TYPE_DATE);
86 $field_name = $this->fieldStorage->getName();
88 $entity = EntityTest::create([
89 'name' => $this->randomString(),
91 'value' => '2016-09-21',
92 'end_value' => '2016-09-21',
96 // Dates are saved without a time value. When they are converted back into
97 // a \Drupal\datetime\DateTimeComputed object they should all have the same
99 $start_date = $entity->{$field_name}->start_date;
101 $end_date = $entity->{$field_name}->end_date;
102 $this->assertEquals($start_date->getTimestamp(), $end_date->getTimestamp());
103 $this->assertEquals('12:00:00', $start_date->format('H:i:s'));
104 $this->assertEquals('12:00:00', $end_date->format('H:i:s'));