123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- /**
- * Test class for garbage collection of VDE export data.
- */
- class ViewsDataExportGarbageCollectionTest extends ViewsDataExportBaseTest {
- protected $profile = 'testing';
- public static function getInfo() {
- return array(
- 'name' => 'Garbage collection',
- 'description' => 'Checks garbage collection of batched exports',
- 'group' => 'Views Data Export',
- );
- }
- /**
- * Test that VDE export can only be downloaded by the user that created them.
- */
- public function testExportedGarbageCollection() {
- // Run a batched export.
- $path = 'vde_test/' . $this->randomName();
- list($view, $expected) = $this->getExportView($path);
- $display = &$view->display['vde_test']->handler;
- // Set this view to be batched.
- $display->override_option('use_batch', 'batch');
- // Save this view so we can hit the path.
- $view->save();
- // Ensure that the menu router system is rebuilt on the next page load.
- variable_set('menu_rebuild_needed', TRUE);
- $exports = $this->getNumberOfStoredExports();
- $files = $this->getNumberOfFiles();
- $this->assertBatchedExportEqual($path, $expected, 'Batched access export matched expected output.');
- // We should have created a new export and file.
- $this->assertEqual($this->getNumberOfStoredExports(), $exports + 1, 'A single new batched export was created');
- $this->assertEqual($this->getNumberOfFiles(), $files + 1, 'A single new temporary file was created');
- $middle_timestamp = time();
- sleep(1);
- $this->assertBatchedExportEqual($path, $expected, 'Batched access export matched expected output.');
- // We should have created a new export and file.
- $this->assertEqual($this->getNumberOfStoredExports(), $exports + 2, 'A single new batched export was created');
- $this->assertEqual($this->getNumberOfFiles(), $files + 2, 'A single new temporary file was created');
- // Garbage collect the first export only.
- views_data_export_garbage_collect(REQUEST_TIME - $middle_timestamp);
- $this->assertEqual($this->getNumberOfStoredExports(), $exports + 1, 'Garbage collection removed 1 old export');
- $this->assertEqual($this->getNumberOfFiles(), $files + 1, 'Garbage collection removed 1 old temporary file');
- }
- protected function getNumberOfStoredExports() {
- return (int) db_select('views_data_export')->countQuery()->execute()->fetchField();
- }
- protected function getNumberOfFiles() {
- return (int) db_select('file_managed')->countQuery()->execute()->fetchField();
- }
- /**
- * Build and return a basic view of the views_test table.
- *
- * @return view
- */
- protected function getBasicExportView() {
- views_include('view');
- // Create the basic view.
- $view = new view();
- $view->vid = 'new';
- $view->base_table = 'views_test';
- // Set up the fields we need.
- $display = $view->new_display('default', 'Master', 'default');
- $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',
- ),
- 'age' => array(
- 'id' => 'age',
- 'table' => 'views_test',
- 'field' => 'age',
- 'relationship' => 'none',
- ),
- ));
- // Set up the sort order.
- $display->override_option('sorts', array(
- 'id' => array(
- 'order' => 'ASC',
- 'id' => 'id',
- 'table' => 'views_test',
- 'field' => 'id',
- 'relationship' => 'none',
- ),
- ));
- // Set up the pager.
- $display->override_option('pager', array(
- 'type' => 'none',
- 'options' => array('offset' => 0),
- ));
- return $view;
- }
- protected function getStylePluginName() {
- return 'views_data_export_txt';
- }
- protected function getExportView($path = 'vde_test') {
- // Create the basic view.
- $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]
- 1
- [Name]
- John
- [Age]
- 25
- ----------------------------------------
- [ID]
- 2
- [Name]
- George
- [Age]
- 27
- ----------------------------------------
- [ID]
- 3
- [Name]
- Ringo
- [Age]
- 28
- ----------------------------------------
- [ID]
- 4
- [Name]
- Paul
- [Age]
- 26
- ----------------------------------------
- [ID]
- 5
- [Name]
- Meredith
- [Age]
- 30
- ----------------------------------------';
- return array(&$view, $expected);
- }
- }
|