xref: /dokuwiki/_test/tests/Parsing/HandlerTest.php (revision 504c13e8df88563c11b3720b317991bc38835a35)
1<?php
2
3namespace dokuwiki\test\Parsing;
4
5use dokuwiki\Parsing\Handler;
6use dokuwiki\Parsing\ParserMode\ModeInterface;
7
8class HandlerTest extends \DokuWikiTest
9{
10    function testGetModeNameReturnsOriginalName()
11    {
12        $handler = new Handler();
13
14        // create a simple mode that records what getModeName() returns
15        $mode = new class extends \dokuwiki\Parsing\ParserMode\AbstractMode {
16            public $receivedModeName = '';
17            public function getSort() { return 0; }
18            public function handle($match, $state, $pos, Handler $handler)
19            {
20                $this->receivedModeName = $handler->getModeName();
21                return true;
22            }
23        };
24
25        $handler->registerModeObject('resolved', $mode);
26
27        // simulate dispatch with a remapped name (original differs from resolved)
28        $handler->handleToken('resolved', 'test', DOKU_LEXER_SPECIAL, 0, 'original');
29
30        $this->assertSame('original', $mode->receivedModeName);
31    }
32
33    function testGetModeNameFallsBackToModeName()
34    {
35        $handler = new Handler();
36
37        $mode = new class extends \dokuwiki\Parsing\ParserMode\AbstractMode {
38            public $receivedModeName = '';
39            public function getSort() { return 0; }
40            public function handle($match, $state, $pos, Handler $handler)
41            {
42                $this->receivedModeName = $handler->getModeName();
43                return true;
44            }
45        };
46
47        $handler->registerModeObject('mymode', $mode);
48
49        // no original name passed — should fall back to the resolved name
50        $handler->handleToken('mymode', 'test', DOKU_LEXER_SPECIAL, 0);
51
52        $this->assertSame('mymode', $mode->receivedModeName);
53    }
54}
55