diff --git a/tests/feeds_mapper_config.test b/tests/feeds_mapper_config.test new file mode 100644 index 0000000000000000000000000000000000000000..b5fd92ddd694b49f599fbfc9d7a022a387f77a67 --- /dev/null +++ b/tests/feeds_mapper_config.test @@ -0,0 +1,115 @@ +<?php + +/** + * @file + * Test cases for Feeds mapping configuration form. + */ + +/** + * Class for testing basic Feeds ajax mapping configurtaion form behavior. + */ +class FeedsMapperConfigTestCase extends FeedsMapperTestCase { + public static function getInfo() { + return array( + 'name' => 'Mapper: Config', + 'description' => 'Test the mapper configuration UI.', + 'group' => 'Feeds', + ); + } + + public function setUp() { + parent::setUp(array('feeds_tests')); + } + + /** + * Basic test of mapping configuration. + */ + public function test() { + // Create importer configuration. + $this->createImporterConfiguration(); + $this->addMappings('syndication', array( + array( + 'source' => 'url', + 'target' => 'test_target', + ), + )); + + // Click gear to get form. + $this->drupalPostAJAX(NULL, array(), 'mapping_settings_edit_0'); + + // Set some settings. + $edit = array( + 'config[0][settings][checkbox]' => 1, + 'config[0][settings][textfield]' => 'Some text', + 'config[0][settings][textarea]' => 'Textarea value: Didery dofffffffffffffffffffffffffffffffffffff', + 'config[0][settings][radios]' => 'option1', + 'config[0][settings][select]' => 'option4', + ); + $this->drupalPostAJAX(NULL, $edit, 'mapping_settings_update_0'); + + // Click Save. + $this->drupalPost(NULL, array(), t('Save')); + + // Reload. + $this->drupalGet('admin/structure/feeds/syndication/mapping'); + + // See if our settings were saved. + $this->assertText('Checkbox active.'); + $this->assertText('Textfield value: Some text'); + $this->assertText('Textarea value: Didery dofffffffffffffffffffffffffffffffffffff'); + $this->assertText('Radios value: Option 1'); + $this->assertText('Select value: Another One'); + + // Check that settings are in db. + $config = unserialize(db_query("SELECT config FROM {feeds_importer} WHERE id='syndication'")->fetchField()); + + $settings = $config['processor']['config']['mappings'][0]; + $this->assertEqual($settings['checkbox'], 1); + $this->assertEqual($settings['textfield'], 'Some text'); + $this->assertEqual($settings['textarea'], 'Textarea value: Didery dofffffffffffffffffffffffffffffffffffff'); + $this->assertEqual($settings['radios'], 'option1'); + $this->assertEqual($settings['select'], 'option4'); + + + // Check that form validation works. + // Click gear to get form. + $this->drupalPostAJAX(NULL, array(), 'mapping_settings_edit_0'); + + // Set some settings. + $edit = array( + // Required form item. + 'config[0][settings][textfield]' => '', + ); + $this->drupalPostAJAX(NULL, $edit, 'mapping_settings_update_0'); + $this->assertText('A text field field is required.'); + $this->drupalPost(NULL, array(), t('Save')); + // Reload. + $this->drupalGet('admin/structure/feeds/syndication/mapping'); + // Value has not changed. + $this->assertText('Textfield value: Some text'); + + // Check that multiple mappings work. + $this->addMappings('syndication', array( + 1 => array( + 'source' => 'url', + 'target' => 'test_target', + ), + )); + $this->assertText('Checkbox active.'); + $this->assertText('Checkbox inactive.'); + // Click gear to get form. + $this->drupalPostAJAX(NULL, array(), 'mapping_settings_edit_1'); + // Set some settings. + $edit = array( + 'config[1][settings][textfield]' => 'Second mapping text', + ); + $this->drupalPostAJAX(NULL, $edit, 'mapping_settings_update_1'); + // Click Save. + $this->drupalPost(NULL, array(), t('Save')); + // Reload. + $this->drupalGet('admin/structure/feeds/syndication/mapping'); + $this->assertText('Checkbox active.'); + $this->assertText('Checkbox inactive.'); + $this->assertText('Second mapping text'); + } +}