3 namespace Drupal\Tests\datetime\Kernel;
5 use Drupal\Core\Datetime\DrupalDateTime;
6 use Drupal\Core\DependencyInjection\DependencySerializationTrait;
7 use Drupal\Core\Form\FormInterface;
8 use Drupal\Core\Form\FormState;
9 use Drupal\Core\Form\FormStateInterface;
10 use Drupal\KernelTests\KernelTestBase;
13 * Tests serializing a form with an injected datetime instance.
17 class DateTimeFormInjectionTest extends KernelTestBase implements FormInterface {
19 use DependencySerializationTrait;
22 * A Dblog logger instance.
24 * @var \Psr\Log\LoggerInterface
33 public static $modules = ['system', 'datetime'];
38 protected function setUp() {
40 $this->installSchema('system', ['key_value_expire', 'sequences']);
46 public function getFormId() {
47 return 'datetime_test_injection_form';
53 * @param array $element
59 public function process($element) {
66 public function buildForm(array $form, FormStateInterface $form_state) {
67 $form['datelist_element'] = [
68 '#title' => 'datelist test',
69 '#type' => 'datelist',
70 '#default_value' => new DrupalDateTime('2000-01-01 00:00:00'),
71 '#date_part_order' => [
78 '#date_text_parts' => ['year'],
79 '#date_year_range' => '2010:2020',
80 '#date_increment' => 15,
82 $form['#process'][] = [$this, 'process'];
89 public function validateForm(array &$form, FormStateInterface $form_state) {}
94 public function submitForm(array &$form, FormStateInterface $form_state) {
95 $this->assertTrue(TRUE);
96 $form_state->setRebuild();
100 * Tests custom string injection serialization.
102 public function testDatetimeSerialization() {
103 $form_state = new FormState();
104 $form_state->setRequestMethod('POST');
105 $form_state->setCached();
106 $form_builder = $this->container->get('form_builder');
107 $form_id = $form_builder->getFormId($this, $form_state);
108 $form = $form_builder->retrieveForm($form_id, $form_state);
109 $form_builder->prepareForm($form_id, $form, $form_state);
110 $form_builder->processForm($form_id, $form, $form_state);