<?php // $Id: feeds_fetcher_file.test,v 1.1.2.3 2010-10-27 22:33:32 alexb Exp $ /** * @file * File fetcher tests. */ /** * File fetcher test class. */ class FeedsFileFetcherTestCase extends FeedsWebTestCase { /** * Describe this test. */ public function getInfo() { return array( 'name' => t('File fetcher'), 'description' => t('Tests for file fetcher plugin.'), 'group' => t('Feeds'), ); } /** * Test scheduling on cron. */ public function test() { // Set up an importer. $this->createImporterConfiguration('Node import', 'node'); // Set and configure plugins and mappings. $edit = array( 'content_type' => '', ); $this->drupalPost('admin/structure/feeds/edit/node/settings', $edit, 'Save'); $this->setPlugin('node', 'FeedsFileFetcher'); $this->setPlugin('node', 'FeedsCSVParser'); $mappings = array( '0' => array( 'source' => 'title', 'target' => 'title', ), ); $this->addMappings('node', $mappings); // Straight up upload is covered in other tests, focus on direct mode // and file batching here. $this->setSettings('node', 'FeedsFileFetcher', array('direct' => TRUE)); // Verify that invalid paths are not accepted. foreach (array('private://', '/tmp/') as $path) { $edit = array( 'feeds[FeedsFileFetcher][source]' => $path, ); $this->drupalPost('import/node', $edit, t('Import')); $this->assertText("File needs to reside within the site's file directory, its path needs to start with public://."); $count = db_query("SELECT COUNT(*) FROM {feeds_source} WHERE feed_nid = 0")->fetchField(); $this->assertEqual($count, 0); } // Verify batching through directories. // Copy directory of files. $dir = 'public://batchtest'; $this->copyDir($this->absolutePath() . '/tests/feeds/batch', $dir); // Ingest directory of files. Set limit to 5 to force processor to batch, // too. variable_set('feeds_process_limit', 5); $edit = array( 'feeds[FeedsFileFetcher][source]' => $dir, ); $this->drupalPost('import/node', $edit, t('Import')); $this->assertText('Created 18 nodes'); } }