You are here

public function DateMigrateTestCase::testDateImport in Date 7.2

Same name and namespace in other branches
  1. 7.3 tests/DateMigrateTestCase.test \DateMigrateTestCase::testDateImport()

Verify that date fields are imported correctly.

When no timezone is explicitly provided with the source data, we want the displayed time on the Drupal site to match that in the source data. To validate that, we make sure we have set a consistent timezone at the PHP and Drupal levels, and that the format used on the page is not locale- dependent (no day or month names). Then, we can just look for the desired date/time strings in the node page.

File

tests/DateMigrateTestCase.test, line 54
Test for using date fields with Migrate module.

Class

DateMigrateTestCase
Test for using date fields with Migrate module.

Code

public function testDateImport() {
  date_default_timezone_set('America/Los_Angeles');
  variable_set('date_default_timezone', 'America/Los_Angeles');
  variable_set('date_format_medium', 'Y-m-d H:i');
  $migration = Migration::getInstance('DateExample');
  $result = $migration
    ->processImport();
  $this
    ->assertEqual($result, Migration::RESULT_COMPLETED, t('Variety term import returned RESULT_COMPLETED'));
  $rawnodes = node_load_multiple(FALSE, array(
    'type' => 'date_test',
  ), TRUE);
  $this
    ->assertEqual(count($rawnodes), 2, t('Two sample nodes created'));

  // Test the first imported node.
  $node = reset($rawnodes);
  $this
    ->drupalGet('/node/' . $node->nid);
  $this
    ->assertText('Simple example', t('Found the first node'));
  $this
    ->assertText('This is pretty straight-forward.', t('Found the first node'));
  $this
    ->assertText('2011-05-12 19:43', t('Simple date field found'));
  $this
    ->assertText('2011-06-13 18:32 to 2011-07-23 10:32', t('Date range field found'));
  $this
    ->assertText('2011-07-22 12:13', t('Datestamp field found'));

  // This needs to output the exact time and now "(All day)" because this
  // field does not have the "all day" option selected.
  $this
    ->assertText('2011-08-01 00:00 to 2011-09-01 00:00', t('Datestamp range field found'));
  $this
    ->assertText('2011-11-18 15:00', t('Datetime field with +9 timezone found'));
  $this
    ->assertText('2011-10-30 14:43 to 2011-12-31 17:59', t('Datetime range field with -5 timezone found'));
  $this
    ->assertText('2011-11-25 09:01', t('First date repeat instance found'));
  $this
    ->assertText('2011-12-09 09:01', t('Second date repeat instance found'));
  $this
    ->assertNoText('2011-12-23 09:01', t('Skipped date repeat instance not found'));
  $this
    ->assertText('2012-05-11 09:01', t('Last date repeat instance found'));

  // Test the second imported node.
  $node = next($rawnodes);
  $this
    ->drupalGet('/node/' . $node->nid);
  $this
    ->assertText('Example with multi-value fields', t('Found the second node'));
  $this
    ->assertText('This is not as straight-forward.', t('Found the second node'));
  $this
    ->assertText('2012-06-21 15:32', t('First date value found'));
  $this
    ->assertText('2012-12-02 11:08', t('Second date value found'));
  $this
    ->assertText('2004-02-03 01:15', t('Start for first date range found'));
  $this
    ->assertText('2005-03-04 22:11', t('End for first date range found'));
  $this
    ->assertText('2014-09-01 17:21', t('Start for second date range found'));
  $this
    ->assertText('2015-12-23 00:01', t('End for first second range found'));
}