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