ArgumentDateTest.php

Contains \Drupal\views\Tests\Handler\ArgumentDateTest.

Namespace

Drupal\views\Tests\Handler

File

drupal/core/modules/views/lib/Drupal/views/Tests/Handler/ArgumentDateTest.php
View source
<?php

/**
 * @file
 * Contains \Drupal\views\Tests\Handler\ArgumentDateTest.
 */
namespace Drupal\views\Tests\Handler;

use Drupal\views\Tests\ViewUnitTestBase;

/**
 * Tests the core date argument handlers.
 *
 * @see \Drupal\views\Plugin\views\argument\Date
 */
class ArgumentDateTest extends ViewUnitTestBase {

  /**
   * Views used by this test.
   *
   * @var array
   */
  public static $testViews = array(
    'test_argument_date',
  );

  /**
   * Stores the column map for this testCase.
   *
   * @var array
   */
  protected $columnMap = array(
    'id' => 'id',
  );
  public static function getInfo() {
    return array(
      'name' => 'Argument: Date',
      'description' => 'Tests the core date argument handler.',
      'group' => 'Views Handlers',
    );
  }

  /**
   * Overrides \Drupal\views\Tests\ViewUnitTestBase::viewsData().
   */
  public function viewsData() {
    $data = parent::viewsData();
    $date_plugins = array(
      'date_fulldate',
      'date_day',
      'date_month',
      'date_week',
      'date_year',
      'date_year_month',
    );
    foreach ($date_plugins as $plugin_id) {
      $data['views_test_data'][$plugin_id] = $data['views_test_data']['created'];
      $data['views_test_data'][$plugin_id]['real field'] = 'created';
      $data['views_test_data'][$plugin_id]['argument']['id'] = $plugin_id;
    }
    return $data;
  }

  /**
   * Tests the CreatedFullDate handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedFullDate
   */
  public function testCreatedFullDateHandler() {
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('default');
    $this
      ->executeView($view, array(
      '20000102',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 2,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('default');
    $this
      ->executeView($view, array(
      '20000101',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 3,
    );
    $expected[] = array(
      'id' => 4,
    );
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('default');
    $this
      ->executeView($view, array(
      '20001023',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
  }

  /**
   * Tests the Day handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedDay
   */
  public function testDayHandler() {
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('embed_1');
    $this
      ->executeView($view, array(
      '02',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 2,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_1');
    $this
      ->executeView($view, array(
      '01',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 3,
    );
    $expected[] = array(
      'id' => 4,
    );
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_1');
    $this
      ->executeView($view, array(
      '23',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
  }

  /**
   * Tests the Month handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedMonth
   */
  public function testMonthHandler() {
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('embed_2');
    $this
      ->executeView($view, array(
      '01',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 2,
    );
    $expected[] = array(
      'id' => 3,
    );
    $expected[] = array(
      'id' => 4,
    );
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_2');
    $this
      ->executeView($view, array(
      '23',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
  }

  /**
   * Tests the Week handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedWeek
   */
  public function testWeekHandler() {
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 1, 2000),
    ))
      ->condition('id', 3)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 10, 2000),
    ))
      ->condition('id', 4)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 2, 1, 2000),
    ))
      ->condition('id', 5)
      ->execute();
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('embed_3');

    // The first jan 2000 was still in the last week of the previous year.
    $this
      ->executeView($view, array(
      52,
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 2,
    );
    $expected[] = array(
      'id' => 3,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_3');
    $this
      ->executeView($view, array(
      '02',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 4,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_3');
    $this
      ->executeView($view, array(
      '05',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_3');
    $this
      ->executeView($view, array(
      '23',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
  }

  /**
   * Tests the Year handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedYear
   */
  public function testYearHandler() {
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 1, 2001),
    ))
      ->condition('id', 3)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 1, 2002),
    ))
      ->condition('id', 4)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 1, 2002),
    ))
      ->condition('id', 5)
      ->execute();
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('embed_4');
    $this
      ->executeView($view, array(
      '2000',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 2,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_4');
    $this
      ->executeView($view, array(
      '2001',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 3,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_4');
    $this
      ->executeView($view, array(
      '2002',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 4,
    );
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_4');
    $this
      ->executeView($view, array(
      '23',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
  }

  /**
   * Tests the YearMonth handler.
   *
   * @see \Drupal\node\Plugin\views\argument\CreatedYearMonth
   */
  public function testYearMonthHandler() {
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 1, 1, 2001),
    ))
      ->condition('id', 3)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 4, 1, 2001),
    ))
      ->condition('id', 4)
      ->execute();
    $this->container
      ->get('database')
      ->update('views_test_data')
      ->fields(array(
      'created' => gmmktime(0, 0, 0, 4, 1, 2001),
    ))
      ->condition('id', 5)
      ->execute();
    $view = views_get_view('test_argument_date');
    $view
      ->setDisplay('embed_5');
    $this
      ->executeView($view, array(
      '200001',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 1,
    );
    $expected[] = array(
      'id' => 2,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_5');
    $this
      ->executeView($view, array(
      '200101',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 3,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_5');
    $this
      ->executeView($view, array(
      '200104',
    ));
    $expected = array();
    $expected[] = array(
      'id' => 4,
    );
    $expected[] = array(
      'id' => 5,
    );
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
    $view
      ->destroy();
    $view
      ->setDisplay('embed_5');
    $this
      ->executeView($view, array(
      '23',
    ));
    $expected = array();
    $this
      ->assertIdenticalResultset($view, $expected, $this->columnMap);
  }

}

Classes

Namesort descending Description
ArgumentDateTest Tests the core date argument handlers.