You are here

public function CSVTest::initializeIterator in Migrate Source CSV 8

Tests initialization of the iterator.

@test

@covers ::initializeIterator

File

tests/src/Unit/Plugin/migrate/source/CSVTest.php, line 126
Code for CSVTest.php.

Class

CSVTest
@coversDefaultClass \Drupal\migrate_source_csv\Plugin\migrate\source\CSV

Namespace

Drupal\Tests\migrate_source_csv\Unit\Plugin\migrate\source

Code

public function initializeIterator() {
  $configuration = [
    'path' => $this->happyPath,
    'keys' => [
      'id',
    ],
    'header_row_count' => 1,
  ];
  $config_common = [
    'path' => $this->sad,
    'keys' => [
      'id',
    ],
  ];
  $config_delimiter = [
    'delimiter' => '|',
  ];
  $config_enclosure = [
    'enclosure' => '%',
  ];
  $config_escape = [
    '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
    ->initializeIterator();
  $row = [
    '1',
    'Justin',
    'Dean',
    'jdean0@example.com',
    '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
    ->initializeIterator();
  $row = [
    'id' => '1',
    'first_name' => 'Justin',
    'last_name' => 'Dean',
    'email' => 'jdean0@example.com',
    'country' => 'Indonesia',
    'ip_address' => '60.242.130.40',
  ];
  $second_row = [
    'id' => '2',
    'first_name' => 'Joan',
    'last_name' => 'Jordan',
    'email' => 'jjordan1@example.com',
    '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 = [
    'column_names' => [
      0 => [
        'id' => 'identifier',
      ],
      2 => [
        'last_name' => 'User last name',
      ],
    ],
  ];
  $csv = new CSV($configuration + $column_names, $this->pluginId, $this->pluginDefinition, $this->plugin);
  $csv_file_object = $csv
    ->initializeIterator();
  $row = [
    'id' => '1',
    'last_name' => 'Dean',
  ];
  $second_row = [
    '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);
}