'Date Migration', 'description' => 'Test migration into date fields.', 'group' => 'date', 'dependencies' => array('migrate', 'features'), ); } /** * {@inheritdoc} */ public function setUp(array $modules = array()) { $modules[] = 'date_test_feature'; $modules[] = 'date_migrate_test'; parent::setUp($modules); // Make sure the migration is registered. if (function_exists('migrate_static_registration')) { // Migrate 2.6 and later. migrate_static_registration(); } else { // Migrate 2.5 and earlier. migrate_get_module_apis(TRUE); } } /** * 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. */ 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')); } }