ArgumentDateTest.php

Same filename in other branches
  1. 9 core/modules/views/tests/src/Kernel/Handler/ArgumentDateTest.php
  2. 8.9.x core/modules/views/tests/src/Kernel/Handler/ArgumentDateTest.php
  3. 11.x core/modules/views/tests/src/Kernel/Handler/ArgumentDateTest.php

Namespace

Drupal\Tests\views\Kernel\Handler

File

core/modules/views/tests/src/Kernel/Handler/ArgumentDateTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\views\Kernel\Handler;

use Drupal\Tests\views\Kernel\ViewsKernelTestBase;
use Drupal\views\Views;

/**
 * Tests the core date argument handlers.
 *
 * @group views
 * @see \Drupal\views\Plugin\views\argument\Date
 */
class ArgumentDateTest extends ViewsKernelTestBase {
    
    /**
     * Views used by this test.
     *
     * @var array
     */
    public static $testViews = [
        'test_argument_date',
    ];
    
    /**
     * Stores the column map for this testCase.
     *
     * @var array
     */
    protected $columnMap = [
        'id' => 'id',
    ];
    
    /**
     * {@inheritdoc}
     */
    public function viewsData() {
        $data = parent::viewsData();
        $date_plugins = [
            '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() : void {
        $view = Views::getView('test_argument_date');
        $view->setDisplay('default');
        $this->executeView($view, [
            '20000102',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 2,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('default');
        $this->executeView($view, [
            '20000101',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $expected[] = [
            'id' => 3,
        ];
        $expected[] = [
            'id' => 4,
        ];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('default');
        $this->executeView($view, [
            '20001023',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
    }
    
    /**
     * Tests the Day handler.
     *
     * @see \Drupal\node\Plugin\views\argument\CreatedDay
     */
    public function testDayHandler() : void {
        $view = Views::getView('test_argument_date');
        $view->setDisplay('embed_1');
        $this->executeView($view, [
            '02',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 2,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_1');
        $this->executeView($view, [
            '01',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $expected[] = [
            'id' => 3,
        ];
        $expected[] = [
            'id' => 4,
        ];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_1');
        $this->executeView($view, [
            '23',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
    }
    
    /**
     * Tests the Month handler.
     *
     * @see \Drupal\node\Plugin\views\argument\CreatedMonth
     */
    public function testMonthHandler() : void {
        $view = Views::getView('test_argument_date');
        $view->setDisplay('embed_2');
        $this->executeView($view, [
            '01',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $expected[] = [
            'id' => 2,
        ];
        $expected[] = [
            'id' => 3,
        ];
        $expected[] = [
            'id' => 4,
        ];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_2');
        $this->executeView($view, [
            '12',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
    }
    
    /**
     * Tests the Week handler.
     *
     * @see \Drupal\node\Plugin\views\argument\CreatedWeek
     */
    public function testWeekHandler() : void {
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 9, 26, 2008),
        ])
            ->condition('id', 1)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 2, 29, 2004),
        ])
            ->condition('id', 2)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 1, 2000),
        ])
            ->condition('id', 3)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 10, 2000),
        ])
            ->condition('id', 4)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 2, 1, 2000),
        ])
            ->condition('id', 5)
            ->execute();
        $view = Views::getView('test_argument_date');
        $view->setDisplay('embed_3');
        // Check the week calculation for a leap year.
        // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
        $this->executeView($view, [
            '39',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_3');
        // Check the week calculation for the 29th of February in a leap year.
        // @see http://wikipedia.org/wiki/ISO_week_date#Calculation
        $this->executeView($view, [
            '09',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 2,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_3');
        // The first jan 2000 was still in the last week of the previous year.
        $this->executeView($view, [
            '52',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 3,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_3');
        $this->executeView($view, [
            '02',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 4,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_3');
        $this->executeView($view, [
            '05',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_3');
        $this->executeView($view, [
            '23',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
    }
    
    /**
     * Tests the Year handler.
     *
     * @see \Drupal\node\Plugin\views\argument\CreatedYear
     */
    public function testYearHandler() : void {
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 1, 2001),
        ])
            ->condition('id', 3)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 1, 2002),
        ])
            ->condition('id', 4)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 1, 2002),
        ])
            ->condition('id', 5)
            ->execute();
        $view = Views::getView('test_argument_date');
        $view->setDisplay('embed_4');
        $this->executeView($view, [
            '2000',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $expected[] = [
            'id' => 2,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_4');
        $this->executeView($view, [
            '2001',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 3,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_4');
        $this->executeView($view, [
            '2002',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 4,
        ];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_4');
        $this->executeView($view, [
            '23',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
    }
    
    /**
     * Tests the YearMonth handler.
     *
     * @see \Drupal\node\Plugin\views\argument\CreatedYearMonth
     */
    public function testYearMonthHandler() : void {
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 1, 1, 2001),
        ])
            ->condition('id', 3)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 4, 1, 2001),
        ])
            ->condition('id', 4)
            ->execute();
        $this->container
            ->get('database')
            ->update('views_test_data')
            ->fields([
            'created' => gmmktime(0, 0, 0, 4, 1, 2001),
        ])
            ->condition('id', 5)
            ->execute();
        $view = Views::getView('test_argument_date');
        $view->setDisplay('embed_5');
        $this->executeView($view, [
            '200001',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 1,
        ];
        $expected[] = [
            'id' => 2,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_5');
        $this->executeView($view, [
            '200101',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 3,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_5');
        $this->executeView($view, [
            '200104',
        ]);
        $expected = [];
        $expected[] = [
            'id' => 4,
        ];
        $expected[] = [
            'id' => 5,
        ];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
        $view->destroy();
        $view->setDisplay('embed_5');
        $this->executeView($view, [
            '201301',
        ]);
        $expected = [];
        $this->assertIdenticalResultset($view, $expected, $this->columnMap);
    }

}

Classes

Title Deprecated Summary
ArgumentDateTest Tests the core date argument handlers.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.