xref: /plugin/openlayersmap/_test/syntax.test.php (revision 68188742b8f8cb6a4fc79ae6d31c04cb85765213)
1*68188742SMark Prins<?php
2*68188742SMark Prins/*
3*68188742SMark Prins* Copyright (c) 2022 Mark C. Prins <mprins@users.sf.net>
4*68188742SMark Prins*
5*68188742SMark Prins* Permission to use, copy, modify, and distribute this software for any
6*68188742SMark Prins* purpose with or without fee is hereby granted, provided that the above
7*68188742SMark Prins* copyright notice and this permission notice appear in all copies.
8*68188742SMark Prins*
9*68188742SMark Prins* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*68188742SMark Prins* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*68188742SMark Prins* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*68188742SMark Prins* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*68188742SMark Prins* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*68188742SMark Prins* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*68188742SMark Prins* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*68188742SMark Prins*/
17*68188742SMark Prins
18*68188742SMark Prins/**
19*68188742SMark Prins * Syntax tests for the openlayersmap plugin.
20*68188742SMark Prins *
21*68188742SMark Prins * @group plugin_openlayersmap
22*68188742SMark Prins * @group plugins
23*68188742SMark Prins */
24*68188742SMark Prinsclass syntax_plugin_openlayersmap_test extends DokuWikiTest {
25*68188742SMark Prins    protected $pluginsEnabled = array('openlayersmap', 'geophp');
26*68188742SMark Prins
27*68188742SMark Prins    /**
28*68188742SMark Prins     * copy data and add pages to the index.
29*68188742SMark Prins     */
30*68188742SMark Prins    public static function setUpBeforeClass(): void {
31*68188742SMark Prins        parent::setUpBeforeClass();
32*68188742SMark Prins        global $conf;
33*68188742SMark Prins        $conf['allowdebug'] = 1;
34*68188742SMark Prins        $conf['dontlog'] = '';
35*68188742SMark Prins        $conf['cachetime'] = -1;
36*68188742SMark Prins
37*68188742SMark Prins        $conf['plugin']['openlayersmap']['displayformat'] = 'DD';
38*68188742SMark Prins        $conf['plugin']['openlayersmap']['optionStaticMapGenerator'] = 'local';
39*68188742SMark Prins        $conf['plugin']['openlayersmap']['autoZoomMap']              = 1;
40*68188742SMark Prins
41*68188742SMark Prins        TestUtils::rcopy(TMP_DIR, __DIR__ . '/data/');
42*68188742SMark Prins    }
43*68188742SMark Prins
44*68188742SMark Prins    final public function setUp(): void {
45*68188742SMark Prins        parent::setUp();
46*68188742SMark Prins
47*68188742SMark Prins        global $conf;
48*68188742SMark Prins//        $data              = array();
49*68188742SMark Prins//        search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true));
50*68188742SMark Prins//        foreach($data as $val) {
51*68188742SMark Prins//            idx_addPage($val['id']);
52*68188742SMark Prins//        }
53*68188742SMark Prins        if($conf['allowdebug']) {
54*68188742SMark Prins            if(mkdir(DOKU_TMP_DATA . 'data/log/debug/', 0777, true)) {
55*68188742SMark Prins                touch(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
56*68188742SMark Prins            }
57*68188742SMark Prins
58*68188742SMark Prins        }
59*68188742SMark Prins    }
60*68188742SMark Prins
61*68188742SMark Prins    final public function tearDown(): void {
62*68188742SMark Prins        parent::tearDown();
63*68188742SMark Prins
64*68188742SMark Prins        global $conf;
65*68188742SMark Prins        // try to get the debug log after running the test, print and clear
66*68188742SMark Prins        if($conf['allowdebug']) {
67*68188742SMark Prins            print "\n";
68*68188742SMark Prins            readfile(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
69*68188742SMark Prins            unlink(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
70*68188742SMark Prins        }
71*68188742SMark Prins    }
72*68188742SMark Prins
73*68188742SMark Prins    final public function test_rur(): void {
74*68188742SMark Prins        $request  = new TestRequest();
75*68188742SMark Prins        $response = $request->get(array('id' => 'rur'));
76*68188742SMark Prins
77*68188742SMark Prins        $_content = $response->getContent();
78*68188742SMark Prins        self::assertStringContainsString('Rur', $_content);
79*68188742SMark Prins        self::assertStringContainsString('<script defer="defer" src="/./lib/plugins/openlayersmap/ol7/ol.js"></script>', $_content);
80*68188742SMark Prins        self::assertStringContainsString('<div id="olMap-static" class="olStaticMap">', $_content);
81*68188742SMark Prins        self::assertStringContainsString('<table class="olPOItable" id="olMap-table">', $_content);
82*68188742SMark Prins
83*68188742SMark Prins        // image data/media/olmapmaps/openstreetmap/13/cache_8b/9b/94cd3dabd2d1c470a2d5b4bea6df.png should exist
84*68188742SMark Prins        // <img src="/./lib/exe/fetch.php?w=650&amp;h=550&amp;tok=72bf3a&amp;media=olmapmaps:openstreetmap:13:cache_8b:9b:94cd3dabd2d1c470a2d5b4bea6df.png"
85*68188742SMark Prins        // class="medialeft" loading="lazy" title="Rur parkings " alt="Rur parkings " width="650" height="550" />
86*68188742SMark Prins        $_staticImage = $response->queryHTML('img[src*="olmapmaps:openstreetmap:13:cache_8b:9b:94cd3dabd2d1c470a2d5b4bea6df.png"]');
87*68188742SMark Prins        self::assertNotEmpty($_staticImage);
88*68188742SMark Prins        self::assertEquals('medialeft', $_staticImage->attr('class'));
89*68188742SMark Prins        self::assertEquals('650', $_staticImage->attr('width'));
90*68188742SMark Prins        self::assertEquals('550', $_staticImage->attr('height'));
91*68188742SMark Prins        self::assertStringContainsString('Rur parkings', $_staticImage->attr('title'));
92*68188742SMark Prins
93*68188742SMark Prins//        <div class="olPOItableSpan" id="olMap-table-span">\n
94*68188742SMark Prins//                    <table class="olPOItable" id="olMap-table">\n
95*68188742SMark Prins//                    <caption class="olPOITblCaption">Points of Interest</caption>\n
96*68188742SMark Prins//                    <thead class="olPOITblHeader">\n
97*68188742SMark Prins//                    <tr>\n
98*68188742SMark Prins//                    <th class="rowId" scope="col">id</th>\n
99*68188742SMark Prins//                    <th class="icon" scope="col">symbol</th>\n
100*68188742SMark Prins//                    <th class="lat" scope="col" title="latitude in decimal degrees">latitude</th>\n
101*68188742SMark Prins//                    <th class="lon" scope="col" title="longitude in decimal degrees">longitude</th>\n
102*68188742SMark Prins//                    <th class="txt" scope="col">description</th>\n
103*68188742SMark Prins//                    </tr>\n
104*68188742SMark Prins//                    </thead><tfoot class="olPOITblFooter"><tr><td colspan="5">Rur parkings</td></tr></tfoot><tbody class="olPOITblBody">\n
105*68188742SMark Prins//                    <tr>\n
106*68188742SMark Prins//                    <td class="rowId">1</td>\n
107*68188742SMark Prins//                    <td class="icon"><img src="/./lib/plugins/openlayersmap/icons/parking.png" alt="parking" /></td>\n
108*68188742SMark Prins//                    <td class="lat" title="latitude in decimal degrees">50.548611º</td>\n
109*68188742SMark Prins//                    <td class="lon" title="longitude in decimal degrees">6.228889º</td>\n
110*68188742SMark Prins//                    <td class="txt"><p>Parking Dreistegen</p></td>\n
111*68188742SMark Prins//                    </tr>\n
112*68188742SMark Prins//                    <tr>\n
113*68188742SMark Prins//                    <td class="rowId">2</td>\n
114*68188742SMark Prins//                    <td class="icon"><img src="/./lib/plugins/openlayersmap/icons/parking.png" alt="parking" /></td>\n
115*68188742SMark Prins//                    <td class="lat" title="latitude in decimal degrees">50.56384º</td>\n
116*68188742SMark Prins//                    <td class="lon" title="longitude in decimal degrees">6.29766º</td>\n
117*68188742SMark Prins//                    <td class="txt"><p>Parking Grünenthalstrasse</p></td>\n
118*68188742SMark Prins//                    </tr></tbody>\n
119*68188742SMark Prins//                    </table>\n
120*68188742SMark Prins//                </div>\n
121*68188742SMark Prins
122*68188742SMark Prins        $_latCells = $response->queryHTML('td[class="lat"]');
123*68188742SMark Prins        self::assertNotEmpty($_latCells);
124*68188742SMark Prins        // not available in Hogfather
125*68188742SMark Prins        // self::assertEquals('50.548611º', $_latCells->first()->text());
126*68188742SMark Prins        self::assertEquals('50.548611º', $_latCells->get(0)->text());
127*68188742SMark Prins
128*68188742SMark Prins        $_lonCells = $response->queryHTML('td[class="lon"]');
129*68188742SMark Prins        self::assertNotEmpty($_lonCells);
130*68188742SMark Prins        // not available in Hogfather
131*68188742SMark Prins        // self::assertEquals('6.29766º', $_lonCells->last()->text());
132*68188742SMark Prins        self::assertEquals('6.29766º', $_lonCells->get(1)->text());
133*68188742SMark Prins    }
134*68188742SMark Prins}