123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- /**
- * @file
- * Contains FeedsMapperDateTestCase.
- */
- /**
- * Test case for CCK date field mapper mappers/date.inc.
- *
- * @todo: Add test method iCal
- * @todo: Add test method for end date
- */
- class FeedsMapperDateTestCase extends FeedsMapperTestCase {
- public static function getInfo() {
- return array(
- 'name' => 'Mapper: Date',
- 'description' => 'Test Feeds Mapper support for CCK Date fields.',
- 'group' => 'Feeds',
- 'dependencies' => array('date'),
- );
- }
- public function setUp() {
- parent::setUp(array('date_api', 'date'));
- variable_set('date_default_timezone', 'UTC');
- }
- /**
- * Basic test loading a single entry CSV file.
- */
- public function test() {
- $this->drupalGet('admin/config/regional/settings');
- // Create content type.
- $typename = $this->createContentType(array(), array(
- 'date' => 'date',
- 'datestamp' => 'datestamp',
- //'datetime' => 'datetime', // REMOVED because the field is broken ATM.
- ));
- // Hack to get date fields to not round to every 15 minutes.
- foreach (array('date', 'datestamp') as $field) {
- $field = 'field_' . $field;
- $edit = array(
- 'widget_type' => 'date_select',
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field . '/widget-type', $edit, 'Continue');
- $edit = array(
- 'instance[widget][settings][increment]' => 1,
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field, $edit, 'Save settings');
- $edit = array(
- 'widget_type' => 'date_text',
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field . '/widget-type', $edit, 'Continue');
- }
- // Create and configure importer.
- $this->createImporterConfiguration('Date RSS', 'daterss');
- $this->setSettings('daterss', NULL, array(
- 'content_type' => '',
- 'import_period' => FEEDS_SCHEDULE_NEVER,
- ));
- $this->setPlugin('daterss', 'FeedsFileFetcher');
- $this->setSettings('daterss', 'FeedsNodeProcessor', array(
- 'bundle' => $typename,
- ));
- $this->addMappings('daterss', array(
- 0 => array(
- 'source' => 'title',
- 'target' => 'title',
- ),
- 1 => array(
- 'source' => 'description',
- 'target' => 'body',
- ),
- 2 => array(
- 'source' => 'timestamp',
- 'target' => 'field_date:start',
- ),
- 3 => array(
- 'source' => 'timestamp',
- 'target' => 'field_datestamp:start',
- ),
- ));
- $edit = array(
- 'allowed_extensions' => 'rss2',
- );
- $this->drupalPost('admin/structure/feeds/daterss/settings/FeedsFileFetcher', $edit, 'Save');
- // Import CSV file.
- $this->importFile('daterss', $this->absolutePath() . '/tests/feeds/googlenewstz.rss2');
- $this->assertText('Created 6 nodes');
- // Check the imported nodes.
- $values = array(
- '01/06/2010 - 19:26',
- '01/06/2010 - 10:21',
- '01/06/2010 - 13:42',
- '01/06/2010 - 06:05',
- '01/06/2010 - 11:26',
- '01/07/2010 - 00:26',
- );
- for ($i = 1; $i <= 6; $i++) {
- $this->drupalGet("node/$i/edit");
- $this->assertNodeFieldValue('date', $values[$i-1]);
- $this->assertNodeFieldValue('datestamp', $values[$i-1]);
- }
- }
- protected function getFormFieldsNames($field_name, $index) {
- if (in_array($field_name, array('date', 'datetime', 'datestamp'))) {
- return array("field_{$field_name}[und][{$index}][value][date]");
- }
- else {
- return parent::getFormFieldsNames($field_name, $index);
- }
- }
- /**
- * Tests if values are cleared out when an empty value is provided.
- */
- public function testClearOutValues() {
- // Create content type.
- $typename = $this->createContentType(array(), array(
- 'date' => 'date',
- 'datestamp' => 'datestamp',
- 'datetime' => 'datetime',
- ));
- // Hack to get date fields to not round to every 15 minutes.
- foreach (array('date', 'datestamp', 'datetime') as $field) {
- $field = 'field_' . $field;
- $edit = array(
- 'widget_type' => 'date_select',
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field . '/widget-type', $edit, 'Continue');
- $edit = array(
- 'instance[widget][settings][increment]' => 1,
- 'field[settings][enddate_get]' => 1,
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field, $edit, 'Save settings');
- $edit = array(
- 'widget_type' => 'date_text',
- );
- $this->drupalPost('admin/structure/types/manage/' . $typename . '/fields/' . $field . '/widget-type', $edit, 'Continue');
- }
- // Create and configure importer.
- $this->createImporterConfiguration('Content CSV', 'csv');
- $this->setSettings('csv', NULL, array(
- 'content_type' => '',
- 'import_period' => FEEDS_SCHEDULE_NEVER,
- ));
- $this->setPlugin('csv', 'FeedsFileFetcher');
- $this->setPlugin('csv', 'FeedsCSVParser');
- $this->setSettings('csv', 'FeedsNodeProcessor', array(
- 'bundle' => $typename,
- 'update_existing' => 1,
- ));
- $this->addMappings('csv', array(
- 0 => array(
- 'source' => 'title',
- 'target' => 'title',
- 'unique' => TRUE,
- ),
- 1 => array(
- 'source' => 'created',
- 'target' => 'field_date:start',
- ),
- 2 => array(
- 'source' => 'end',
- 'target' => 'field_date:end',
- ),
- 3 => array(
- 'source' => 'created',
- 'target' => 'field_datestamp:start',
- ),
- 4 => array(
- 'source' => 'end',
- 'target' => 'field_datestamp:end',
- ),
- 5 => array(
- 'source' => 'created',
- 'target' => 'field_datetime:start',
- ),
- 6 => array(
- 'source' => 'end',
- 'target' => 'field_datetime:end',
- ),
- ));
- // Import CSV file.
- $this->importFile('csv', $this->absolutePath() . '/tests/feeds/content_date.csv');
- $this->assertText('Created 2 nodes');
- // Check the imported nodes.
- $date_values = array(
- 1 => array(
- 'created' => '09/03/2009 - 00:12',
- 'end' => '11/03/2012 - 09:58',
- ),
- 2 => array(
- 'created' => '09/02/2009 - 22:59',
- 'end' => '11/03/2012 - 08:46',
- ),
- );
- for ($i = 1; $i <= 2; $i++) {
- $this->drupalGet("node/$i/edit");
- $this->assertNodeFieldValue('date', $date_values[$i]['created']);
- $this->assertFieldByName('field_date[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNodeFieldValue('datestamp', $date_values[$i]['created']);
- $this->assertFieldByName('field_datestamp[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNodeFieldValue('datetime', $date_values[$i]['created']);
- $this->assertFieldByName('field_datetime[und][0][value2][date]', $date_values[$i]['end']);
- }
- // Import CSV file with empty values.
- $this->importFile('csv', $this->absolutePath() . '/tests/feeds/content_empty.csv');
- $this->assertText('Updated 2 nodes');
- // Check if all values were cleared out for both nodes.
- for ($i = 1; $i <= 2; $i++) {
- $this->drupalGet("node/$i/edit");
- $this->assertNoNodeFieldValue('date', $date_values[$i]['created']);
- $this->assertNoFieldByName('field_date[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNoNodeFieldValue('datestamp', $date_values[$i]['created']);
- $this->assertNoFieldByName('field_datestamp[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNoNodeFieldValue('datetime', $date_values[$i]['created']);
- $this->assertNoFieldByName('field_datetime[und][0][value2][date]', $date_values[$i]['end']);
- $this->drupalGet("node/$i");
- $this->assertNoText('date_label');
- $this->assertNoText('datestamp_label');
- $this->assertNoText('datetime_label');
- }
- // Re-import the first file again and check if the values returned.
- $this->importFile('csv', $this->absolutePath() . '/tests/feeds/content_date.csv');
- $this->assertText('Updated 2 nodes');
- for ($i = 1; $i <= 2; $i++) {
- $this->drupalGet("node/$i/edit");
- $this->assertNodeFieldValue('date', $date_values[$i]['created']);
- $this->assertFieldByName('field_date[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNodeFieldValue('datestamp', $date_values[$i]['created']);
- $this->assertFieldByName('field_datestamp[und][0][value2][date]', $date_values[$i]['end']);
- $this->assertNodeFieldValue('datetime', $date_values[$i]['created']);
- $this->assertFieldByName('field_datetime[und][0][value2][date]', $date_values[$i]['end']);
- }
- // Import CSV file with non-existent values.
- $this->importFile('csv', $this->absolutePath() . '/tests/feeds/content_non_existent.csv');
- $this->assertText('Updated 2 nodes');
- // Check if all values were cleared out for node 1.
- $this->drupalGet('node/1/edit');
- $this->assertNoNodeFieldValue('date', $date_values[1]['created']);
- $this->assertNoFieldByName('field_date[und][0][value2][date]', $date_values[1]['end']);
- $this->assertNoNodeFieldValue('datestamp', $date_values[1]['created']);
- $this->assertNoFieldByName('field_datestamp[und][0][value2][date]', $date_values[1]['end']);
- $this->assertNoNodeFieldValue('datetime', $date_values[1]['created']);
- $this->assertNoFieldByName('field_datetime[und][0][value2][date]', $date_values[1]['end']);
- // Check if labels for fields that should be cleared out are not shown.
- $this->drupalGet('node/1');
- $this->assertNoText('date_label');
- $this->assertNoText('datestamp_label');
- $this->assertNoText('datetime_label');
- }
- }
|