You are here

garbagecollection.test in Views data export 7.3

File

tests/garbagecollection.test
View source
<?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,
    );
  }

}

Classes

Namesort descending Description
ViewsDataExportGarbageCollectionTest Test class for garbage collection of VDE export data.