/** * {@inheritdoc} * * Enable multi-line values in CSV files. */ public function initializeIterator() { $file = parent::initializeIterator(); // Exclude CSVFileObject::DROP_NEW_LINE flag to retain the first newline in // a multi-line value. $file->setFlags(CSVFileObject::READ_CSV | CSVFileObject::READ_AHEAD | CSVFileObject::SKIP_EMPTY); return $file; }
/** * Tests initialization of the iterator. * * @test * * @covers ::initializeIterator */ public function initializeIterator() { $configuration = array('path' => $this->happyPath, 'identifiers' => array('id'), 'header_row_count' => 1); $config_common = array('path' => $this->sad, 'identifiers' => array('id')); $config_delimiter = array('delimiter' => '|'); $config_enclosure = array('enclosure' => '%'); $config_escape = array('escape' => '`'); $csv = new CSV($config_common + $config_delimiter, $this->pluginId, $this->pluginDefinition, $this->plugin); $this->assertEquals(current($config_delimiter), $csv->initializeIterator()->getCsvControl()[0]); $this->assertEquals('"', $csv->initializeIterator()->getCsvControl()[1]); $csv = new CSV($config_common + $config_enclosure, $this->pluginId, $this->pluginDefinition, $this->plugin); $this->assertEquals(',', $csv->initializeIterator()->getCsvControl()[0]); $this->assertEquals(current($config_enclosure), $csv->initializeIterator()->getCsvControl()[1]); $csv = new CSV($config_common + $config_delimiter + $config_enclosure + $config_escape, $this->pluginId, $this->pluginDefinition, $this->plugin); $csv_file_object = $csv->getIterator(); $row = array('1', 'Justin', 'Dean', '*****@*****.**', 'Indonesia', '60.242.130.40'); $csv_file_object->rewind(); $current = $csv_file_object->current(); $this->assertArrayEquals($row, $current); $csv = new CSV($configuration, $this->pluginId, $this->pluginDefinition, $this->plugin); $csv_file_object = $csv->getIterator(); $row = array('id' => '1', 'first_name' => 'Justin', 'last_name' => 'Dean', 'email' => '*****@*****.**', 'country' => 'Indonesia', 'ip_address' => '60.242.130.40'); $second_row = array('id' => '2', 'first_name' => 'Joan', 'last_name' => 'Jordan', 'email' => '*****@*****.**', 'country' => 'Thailand', 'ip_address' => '137.230.209.171'); $csv_file_object->rewind(); $current = $csv_file_object->current(); $this->assertArrayEquals($row, $current); $csv_file_object->next(); $next = $csv_file_object->current(); $this->assertArrayEquals($second_row, $next); $column_names = array('column_names' => array(0 => array('id' => 'identifier'), 2 => array('last_name' => 'User last name'))); $csv = new CSV($configuration + $column_names, $this->pluginId, $this->pluginDefinition, $this->plugin); $csv_file_object = $csv->getIterator(); $row = array('id' => '1', 'last_name' => 'Dean'); $second_row = array('id' => '2', 'last_name' => 'Jordan'); $csv_file_object->rewind(); $current = $csv_file_object->current(); $this->assertArrayEquals($row, $current); $csv_file_object->next(); $next = $csv_file_object->current(); $this->assertArrayEquals($second_row, $next); }