Skip to content

Commit 2552230

Browse files
ceesgeenemglamanclaude
authored
Add stubs for daterange field type (#786)
* Add stubs for datetime field type * Set date property of DateTimeItem to be writable * Add stubs for daterange field type * Use property instead of property-read * Use never type for DateRangeItem::$date and add test coverage DateRangeItem::propertyDefinitions() does not call parent:: so the inherited $date property from DateTimeItem does not exist at runtime. Using @Property never $date accurately signals this is inaccessible, rather than null which implied the property was valid to access. Also add assertType('never', ...) to cover this override in tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Matt Glaman <nmd.matt@gmail.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5882da9 commit 2552230

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Drupal\datetime_range\Plugin\Field\FieldType;
4+
5+
use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
6+
7+
/**
8+
* @property never $date
9+
* Even though this extends DateTimeItem, the date property does not actually
10+
* exist. DateRangeItem::propertyDefinitions() does not call parent:: and does
11+
* not define 'date'. Use $start_date instead.
12+
* @property ?\Drupal\Core\Datetime\DrupalDateTime $start_date
13+
* @property ?string $end_value
14+
* @property ?\Drupal\Core\Datetime\DrupalDateTime $end_date
15+
*/
16+
class DateRangeItem extends DateTimeItem {
17+
18+
}

tests/src/Type/data/field-types.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Drupal\Core\Field\Plugin\Field\FieldType\UriItem;
2121
use Drupal\Core\Field\Plugin\Field\FieldType\UuidItem;
2222
use Drupal\datetime\Plugin\Field\FieldType\DateTimeItem;
23+
use Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem;
2324
use Drupal\file\Plugin\Field\FieldType\FileItem;
2425
use Drupal\file\Plugin\Field\FieldType\FileUriItem;
2526
use Drupal\link\Plugin\Field\FieldType\LinkItem;
@@ -156,6 +157,16 @@
156157
assertType('string|null', $datetime_field->value);
157158
assertType('Drupal\Core\Datetime\DrupalDateTime|null', $datetime_field->date);
158159

160+
// DateRangeItem.
161+
$daterange_field = $node->get('field_daterange')->first();
162+
assert($daterange_field instanceof DateRangeItem);
163+
assertType(DateRangeItem::class, $daterange_field);
164+
assertType('string|null', $daterange_field->value);
165+
assertType('never', $daterange_field->date);
166+
assertType('Drupal\Core\Datetime\DrupalDateTime|null', $daterange_field->start_date);
167+
assertType('string|null', $daterange_field->end_value);
168+
assertType('Drupal\Core\Datetime\DrupalDateTime|null', $daterange_field->end_date);
169+
159170
// FileItem.
160171
$file_field = $node->get('field_file')->first();
161172
assert($file_field instanceof FileItem);

0 commit comments

Comments
 (0)