Index: mappers/formatted_number.inc =================================================================== RCS file: mappers/formatted_number.inc diff -N mappers/formatted_number.inc 0a1,54 > // $Id$ > > /** > * @file > * On behalf implementation of Feeds mapping API for Formatted Number CCK. > */ > > /** > * Implementation of feeds_node_processor_target_alter(). > */ > function formatted_number_feeds_node_processor_targets_alter(&$targets, $content_type) { > if (module_exists('formatted_number')) { > $info = content_types($content_type); > $fields = array(); > if (isset($info['fields']) && count($info['fields'])) { > foreach ($info['fields'] as $field_name => $field) { > if (in_array($field['type'], array_keys(formatted_number_get_fields_info()))) { > $fields[$field_name] = isset($field['widget']['label']) ? $field['widget']['label'] : $field_name; > } > } > } > foreach ($fields as $k => $name) { > $targets[$k] = array( > 'name' => $name, > 'callback' => 'formatted_number_feeds_set_target', > 'description' => t('The CCK !name field of the node.', array('!name' => $name)), > ); > } > } > } > > /** > * Set the CCK field target after import. > */ > function formatted_number_feeds_set_target($node, $target, $value) { > $field = isset($node->$target) ? $node->$target : array(); > > // Handle multiple value fields. > if (is_array($value)) { > $i = 0; > foreach ($value as $v) { > if (!is_array($v) && !is_object($v)) { > $field[$i]['value'] = parse_formatted_number($v, TRUE); > } > $i++; > } > } > else { > $field[0]['value'] = parse_formatted_number($value, TRUE); > } > > $node->$target = $field; > } Index: tests/feeds_mapper_formatted_number.test =================================================================== RCS file: tests/feeds_mapper_formatted_number.test diff -N tests/feeds_mapper_formatted_number.test 0a1,102 > // $Id: feeds_mapper_content.test,v 1.3 2010/05/16 21:15:53 alexb Exp $ > > /** > * @file > * Test case for simple CCK field mapper mappers/content.inc. > */ > > require_once(drupal_get_path('module', 'feeds') . '/tests/feeds_mapper_test.inc'); > > /** > * Class for testing Feeds formatted_number mapper. > */ > class FeedsMapperFormattedNumberTestCase extends FeedsMapperTestCase { > > public static function getInfo() { > return array( > 'name' => t('Mapper: Formatted Number'), > 'description' => t('Test Feeds Mapper support for Formatted Number CCK fields. Requires CCK, Format Number API and Formatted Number CCK modules.'), > 'group' => t('Feeds'), > ); > } > > /** > * Set up the test. > */ > function setUp() { > // Call parent setup with required modules. > parent::setUp('feeds', 'feeds_ui', 'ctools', 'content', 'format_number', 'formatted_number'); > > // Create user and login. > $this->drupalLogin($this->drupalCreateUser( > array( > 'administer content types', > 'administer feeds', > 'administer nodes', > 'administer site configuration' > ) > )); > } > > /** > * Basic test loading a doulbe entry CSV file. > */ > function test() { > > // Create content type. > $typename = $this->createContentType(NULL, array( > 'beta' => array('type' => 'formatted_integer', 'widget' => 'formatted_number'), > 'gamma' => array('type' => 'formatted_decimal', 'widget' => 'formatted_number'), > 'delta' => array('type' => 'formatted_float', 'widget' => 'formatted_number'), > )); > > // Create and configure importer. > $this->createFeedConfiguration('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('content_type' => $typename)); > $this->addMappings('csv', array( > array( > 'source' => 'title', > 'target' => 'title', > ), > array( > 'source' => 'created', > 'target' => 'created', > ), > array( > 'source' => 'body', > 'target' => 'body', > ), > array( > 'source' => 'beta', > 'target' => 'field_beta', > ), > array( > 'source' => 'gamma', > 'target' => 'field_gamma', > ), > array( > 'source' => 'delta', > 'target' => 'field_delta', > ), > )); > > // Import CSV file. > $this->importFile('csv', $this->absolutePath() .'/tests/feeds/content.csv'); > $this->assertText('Created 2 '. $typename .' nodes.'); > > // Check the two imported files. > $this->drupalGet('node/1/edit'); > $this->assertCCKFieldValue('beta', '42'); > $this->assertCCKFieldValue('gamma', '4.20'); > $this->assertCCKFieldValue('delta', '3.14'); > > $this->drupalGet('node/2/edit'); > $this->assertCCKFieldValue('beta', '32'); > $this->assertCCKFieldValue('gamma', '1.20'); > $this->assertCCKFieldValue('delta', '5.63'); > } > }