feeds_mapper_date.test 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * @file
  4. * Test case for CCK date field mapper mappers/date.inc.
  5. */
  6. /**
  7. * Class for testing Feeds <em>content</em> mapper.
  8. *
  9. * @todo: Add test method iCal
  10. * @todo: Add test method for end date
  11. */
  12. class FeedsMapperDateTestCase extends FeedsMapperTestCase {
  13. public static function getInfo() {
  14. return array(
  15. 'name' => 'Mapper: Date',
  16. 'description' => 'Test Feeds Mapper support for CCK Date fields.',
  17. 'group' => 'Feeds',
  18. 'dependencies' => array('date'),
  19. );
  20. }
  21. public function setUp() {
  22. parent::setUp(array('date_api', 'date'));
  23. variable_set('date_default_timezone', 'UTC');
  24. }
  25. /**
  26. * Basic test loading a single entry CSV file.
  27. */
  28. public function test() {
  29. $this->drupalGet('admin/config/regional/settings');
  30. // Create content type.
  31. $typename = $this->createContentType(array(), array(
  32. 'date' => 'date',
  33. 'datestamp' => 'datestamp',
  34. //'datetime' => 'datetime', // REMOVED because the field is broken ATM.
  35. ));
  36. // Create and configure importer.
  37. $this->createImporterConfiguration('Date RSS', 'daterss');
  38. $this->setSettings('daterss', NULL, array('content_type' => '', 'import_period' => FEEDS_SCHEDULE_NEVER));
  39. $this->setPlugin('daterss', 'FeedsFileFetcher');
  40. $this->setPlugin('daterss', 'FeedsSyndicationParser');
  41. $this->setSettings('daterss', 'FeedsNodeProcessor', array('content_type' => $typename));
  42. $this->addMappings('daterss', array(
  43. 0 => array(
  44. 'source' => 'title',
  45. 'target' => 'title',
  46. ),
  47. 1 => array(
  48. 'source' => 'description',
  49. 'target' => 'body',
  50. ),
  51. 2 => array(
  52. 'source' => 'timestamp',
  53. 'target' => 'field_date:start',
  54. ),
  55. 3 => array(
  56. 'source' => 'timestamp',
  57. 'target' => 'field_datestamp:start',
  58. ),
  59. ));
  60. $edit = array(
  61. 'allowed_extensions' => 'rss2',
  62. );
  63. $this->drupalPost('admin/structure/feeds/daterss/settings/FeedsFileFetcher', $edit, 'Save');
  64. // Import CSV file.
  65. $this->importFile('daterss', $this->absolutePath() . '/tests/feeds/googlenewstz.rss2');
  66. $this->assertText('Created 6 nodes');
  67. // Check the imported nodes.
  68. $values = array(
  69. '01/06/2010 - 19:26',
  70. '01/06/2010 - 10:21',
  71. '01/06/2010 - 13:42',
  72. '01/06/2010 - 06:05',
  73. '01/06/2010 - 11:26',
  74. '01/07/2010 - 00:26',
  75. );
  76. for ($i = 1; $i <= 6; $i++) {
  77. $this->drupalGet("node/$i/edit");
  78. $this->assertNodeFieldValue('date', $values[$i-1]);
  79. $this->assertNodeFieldValue('datestamp', $values[$i-1]);
  80. }
  81. }
  82. protected function getFormFieldsNames($field_name, $index) {
  83. if (in_array($field_name, array('date', 'datetime', 'datestamp'))) {
  84. return array("field_{$field_name}[und][{$index}][value][date]");
  85. }
  86. else {
  87. return parent::getFormFieldsNames($field_name, $index);
  88. }
  89. }
  90. }