function ViewsCloneTest::testClone
Test cloning a view.
File
-
tests/
views_clone.test, line 51
Class
- ViewsCloneTest
- Tests cloning a view.
Code
public function testClone() {
// Prepare view to be cloned.
$view = $this->getTestCloneView();
$view->set_arguments(array(
0 => $this->node->nid,
));
$view->set_exposed_input(array(
'field_tags_tid' => $this->term->tid,
));
// Execute view to be cloned.
$view->execute();
// To make sure that we are properly testing removal of all properties, we
// first need to assert that they are actually present in the original view.
$keys = array(
'current_display',
'display_handler',
'field',
'argument',
'filter',
'sort',
'relationship',
'header',
'footer',
'empty',
'query',
'inited',
'style_plugin',
'plugin_name',
'exposed_data',
'exposed_input',
'exposed_widgets',
'many_to_one_aliases',
'many_to_one_tables',
'feed_icon',
);
foreach ($keys as $key) {
$this->assertTrue(isset($view->{$key}), $key . 'is set in original view.');
}
$this->assertTrue($view->built, 'Assert original view built.');
$this->assertTrue($view->executed, 'Assert original view executed.');
$this->assertNotEqual($view->build_info, array(), 'Assert original view has build_info.');
$this->assertNotEqual($view->attachment_before, '', 'Assert original view has attachment_before.');
$this->assertNotEqual($view->attachment_after, '', 'Assert original view has attachment_after.');
$this->assertNotEqual($view->result, array(), 'Assert original view has result.');
// Clone view.
$clone = $view->clone_view();
// Assert that all relevant properties have been removed or reset.
$keys = array(
'current_display',
'display_handler',
'field',
'argument',
'filter',
'sort',
'relationship',
'header',
'footer',
'empty',
'query',
'inited',
'style_plugin',
'plugin_name',
'exposed_data',
'exposed_input',
'exposed_widgets',
'many_to_one_aliases',
'many_to_one_tables',
'feed_icon',
);
foreach ($keys as $key) {
$this->assertFalse(isset($clone->{$key}), $key . ' has been removed in cloned view.');
}
foreach ($clone->display as $id => $display) {
$this->assertFalse(isset($clone->display[$id]->handler), 'Make sure all display handlers have been destroyed.');
}
$this->assertFalse($clone->built, 'Assert cloned view not built.');
$this->assertFalse($clone->executed, 'Assert cloned view not executed.');
$this->assertEqual($clone->build_info, array(), 'Assert cloned view has empty build_info.');
$this->assertEqual($clone->attachment_before, '', 'Assert cloned view has empty attachment_before.');
$this->assertEqual($clone->attachment_after, '', 'Assert cloned view has empty attachment_after.');
$this->assertEqual($clone->result, array(), 'Assert cloned view has empty result.');
// Execute cloned view.
$clone->execute();
// Assert result sets are equal.
$this->assertEqual($view->result, $clone->result, 'Result sets of cloned view and original view match.');
}