xref: /plugin/today/_test/ActionTest.php (revision c2de205a397cb4b27109538cf7248712fb4aa6e0)
16fbe9396SMichael Große<?php
26fbe9396SMichael Große
36fbe9396SMichael Großedeclare(strict_types=1);
46fbe9396SMichael Große
56fbe9396SMichael Großenamespace dokuwiki\plugin\today\test;
66fbe9396SMichael Große
76fbe9396SMichael Großeuse DokuWikiTest;
86fbe9396SMichael Großeuse TestRequest;
96fbe9396SMichael Große
106fbe9396SMichael Große/**
116fbe9396SMichael Große * Tests for the `?do=today&namespace=foo:bar` action component of the today plugin
126fbe9396SMichael Große *
136fbe9396SMichael Große * @group plugin_today
146fbe9396SMichael Große * @group plugins
156fbe9396SMichael Große */
166fbe9396SMichael Großefinal class ActionTest extends DokuWikiTest {
176fbe9396SMichael Große    protected $pluginsEnabled = ['today'];
186fbe9396SMichael Große
19*c2de205aSMichael Große    public static function dataProvider(): iterable
20*c2de205aSMichael Große    {
21*c2de205aSMichael Große        yield 'no format' => [
22*c2de205aSMichael Große            'extraParams' => [
23*c2de205aSMichael Große                'namespace' => 'foo:bar',
24*c2de205aSMichael Große            ],
25*c2de205aSMichael Große            'expectedUrl' => '/doku.php?id=foo:bar:' . date('Y-m-d'),
26*c2de205aSMichael Große        ];
27*c2de205aSMichael Große
28*c2de205aSMichael Große        yield 'with format' => [
29*c2de205aSMichael Große            'extraParams' => [
30*c2de205aSMichael Große                'namespace' => 'foo:bar',
31*c2de205aSMichael Große                'format' => 'Y:Y-m-d',
32*c2de205aSMichael Große            ],
33*c2de205aSMichael Große            'expectedUrl' => '/doku.php?id=foo:bar:' . date('Y:Y-m-d'),
34*c2de205aSMichael Große        ];
35*c2de205aSMichael Große
36*c2de205aSMichael Große        yield 'weekly' => [
37*c2de205aSMichael Große            'extraParams' => [
38*c2de205aSMichael Große                'namespace' => 'journal:weekly',
39*c2de205aSMichael Große                'format' => 'Y:W',
40*c2de205aSMichael Große            ],
41*c2de205aSMichael Große            'expectedUrl' => '/doku.php?id=journal:weekly:' . date('Y:W'),
42*c2de205aSMichael Große        ];
43*c2de205aSMichael Große    }
44*c2de205aSMichael Große
45*c2de205aSMichael Große    /**
46*c2de205aSMichael Große     * @dataProvider dataProvider
47*c2de205aSMichael Große     */
48*c2de205aSMichael Große    public function testRedirect(array $extraParams, $expectedUrl): void
496fbe9396SMichael Große    {
506fbe9396SMichael Große        $request = new TestRequest();
51*c2de205aSMichael Große        $response = $request->get( array_merge(['do' => 'today'], $extraParams) );
526fbe9396SMichael Große
536fbe9396SMichael Große        $actualUrl = $response->getData('send_redirect')[0];
54*c2de205aSMichael Große
556fbe9396SMichael Große        $this->assertSame( $expectedUrl, $actualUrl);
566fbe9396SMichael Große    }
576fbe9396SMichael Große}
58