You are here

class DateFieldTest in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php \Drupal\Tests\datetime\Unit\Plugin\migrate\field\DateFieldTest
  2. 9 core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php \Drupal\Tests\datetime\Unit\Plugin\migrate\field\DateFieldTest

Provides unit tests for the DateField Plugin.

@coversDefaultClass \Drupal\datetime\Plugin\migrate\field\DateField

@group migrate

Hierarchy

  • class \Drupal\Tests\UnitTestCase extends \PHPUnit\Framework\TestCase uses \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, PhpUnitWarnings
    • class \Drupal\Tests\datetime\Unit\Plugin\migrate\field\DateFieldTest

Expanded class hierarchy of DateFieldTest

File

core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php, line 18

Namespace

Drupal\Tests\datetime\Unit\Plugin\migrate\field
View source
class DateFieldTest extends UnitTestCase {

  /**
   * Tests defineValueProcessPipeline.
   *
   * @covers ::defineValueProcessPipeline
   *
   * @dataProvider providerTestDefineValueProcessPipeline
   */
  public function testDefineValueProcessPipeline($data, $from_format, $to_format) {
    $migration = $this
      ->createMock('Drupal\\migrate\\Plugin\\MigrationInterface');
    $pipeline = [
      'plugin' => 'sub_process',
      'source' => 'field_date',
      'process' => [
        'value' => [
          'plugin' => 'format_date',
          'from_format' => $from_format,
          'to_format' => $to_format,
          'source' => 'value',
        ],
      ],
    ];

    // If there is a todate then add a process for the end value.
    if (isset($data['field_definition']['data'])) {
      $tmp = is_string($data['field_definition']['data']) ? unserialize($data['field_definition']['data']) : '';
      $todate = $tmp['settings']['todate'] ?? NULL;
      if (!empty($todate)) {
        $pipeline['process']['end_value'] = [
          'plugin' => 'format_date',
          'from_format' => $from_format,
          'to_format' => $to_format,
          'source' => 'value2',
        ];
      }
    }
    $migration
      ->expects($this
      ->once())
      ->method('mergeProcessOfProperty')
      ->with('field_date', $pipeline)
      ->will($this
      ->returnValue($migration));
    $plugin = new DateField([], '', []);
    $plugin
      ->defineValueProcessPipeline($migration, 'field_date', $data);
  }

  /**
   * Provides data for testDefineValueProcessPipeline().
   */
  public function providerTestDefineValueProcessPipeline() {
    return [
      [
        [
          'type' => 'date',
        ],
        'Y-m-d\\TH:i:s',
        'Y-m-d\\TH:i:s',
      ],
      [
        [
          'type' => 'datestamp',
        ],
        'U',
        'U',
      ],
      [
        [
          'type' => 'datetime',
        ],
        'Y-m-d H:i:s',
        'Y-m-d\\TH:i:s',
      ],
      [
        [
          'type' => 'datetime',
          'field_definition' => [
            'data' => serialize([
              'settings' => [
                'granularity' => [
                  'hour' => 0,
                  'minute' => 0,
                  'second' => 0,
                ],
              ],
            ]),
          ],
        ],
        'Y-m-d H:i:s',
        'Y-m-d',
      ],
      [
        [
          'type' => 'date',
          'field_definition' => [
            'data' => serialize([
              'settings' => [
                'granularity' => [
                  0 => 'year',
                  1 => 'month',
                ],
                'todate' => '',
              ],
            ]),
          ],
        ],
        'Y-m-d\\TH:i:s',
        'Y-m-d',
      ],
      'datetime with a todate' => [
        [
          'type' => 'datetime',
          'field_definition' => [
            'data' => serialize([
              'settings' => [
                'granularity' => [
                  'hour' => 0,
                  'minute' => 0,
                  'second' => 0,
                ],
                'todate' => 'optional',
              ],
            ]),
          ],
        ],
        'Y-m-d H:i:s',
        'Y-m-d',
      ],
    ];
  }

  /**
   * Tests invalid date types throw an exception.
   *
   * @covers ::defineValueProcessPipeline
   */
  public function testDefineValueProcessPipelineException() {
    $migration = $this
      ->createMock('Drupal\\migrate\\Plugin\\MigrationInterface');
    $plugin = new DateField([], '', []);
    $this
      ->expectException(MigrateException::class);
    $plugin
      ->defineValueProcessPipeline($migration, 'field_date', [
      'type' => 'test',
    ]);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DateFieldTest::providerTestDefineValueProcessPipeline public function Provides data for testDefineValueProcessPipeline().
DateFieldTest::testDefineValueProcessPipeline public function Tests defineValueProcessPipeline.
DateFieldTest::testDefineValueProcessPipelineException public function Tests invalid date types throw an exception.
PhpUnitWarnings::$deprecationWarnings private static property Deprecation warnings from PHPUnit to raise with @trigger_error().
PhpUnitWarnings::addWarning public function Converts PHPUnit deprecation warnings to E_USER_DEPRECATED.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 206
UnitTestCase::setUpBeforeClass public static function