Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
project
drupal
Commits
88a87872
Commit
88a87872
authored
Feb 16, 2017
by
xjm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue
#2832264
by mpdonadio, jhedstrom: DateTimeItemTest is not valid
parent
04ca0b78
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
18 deletions
+119
-18
core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
+119
-18
No files found.
core/modules/datetime/tests/src/Kernel/DateTimeItemTest.php
View file @
88a87872
...
...
@@ -4,6 +4,7 @@
use
Drupal\Core\Field\FieldItemListInterface
;
use
Drupal\Core\Field\FieldItemInterface
;
use
Drupal\datetime\Plugin\Field\FieldType\DateTimeItem
;
use
Drupal\entity_test
\
Entity\EntityTest
;
use
Drupal\field\Entity\FieldConfig
;
use
Drupal\Tests\field\Kernel\FieldKernelTestBase
;
...
...
@@ -16,6 +17,20 @@
*/
class
DateTimeItemTest
extends
FieldKernelTestBase
{
/**
* A field storage to use in this test class.
*
* @var \Drupal\field\Entity\FieldStorageConfig
*/
protected
$fieldStorage
;
/**
* The field used in this test class.
*
* @var \Drupal\field\Entity\FieldConfig
*/
protected
$field
;
/**
* Modules to enable.
*
...
...
@@ -27,33 +42,74 @@ protected function setUp() {
parent
::
setUp
();
// Create a field with settings to validate.
$field
_s
torage
=
FieldStorageConfig
::
create
(
array
(
$
this
->
field
S
torage
=
FieldStorageConfig
::
create
(
array
(
'field_name'
=>
'field_datetime'
,
'type'
=>
'datetime'
,
'entity_type'
=>
'entity_test'
,
'settings'
=>
array
(
'datetime_type'
=>
'd
ate
'
),
'settings'
=>
array
(
'datetime_type'
=>
D
ate
TimeItem
::
DATETIME_TYPE_DATETIME
),
));
$field
_s
torage
->
save
();
$field
=
FieldConfig
::
create
([
'field_storage'
=>
$field
_s
torage
,
$
this
->
field
S
torage
->
save
();
$
this
->
field
=
FieldConfig
::
create
([
'field_storage'
=>
$
this
->
field
S
torage
,
'bundle'
=>
'entity_test'
,
'settings'
=>
array
(
'default_value'
=>
'blank'
,
),
]);
$field
->
save
();
$this
->
field
->
save
();
}
/**
* Tests using entity fields of the datetime field type.
*/
public
function
testDateTime
()
{
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATETIME
);
$this
->
fieldStorage
->
save
();
// Verify entity creation.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01T20:00:00'
;
$entity
->
field_datetime
=
$value
;
$entity
->
name
->
value
=
$this
->
randomMachineName
();
$this
->
entityValidateAndSave
(
$entity
);
// Verify entity has been created properly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertTrue
(
$entity
->
field_datetime
instanceof
FieldItemListInterface
,
'Field implements interface.'
);
$this
->
assertTrue
(
$entity
->
field_datetime
[
0
]
instanceof
FieldItemInterface
,
'Field item implements interface.'
);
$this
->
assertEqual
(
$entity
->
field_datetime
->
value
,
$value
);
$this
->
assertEqual
(
$entity
->
field_datetime
[
0
]
->
value
,
$value
);
// Verify changing the date value.
$new_value
=
'2016-11-04T00:21:00'
;
$entity
->
field_datetime
->
value
=
$new_value
;
$this
->
assertEqual
(
$entity
->
field_datetime
->
value
,
$new_value
);
// Read changed entity and assert changed values.
$this
->
entityValidateAndSave
(
$entity
);
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertEqual
(
$entity
->
field_datetime
->
value
,
$new_value
);
// Test the generateSampleValue() method.
$entity
=
EntityTest
::
create
();
$entity
->
field_datetime
->
generateSampleItems
();
$this
->
entityValidateAndSave
(
$entity
);
}
/**
* Tests using entity fields of the date field type.
*/
public
function
testDateTimeItem
()
{
public
function
testDateOnly
()
{
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATE
);
$this
->
fieldStorage
->
save
();
// Verify entity creation.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01
T20:00:00Z
'
;
$value
=
'2014-01-01'
;
$entity
->
field_datetime
=
$value
;
$entity
->
name
->
value
=
$this
->
randomMachineName
();
$
entity
->
save
(
);
$
this
->
entityValidateAndSave
(
$entity
);
// Verify entity has been created properly.
$id
=
$entity
->
id
();
...
...
@@ -64,12 +120,12 @@ public function testDateTimeItem() {
$this
->
assertEqual
(
$entity
->
field_datetime
[
0
]
->
value
,
$value
);
// Verify changing the date value.
$new_value
=
$this
->
randomMachineName
()
;
$new_value
=
'2016-11-04'
;
$entity
->
field_datetime
->
value
=
$new_value
;
$this
->
assertEqual
(
$entity
->
field_datetime
->
value
,
$new_value
);
// Read changed entity and assert changed values.
$
entity
->
save
(
);
$
this
->
entityValidateAndSave
(
$entity
);
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertEqual
(
$entity
->
field_datetime
->
value
,
$new_value
);
...
...
@@ -83,11 +139,15 @@ public function testDateTimeItem() {
* Tests DateTimeItem::setValue().
*/
public
function
testSetValue
()
{
// Test a date+time field.
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATETIME
);
$this
->
fieldStorage
->
save
();
// Test DateTimeItem::setValue() using string.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01T20:00:00
Z
'
;
$value
=
'2014-01-01T20:00:00'
;
$entity
->
get
(
'field_datetime'
)
->
set
(
0
,
$value
);
$
entity
->
save
(
);
$
this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
...
...
@@ -95,9 +155,33 @@ public function testSetValue() {
// Test DateTimeItem::setValue() using property array.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01T20:00:00
Z
'
;
$value
=
'2014-01-01T20:00:00'
;
$entity
->
set
(
'field_datetime'
,
$value
);
$entity
->
save
();
$this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertEqual
(
$entity
->
field_datetime
[
0
]
->
value
,
$value
,
'DateTimeItem::setValue() works with array value.'
);
// Test a date-only field.
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATE
);
$this
->
fieldStorage
->
save
();
// Test DateTimeItem::setValue() using string.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01'
;
$entity
->
get
(
'field_datetime'
)
->
set
(
0
,
$value
);
$this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertEqual
(
$entity
->
field_datetime
[
0
]
->
value
,
$value
,
'DateTimeItem::setValue() works with string value.'
);
// Test DateTimeItem::setValue() using property array.
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01'
;
$entity
->
set
(
'field_datetime'
,
$value
);
$this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
...
...
@@ -108,12 +192,29 @@ public function testSetValue() {
* Tests setting the value of the DateTimeItem directly.
*/
public
function
testSetValueProperty
()
{
// Test Date::setValue().
// Test Date::setValue() with a date+time field.
// Test a date+time field.
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATETIME
);
$this
->
fieldStorage
->
save
();
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01T20:00:00'
;
$entity
->
set
(
'field_datetime'
,
$value
);
$this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
$this
->
assertEqual
(
$entity
->
field_datetime
[
0
]
->
value
,
$value
,
'"Value" property can be set directly.'
);
// Test Date::setValue() with a date-only field.
// Test a date+time field.
$this
->
fieldStorage
->
setSetting
(
'datetime_type'
,
DateTimeItem
::
DATETIME_TYPE_DATE
);
$this
->
fieldStorage
->
save
();
$entity
=
EntityTest
::
create
();
$value
=
'2014-01-01
T20:00:00Z
'
;
$value
=
'2014-01-01'
;
$entity
->
set
(
'field_datetime'
,
$value
);
$
entity
->
save
(
);
$
this
->
entityValidateAndSave
(
$entity
);
// Load the entity and ensure the field was saved correctly.
$id
=
$entity
->
id
();
$entity
=
EntityTest
::
load
(
$id
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment