class CSVExportViewsDataExportExporterTests in Views data export 7.4
Hierarchy
- class \DrupalTestCase
Expanded class hierarchy of CSVExportViewsDataExportExporterTests
File
- tests/
exporter_tests/ csv.test, line 3
View source
class CSVExportViewsDataExportExporterTests extends ViewsDataExportExporterBaseTest {
protected $profile = 'testing';
public static function getInfo() {
return array(
'name' => 'CSV Exporter Test',
'description' => 'Various tests for export using the CSV exporter class.',
'group' => 'Views Data Export',
);
}
protected function getExporter($options = array()) {
// todo Replace require_once with an autoloader.
require_once dirname(__FILE__) . '/../../exporters/views_data_export_exporter_delimited.inc';
$classname = $this
->getExporterClassName();
return new $classname($options);
}
protected function getExporterClassName() {
return 'ViewsDataExportExporterDelimited';
}
/**
* A very simple test dataset.
*/
protected function dataSet() {
return array(
array(
'name' => 'John',
'age' => 25,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
array(
'name' => 'George',
'age' => 27,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 2, 2000),
),
array(
'name' => 'Ringo',
'age' => 28,
'job' => 'Drummer',
'created' => gmmktime(6, 30, 30, 1, 1, 2000),
),
array(
'name' => 'Paul',
'age' => 26,
'job' => 'Songwriter',
'created' => gmmktime(6, 0, 0, 1, 1, 2000),
),
array(
'name' => 'Meredith',
'age' => 30,
'job' => 'Speaker',
'created' => gmmktime(6, 30, 10, 1, 1, 2000),
),
);
}
/**
* Test the header writing.
*/
protected function testBOF() {
$field_titles = array(
'name',
'age',
'job',
'created',
);
$result = $this
->executeBOF($this
->getExporter(array(
'field_labels' => array(
'name',
'age',
'job',
'created',
),
)), $field_titles);
$expected = '"name","age","job","created"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The header is as expected.');
}
/**
* Test out the exporter separator option with a few different characters.
*/
protected function testSeparatorOptions() {
// Write the dataset, comma separated.
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => ',',
)), $this
->dataSet(), 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"John","25","Singer","946684800"
"George","27","Singer","946771200"
"Ringo","28","Drummer","946708230"
"Paul","26","Songwriter","946706400"
"Meredith","30","Speaker","946708210"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
// Write the dataset, tab separated.
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => "\t",
)), $this
->dataSet(), 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"John"' . "\t" . '"25"' . "\t" . '"Singer"' . "\t" . '"946684800"
"George"' . "\t" . '"27"' . "\t" . '"Singer"' . "\t" . '"946771200"
"Ringo"' . "\t" . '"28"' . "\t" . '"Drummer"' . "\t" . '"946708230"
"Paul"' . "\t" . '"26"' . "\t" . '"Songwriter"' . "\t" . '"946706400"
"Meredith"' . "\t" . '"30"' . "\t" . '"Speaker"' . "\t" . '"946708210"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
}
/**
* Test the whitespace trim function
*/
protected function testTrim() {
$dataSet = array(
array(
'name' => ' John ',
'age' => 25,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
);
$result = $this
->executeFullWrite($this
->getExporter(array(
'trim' => true,
)), $dataSet, 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"John","25","Singer","946684800"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
}
protected function testQuoteOptions() {
// Write a dataset with quotes inside, and test the quote removal option.
$dataSet = array(
array(
'name' => 'John, the one with cool hair',
'age' => 25,
'job' => 'Sin,ger',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
);
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => ",",
'quote' => true,
)), $dataSet, 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"John, the one with cool hair","25","Sin,ger","946684800"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
}
/**
* Test the newline replacement option.
*/
protected function testNewLineOptions() {
// Write a dataset with newlines in the field values.
$dataSet = array(
array(
'name' => 'John, the one with
cool hair',
'age' => 25,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
);
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => ",",
'quote' => true,
'replace_newlines' => true,
'newline_replacement' => 'NEWLINE',
)), $dataSet, 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"John, the one withNEWLINEcool hair","25","Singer","946684800"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
}
/**
* Test the HTML escaping option.
*/
protected function testHTMLOptions() {
// Write a dataset with HTML inside, and test that it's kept.
$dataSet = array(
array(
'name' => '<em>John</em>',
'age' => 25,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
);
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => ",",
'quote' => true,
'keep_html' => true,
)), $dataSet, 0, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$expected = '"<em>John</em>","25","Singer","946684800"
';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The CSV output is as expected.');
}
/**
* Test encoding options.
*/
protected function testEncodingOptions() {
// A dataset with a non-ASCII UTF-8 character, to help us ensure UTF-8.
// (As ASCII is a subset of UTF-8, php will detect as ASCII if there are
// no UTF-8-only characters.)
$utf_8_dataset = array(
array(
'name' => 'JƟhn',
'age' => 25,
'job' => 'Singer',
'created' => gmmktime(0, 0, 0, 1, 1, 2000),
),
);
// The encodings we want to test, as form_input_value => expected_encoding.
$encodings = array(
'utf8_decode' => 'ISO-8859-1',
'UTF-8' => 'UTF-8',
//'illegal-encoding-name&*%$' => 'UTF-8',
'' => 'UTF-8',
);
// Render content with each encoding.
$row_count = 0;
foreach ($encodings as $encoding => $expected) {
$result = $this
->executeFullWrite($this
->getExporter(array(
'separator' => ',',
'encoding' => $encoding,
)), $utf_8_dataset, $row_count, array(
'name' => 'Name',
'age' => 'Age',
'job' => 'Job',
'created' => 'Created',
));
$row_count++;
// Check the resulting encoding.
$result_encoding = mb_detect_encoding($result);
$encoding_match = in_array($result_encoding, array(
$expected,
'ASCII',
));
$this
->assertTrue($encoding_match, 'Detected encoding ' . $result_encoding . ' matches ' . $expected . ' for input value ' . $encoding);
}
}
protected function testEOF() {
$result = $this
->executeEOF($this
->getExporter());
$expected = '';
$this
->logVerboseResult($result, 'Actual result');
$this
->logVerboseResult($expected, 'Expected result');
$this
->assertEqual($result, $expected, 'The EOF output is as expected.');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CSVExportViewsDataExportExporterTests:: |
protected | property | ||
CSVExportViewsDataExportExporterTests:: |
protected | function | A very simple test dataset. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | ||
CSVExportViewsDataExportExporterTests:: |
protected | function | ||
CSVExportViewsDataExportExporterTests:: |
public static | function | ||
CSVExportViewsDataExportExporterTests:: |
protected | function | Test the header writing. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | Test encoding options. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | ||
CSVExportViewsDataExportExporterTests:: |
protected | function | Test the HTML escaping option. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | Test the newline replacement option. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | ||
CSVExportViewsDataExportExporterTests:: |
protected | function | Test out the exporter separator option with a few different characters. | |
CSVExportViewsDataExportExporterTests:: |
protected | function | Test the whitespace trim function | |
DrupalTestCase:: |
protected | property | Assertions thrown in that test case. | |
DrupalTestCase:: |
protected | property | The database prefix of this test run. | |
DrupalTestCase:: |
protected | property | The original file directory, before it was changed for testing purposes. | |
DrupalTestCase:: |
public | property | Current results of this test case. | |
DrupalTestCase:: |
protected | property | Flag to indicate whether the test has been set up. | |
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | ||
DrupalTestCase:: |
protected | property | This class is skipped when looking for the source of an assertion. | |
DrupalTestCase:: |
protected | property | The test run ID. | |
DrupalTestCase:: |
protected | property | Time limit for the test. | |
DrupalTestCase:: |
public | property | Whether to cache the installation part of the setUp() method. | |
DrupalTestCase:: |
public | property | Whether to cache the modules installation part of the setUp() method. | |
DrupalTestCase:: |
protected | property | URL to the verbose output file directory. | |
DrupalTestCase:: |
protected | function | Internal helper: stores the assert. | |
DrupalTestCase:: |
protected | function | Check to see if two values are equal. | |
DrupalTestCase:: |
protected | function | Check to see if a value is false (an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
protected | function | Check to see if two values are identical. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not equal. | |
DrupalTestCase:: |
protected | function | Check to see if two values are not identical. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is NULL. | |
DrupalTestCase:: |
protected | function | Check to see if a value is not false (not an empty string, 0, NULL, or FALSE). | |
DrupalTestCase:: |
public static | function | Delete an assertion record by message ID. | |
DrupalTestCase:: |
protected | function | Fire an error assertion. | 1 |
DrupalTestCase:: |
public | function | Handle errors during test runs. | 1 |
DrupalTestCase:: |
protected | function | Handle exceptions. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always negative. | |
DrupalTestCase:: |
public static | function | Converts a list of possible parameters into a stack of permutations. | |
DrupalTestCase:: |
protected | function | Cycles through backtrace until the first non-assertion method is found. | |
DrupalTestCase:: |
public static | function | Returns the database connection to the site running Simpletest. | |
DrupalTestCase:: |
public static | function | Store an assertion from outside the testing context. | |
DrupalTestCase:: |
protected | function | Fire an assertion that is always positive. | |
DrupalTestCase:: |
public static | function | Generates a random string containing letters and numbers. | |
DrupalTestCase:: |
public static | function | Generates a random string of ASCII characters of codes 32 to 126. | |
DrupalTestCase:: |
public | function | Run all tests in this class. | |
DrupalUnitTestCase:: |
protected | function | Sets up unit test environment. | 9 |
DrupalUnitTestCase:: |
protected | function | 1 | |
DrupalUnitTestCase:: |
function |
Constructor for DrupalUnitTestCase. Overrides DrupalTestCase:: |
||
ViewsDataExportExporterBaseTest:: |
protected | function | ||
ViewsDataExportExporterBaseTest:: |
protected | function | ||
ViewsDataExportExporterBaseTest:: |
protected | function | ||
ViewsDataExportExporterBaseTest:: |
public | function | A function to enable the tests to post results to the test results table. | |
ViewsDataExportExporterBaseTest:: |
protected | function |
Write a message out to the test results table. Overrides DrupalTestCase:: |