You are here

feeds_mapper_config.test in Feeds 7.2

Contains FeedsMapperConfigTestCase.

File

tests/feeds_mapper_config.test
View source
<?php

/**
 * @file
 * Contains FeedsMapperConfigTestCase.
 */

/**
 * Test cases for Feeds mapping configuration form.
 */
class FeedsMapperConfigTestCase extends FeedsMapperTestCase {

  /**
   * {@inheritdoc}
   */
  public static function getInfo() {
    return array(
      'name' => 'Mapper: Config',
      'description' => 'Test the mapper configuration UI.',
      'group' => 'Feeds',
    );
  }

  /**
   * {@inheritdoc}
   */
  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');
    $second_callback_value = $this
      ->randomString();

    // 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',
      'config[0][settings][second_value]' => $second_callback_value,
    );
    $this
      ->drupalPostAJAX(NULL, $edit, 'mapping_settings_update_0');
    $this
      ->assertText(t('* Changes made to target configuration are stored temporarily. Click Save to make your changes permanent.'));

    // 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');
    $this
      ->assertText(t('Second summary: @value', array(
      '@value' => $second_callback_value,
    )));

    // 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');
    $this
      ->assertEqual($settings['second_value'], $second_callback_value);

    // 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');
  }

}

Classes

Namesort descending Description
FeedsMapperConfigTestCase Test cases for Feeds mapping configuration form.