1 <?php
2 
3 declare(strict_types=1);
4 
5 namespace dokuwiki\plugin\simplemap\test;
6 
7 use Doku_Handler;
8 use dokuwiki\test\mock\Doku_Renderer;
9 use syntax_plugin_simplemap;
10 use DokuWikiTest;
11 
12 /**
13  * Tests for the syntax component of the simplemap plugin
14  *
15  * @group plugin_simplemap
16  * @group plugins
17  */
18 class SyntaxTest extends DokuWikiTest {
19     protected $pluginsEnabled = ['simplemap'];
20 
21     public static function parseMatchTestDataProvider () {
22         return [
23             [
24                 '{{simplemap>osm?lat=50.234&long=13.123}}',
25                 [
26                     'type' => 'osm',
27                     'lat' => '50.234',
28                     'long' => '13.123',
29                 ],
30                 'simple example'
31             ],
32         ];
33     }
34 
35     /**
36      * @dataProvider parseMatchTestDataProvider
37      *
38      * @param $input
39      * @param $expectedOutput
40      * @param $msg
41      */
42     public function testParseMatch($input, $expectedOutput, $msg) {
43         // arrange
44         /** @var syntax_plugin_simplemap $syntax */
45         $syntax = plugin_load('syntax', 'simplemap');
46 
47         // act
48         $actualOutput = $syntax->handle($input, 5, 1, new Doku_Handler());
49 
50         // assert
51         self::assertEquals($expectedOutput, $actualOutput, $msg);
52     }
53 
54     public function testRendererXHTML() {
55         /** @var syntax_plugin_simplemap $syntax */
56         $syntax = plugin_load('syntax', 'simplemap');
57         $testData = [
58             'type' => 'osm',
59             'lat' => '50.234',
60             'long' => '13.123',
61         ];
62         $mockRenderer = new Doku_Renderer();
63 
64         $actualStatus = $syntax->render('xhtml', $mockRenderer, $testData);
65 
66         self::assertTrue($actualStatus);
67         $expectedHTML = '<iframe width="425" height="350" src="https://www.openstreetmap.org/export/embed.html?bbox=13.119%2C50.232%2C13.127%2C50.236&amp;layer=mapnik&amp;marker=50.234%2C13.123"></iframe><br><a href="https://www.openstreetmap.org/#map=14/50.234/13.123" target="_blank">View Larger Map</a>';
68         self::assertSame($expectedHTML, $mockRenderer->doc);
69     }
70 
71     public function testRendererMeta() {
72         /** @var syntax_plugin_simplemap $syntax */
73         $syntax = plugin_load('syntax', 'simplemap');
74         $testData = [
75             'type' => 'osm',
76             'lat' => '50.234',
77             'long' => '13.123',
78         ];
79         $mockRenderer = new Doku_Renderer();
80 
81         $actualStatus = $syntax->render('meta', $mockRenderer, $testData);
82 
83         self::assertFalse($actualStatus);
84         self::assertSame('', $mockRenderer->doc);
85     }
86 }
87