View source
<?php
class XMLExportViewsDataExportTests extends ViewsDataExportSimpleExportTest {
protected $profile = 'testing';
public static function getInfo() {
return array(
'name' => 'XML Export',
'description' => 'Various tests for exporting to XML.',
'group' => 'Views Data Export',
);
}
protected $vde_export_type = 'XML';
protected function getStylePluginName() {
return 'views_data_export_xml';
}
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', 'views_data_export_xml');
$display
->override_option('path', $path);
$style_options = array(
'exporter_options' => array(
'root_node' => 'views_tests',
'item_node' => 'views_test',
),
);
$display
->override_option('style_options', $style_options);
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<views_tests>
<views_test>
<ID>1</ID>
<Name>John</Name>
<Age>25</Age>
</views_test>
<views_test>
<ID>2</ID>
<Name>George</Name>
<Age>27</Age>
</views_test>
<views_test>
<ID>3</ID>
<Name>Ringo</Name>
<Age>28</Age>
</views_test>
<views_test>
<ID>4</ID>
<Name>Paul</Name>
<Age>26</Age>
</views_test>
<views_test>
<ID>5</ID>
<Name>Meredith</Name>
<Age>30</Age>
</views_test>
</views_tests>';
return array(
&$view,
$expected,
);
}
protected function testHideEmptySupport() {
$view = $this
->getHideIfEmptyExportView();
db_update('views_test')
->fields(array(
'age' => 0,
))
->condition('name', 'Paul')
->execute();
db_update('views_test')
->fields(array(
'name' => '',
))
->condition('name', 'George')
->execute();
db_update('views_test')
->fields(array(
'name' => 0,
))
->condition('name', 'John')
->execute();
$style_options = array(
'exporter_options' => array(
'root_node' => 'views_tests',
'item_node' => 'views_test',
),
);
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<views_tests>
<views_test>
<ID>1</ID>
<Name>0</Name>
<Age>25</Age>
</views_test>
<views_test>
<ID>2</ID>
<Age>27</Age>
</views_test>
<views_test>
<ID>3</ID>
<Name>Ringo</Name>
<Age>28</Age>
</views_test>
<views_test>
<ID>4</ID>
<Name>Paul</Name>
</views_test>
<views_test>
<ID>5</ID>
<Name>Meredith</Name>
<Age>30</Age>
</views_test>
</views_tests>';
$message = 'Hide if empty support for ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testEmptyLabels() {
$view = $this
->getBasicExportView();
$display = $view->display['default']->handler;
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
),
'name' => array(
'id' => 'name',
'table' => 'views_test',
'field' => 'name',
'relationship' => 'none',
'label' => '',
),
'age' => array(
'id' => 'age',
'table' => 'views_test',
'field' => 'age',
'relationship' => 'none',
'label' => '.',
),
));
$style_options = array(
'exporter_options' => array(
'root_node' => 'views_tests',
'item_node' => 'views_test',
),
);
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<views_tests>
<views_test>
<ID>1</ID>
<Views-test:-Name>John</Views-test:-Name>
<invalid-tag-name>25</invalid-tag-name>
</views_test>
<views_test>
<ID>2</ID>
<Views-test:-Name>George</Views-test:-Name>
<invalid-tag-name>27</invalid-tag-name>
</views_test>
<views_test>
<ID>3</ID>
<Views-test:-Name>Ringo</Views-test:-Name>
<invalid-tag-name>28</invalid-tag-name>
</views_test>
<views_test>
<ID>4</ID>
<Views-test:-Name>Paul</Views-test:-Name>
<invalid-tag-name>26</invalid-tag-name>
</views_test>
<views_test>
<ID>5</ID>
<Views-test:-Name>Meredith</Views-test:-Name>
<invalid-tag-name>30</invalid-tag-name>
</views_test>
</views_tests>';
$message = 'Empty label test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testCustomiseXMLNodes() {
$view = $this
->getBasicExportView();
module_load_include('inc', 'views_data_export', 'theme/views_data_export.theme');
$root_node = _views_data_export_xml_tag_clean($this
->randomName());
$item_node = _views_data_export_xml_tag_clean($this
->randomName());
$style_options = array(
'exporter_options' => array(
'root_node' => $root_node,
'item_node' => $item_node,
),
);
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<' . $root_node . '>
<' . $item_node . '>
<ID>1</ID>
<Name>John</Name>
<Age>25</Age>
</' . $item_node . '>
<' . $item_node . '>
<ID>2</ID>
<Name>George</Name>
<Age>27</Age>
</' . $item_node . '>
<' . $item_node . '>
<ID>3</ID>
<Name>Ringo</Name>
<Age>28</Age>
</' . $item_node . '>
<' . $item_node . '>
<ID>4</ID>
<Name>Paul</Name>
<Age>26</Age>
</' . $item_node . '>
<' . $item_node . '>
<ID>5</ID>
<Name>Meredith</Name>
<Age>30</Age>
</' . $item_node . '>
</' . $root_node . '>';
$message = 'Custom XML nodes test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testXMLNoEntityEncode() {
$view = $this
->getBasicExportView();
$display = $view->display['default']->handler;
$style_options = array(
'exporter_options' => array(
'no_entity_encode' => array(
'id' => 'id',
),
'root_node' => 'views_tests',
'item_node' => 'views_test',
),
);
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
'alter' => array(
'alter_text' => TRUE,
'text' => '<strong>[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',
),
));
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<views_tests>
<views_test>
<ID><strong>1</strong></ID>
<Name>&lt;em&gt;John&lt;/em&gt;</Name>
<Age>25</Age>
</views_test>
<views_test>
<ID><strong>2</strong></ID>
<Name>&lt;em&gt;George&lt;/em&gt;</Name>
<Age>27</Age>
</views_test>
<views_test>
<ID><strong>3</strong></ID>
<Name>&lt;em&gt;Ringo&lt;/em&gt;</Name>
<Age>28</Age>
</views_test>
<views_test>
<ID><strong>4</strong></ID>
<Name>&lt;em&gt;Paul&lt;/em&gt;</Name>
<Age>26</Age>
</views_test>
<views_test>
<ID><strong>5</strong></ID>
<Name>&lt;em&gt;Meredith&lt;/em&gt;</Name>
<Age>30</Age>
</views_test>
</views_tests>';
$message = 'XML in values test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
protected function testXMLCDATAWrapper() {
$view = $this
->getBasicExportView();
$style_options = array(
'exporter_options' => array(
'cdata_wrapper' => array(
'id' => 'id',
'name' => 'name',
),
'root_node' => 'views_tests',
'item_node' => 'views_test',
),
);
$display = $view->display['default']->handler;
$display
->override_option('fields', array(
'id' => array(
'id' => 'id',
'table' => 'views_test',
'field' => 'id',
'relationship' => 'none',
),
'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',
),
));
$expected = '<?xml version="1.0" encoding="UTF-8"?>
<views_tests>
<views_test>
<ID><![CDATA[1]]></ID>
<Name><![CDATA[<em>John</em>]]></Name>
<Age>25</Age>
</views_test>
<views_test>
<ID><![CDATA[2]]></ID>
<Name><![CDATA[<em>George</em>]]></Name>
<Age>27</Age>
</views_test>
<views_test>
<ID><![CDATA[3]]></ID>
<Name><![CDATA[<em>Ringo</em>]]></Name>
<Age>28</Age>
</views_test>
<views_test>
<ID><![CDATA[4]]></ID>
<Name><![CDATA[<em>Paul</em>]]></Name>
<Age>26</Age>
</views_test>
<views_test>
<ID><![CDATA[5]]></ID>
<Name><![CDATA[<em>Meredith</em>]]></Name>
<Age>30</Age>
</views_test>
</views_tests>';
$message = 'XML in values test in ' . $this->vde_export_type . ' export matched expected output.';
$this
->executeAndCompareGivenView($view, $expected, $message, $style_options);
}
}