View source
<?php
class CSVExportViewsDataExportTests extends ViewsDataExportSimpleExportTest {
protected $profile = 'testing';
public static function getInfo() {
return array(
'name' => 'CSV Export',
'description' => 'Various tests for exporting to CSV.',
'group' => 'Views Data Export',
);
}
protected $vde_export_type = 'CSV';
protected function getStylePluginName() {
return 'views_data_export_csv';
}
protected function getExportView($path = 'vde_test') {
$view = $this
->getBasicExportView();
$display = $view
->new_display('views_data_export', 'Data export', 'vde_test');
$display
->override_option('style_plugin', $this
->getStylePluginName());
$display
->override_option('path', $path);
$expected = '"ID","Name","Age"
"1","John","25"
"2","George","27"
"3","Ringo","28"
"4","Paul","26"
"5","Meredith","30"';
return array(
&$view,
$expected,
);
}
protected function testKeepHTML() {
$view = $this
->getBasicExportView();
$display = $view->display['default']->handler;
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
'label' => '<strong id="id">ID</strong>',
),
'name' => array(
'id' => 'name',
'table' => 'views_test',
'field' => 'name',
'relationship' => 'none',
'alter' => array(
'alter_text' => TRUE,
'text' => '<em>[name]</em>',
),
),
'age' => array(
'id' => 'age',
'table' => 'views_test',
'field' => 'age',
'relationship' => 'none',
),
));
$style_options = array(
'keep_html' => TRUE,
);
$expected = '"<strong id=""id"">ID</strong>","Name","Age"
"1","<em>John</em>","25"
"2","<em>George</em>","27"
"3","<em>Ringo</em>","28"
"4","<em>Paul</em>","26"
"5","<em>Meredith</em>","30"';
$message = 'Keep HTML test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
$style_options = array(
'keep_html' => FALSE,
);
$expected = '"ID","Name","Age"
"1","John","25"
"2","George","27"
"3","Ringo","28"
"4","Paul","26"
"5","Meredith","30"';
$message = 'Keep HTML reverse test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testTrimFields() {
$view = $this
->getBasicExportView();
$display = $view->display['default']->handler;
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
'label' => 'ID',
),
'name' => array(
'id' => 'name',
'table' => 'views_test',
'field' => 'name',
'relationship' => 'none',
'alter' => array(
'alter_text' => TRUE,
'text' => ' [name] ',
),
),
'age' => array(
'id' => 'age',
'table' => 'views_test',
'field' => 'age',
'relationship' => 'none',
),
));
$style_options = array(
'trim' => FALSE,
);
$expected = '"ID","Name","Age"
"1"," John ","25"
"2"," George ","27"
"3"," Ringo ","28"
"4"," Paul ","26"
"5"," Meredith ","30"';
$message = 'Trim reverse test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
$style_options = array(
'trim' => TRUE,
);
$expected = '"ID","Name","Age"
"1","John","25"
"2","George","27"
"3","Ringo","28"
"4","Paul","26"
"5","Meredith","30"';
$message = 'Trim test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testIconvEncoding() {
$view = $this
->getBasicExportView();
db_update('views_test')
->fields(array(
'name' => 'Jo€hn',
))
->condition('name', 'John')
->execute();
$encodings = array(
'ISO-8859-1//TRANSLIT' => 'EUR',
'utf8_decode' => '?',
);
foreach ($encodings as $encoding => $conversion) {
$style_options = array(
'encoding' => $encoding,
);
$expected = '"ID","Name","Age"
"1","Jo' . $conversion . 'hn","25"
"2","George","27"
"3","Ringo","28"
"4","Paul","26"
"5","Meredith","30"';
$message = 'Character encoding ' . $encoding . ' worked correctly.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
}
protected function testReplaceNewLines() {
$view = $this
->getBasicExportView();
$display = $view->display['default']->handler;
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
'label' => 'ID',
),
'name' => array(
'id' => 'name',
'table' => 'views_test',
'field' => 'name',
'relationship' => 'none',
),
'age' => array(
'id' => 'age',
'table' => 'views_test',
'field' => 'age',
'relationship' => 'none',
),
'job' => array(
'id' => 'job',
'table' => 'views_test',
'field' => 'job',
'relationship' => 'none',
),
));
$style_options = array(
'replace_newlines' => TRUE,
'newline_replacement' => ';',
'newline_token' => 0,
);
$expected = <<<EOT
"ID","Name","Age","Job"
"1","John","25","Singer
;Songwriter
;Pianist"
"2","George","27","Singer;Guitar player;Sitar player"
"3","Ringo","28","Drummer"
"4","Paul","26","Songwriter
Bass guitarist"
"5","Meredith","30","Speaker"
EOT;
$message = 'Linefeed characters are replaced.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
$style_options = array(
'replace_newlines' => TRUE,
'newline_replacement' => ';',
'newline_token' => 1,
);
$expected = '"ID","Name","Age","Job"
"1","John","25","Singer;Songwriter;Pianist"
"2","George","27","Singer;Guitar player;Sitar player"
"3","Ringo","28","Drummer"
"4","Paul","26","Songwriter;Bass guitarist"
"5","Meredith","30","Speaker"';
$message = 'All newline characters are replaced.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
}