xref: /plugin/openlayersmap/_test/syntax.test.php (revision 3f760703f2119486a3bdb7c64e89d61345f9ad6a)
168188742SMark Prins<?php
268188742SMark Prins/*
368188742SMark Prins* Copyright (c) 2022 Mark C. Prins <mprins@users.sf.net>
468188742SMark Prins*
568188742SMark Prins* Permission to use, copy, modify, and distribute this software for any
668188742SMark Prins* purpose with or without fee is hereby granted, provided that the above
768188742SMark Prins* copyright notice and this permission notice appear in all copies.
868188742SMark Prins*
968188742SMark Prins* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1068188742SMark Prins* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1168188742SMark Prins* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1268188742SMark Prins* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1368188742SMark Prins* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1468188742SMark Prins* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1568188742SMark Prins* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1668188742SMark Prins*/
1768188742SMark Prins
1868188742SMark Prins/**
1968188742SMark Prins * Syntax tests for the openlayersmap plugin.
2068188742SMark Prins *
2168188742SMark Prins * @group plugin_openlayersmap
2268188742SMark Prins * @group plugins
2368188742SMark Prins */
2468188742SMark Prinsclass syntax_plugin_openlayersmap_test extends DokuWikiTest {
2568188742SMark Prins    protected $pluginsEnabled = array('openlayersmap', 'geophp');
2668188742SMark Prins
2768188742SMark Prins    /**
2868188742SMark Prins     * copy data and add pages to the index.
2968188742SMark Prins     */
3068188742SMark Prins    public static function setUpBeforeClass(): void {
3168188742SMark Prins        parent::setUpBeforeClass();
3268188742SMark Prins        global $conf;
3368188742SMark Prins        $conf['allowdebug'] = 1;
3468188742SMark Prins        $conf['dontlog']    = '';
3568188742SMark Prins        $conf['cachetime']  = -1;
3668188742SMark Prins
3768188742SMark Prins        $conf['plugin']['openlayersmap']['displayformat']            = 'DD';
3868188742SMark Prins        $conf['plugin']['openlayersmap']['optionStaticMapGenerator'] = 'local';
3968188742SMark Prins        $conf['plugin']['openlayersmap']['autoZoomMap']              = 1;
4068188742SMark Prins
4168188742SMark Prins        TestUtils::rcopy(TMP_DIR, __DIR__ . '/data/');
4268188742SMark Prins    }
4368188742SMark Prins
4468188742SMark Prins    final public function setUp(): void {
4568188742SMark Prins        parent::setUp();
4668188742SMark Prins
4768188742SMark Prins        global $conf;
4868188742SMark Prins//        $data              = array();
4968188742SMark Prins//        search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true));
5068188742SMark Prins//        foreach($data as $val) {
5168188742SMark Prins//            idx_addPage($val['id']);
5268188742SMark Prins//        }
5368188742SMark Prins        if($conf['allowdebug']) {
5468188742SMark Prins            if(mkdir(DOKU_TMP_DATA . 'data/log/debug/', 0777, true)) {
5568188742SMark Prins                touch(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
5668188742SMark Prins            }
5768188742SMark Prins
5868188742SMark Prins        }
5968188742SMark Prins    }
6068188742SMark Prins
6168188742SMark Prins    final public function tearDown(): void {
6268188742SMark Prins        parent::tearDown();
6368188742SMark Prins
6468188742SMark Prins        global $conf;
6568188742SMark Prins        // try to get the debug log after running the test, print and clear
6668188742SMark Prins        if($conf['allowdebug']) {
6768188742SMark Prins            print "\n";
6868188742SMark Prins            readfile(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
6968188742SMark Prins            unlink(DOKU_TMP_DATA . 'data/log/debug/' . date('Y-m-d') . '.log');
7068188742SMark Prins        }
7168188742SMark Prins    }
7268188742SMark Prins
7368188742SMark Prins    final public function test_rur(): void {
7468188742SMark Prins        $request  = new TestRequest();
7568188742SMark Prins        $response = $request->get(array('id' => 'rur'));
76*3f760703SMark Prins        self::assertNotNull($response);
7768188742SMark Prins
7868188742SMark Prins        $_content = $response->getContent();
7968188742SMark Prins        self::assertStringContainsString('Rur', $_content);
8068188742SMark Prins        self::assertStringContainsString('<script defer="defer" src="/./lib/plugins/openlayersmap/ol7/ol.js"></script>', $_content);
8168188742SMark Prins        self::assertStringContainsString('<div id="olMap-static" class="olStaticMap">', $_content);
82*3f760703SMark Prins        self::assertStringContainsString('<table id="olMap-table" class="olPOItable">', $_content);
8368188742SMark Prins
8468188742SMark 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"
8568188742SMark Prins        // class="medialeft" loading="lazy" title="Rur parkings " alt="Rur parkings " width="650" height="550" />
8668188742SMark Prins        $_staticImage = $response->queryHTML('img[src*="olmapmaps:openstreetmap:13:cache_8b:9b:94cd3dabd2d1c470a2d5b4bea6df.png"]');
8768188742SMark Prins        self::assertNotEmpty($_staticImage);
8868188742SMark Prins        self::assertEquals('medialeft', $_staticImage->attr('class'));
8968188742SMark Prins        self::assertEquals('650', $_staticImage->attr('width'));
9068188742SMark Prins        self::assertEquals('550', $_staticImage->attr('height'));
9168188742SMark Prins        self::assertStringContainsString('Rur parkings', $_staticImage->attr('title'));
9268188742SMark Prins
9368188742SMark Prins        // <div class="olPOItableSpan" id="olMap-table-span">\n
9468188742SMark Prins        //    <table class="olPOItable" id="olMap-table">\n
9568188742SMark Prins        //    <caption class="olPOITblCaption">Points of Interest</caption>\n
9668188742SMark Prins        //    <thead class="olPOITblHeader">\n
9768188742SMark Prins        //    <tr>\n
9868188742SMark Prins        //    <th class="rowId" scope="col">id</th>\n
9968188742SMark Prins        //    <th class="icon" scope="col">symbol</th>\n
10068188742SMark Prins        //    <th class="lat" scope="col" title="latitude in decimal degrees">latitude</th>\n
10168188742SMark Prins        //    <th class="lon" scope="col" title="longitude in decimal degrees">longitude</th>\n
10268188742SMark Prins        //    <th class="txt" scope="col">description</th>\n
10368188742SMark Prins        //    </tr>\n
10468188742SMark Prins        //    </thead><tfoot class="olPOITblFooter"><tr><td colspan="5">Rur parkings</td></tr></tfoot><tbody class="olPOITblBody">\n
10568188742SMark Prins        //    <tr>\n
10668188742SMark Prins        //    <td class="rowId">1</td>\n
10768188742SMark Prins        //    <td class="icon"><img src="/./lib/plugins/openlayersmap/icons/parking.png" alt="parking" /></td>\n
10868188742SMark Prins        //    <td class="lat" title="latitude in decimal degrees">50.548611º</td>\n
10968188742SMark Prins        //    <td class="lon" title="longitude in decimal degrees">6.228889º</td>\n
11068188742SMark Prins        //    <td class="txt"><p>Parking Dreistegen</p></td>\n
11168188742SMark Prins        //    </tr>\n
11268188742SMark Prins        //    <tr>\n
11368188742SMark Prins        //    <td class="rowId">2</td>\n
11468188742SMark Prins        //    <td class="icon"><img src="/./lib/plugins/openlayersmap/icons/parking.png" alt="parking" /></td>\n
11568188742SMark Prins        //    <td class="lat" title="latitude in decimal degrees">50.56384º</td>\n
11668188742SMark Prins        //    <td class="lon" title="longitude in decimal degrees">6.29766º</td>\n
11768188742SMark Prins        //    <td class="txt"><p>Parking Grünenthalstrasse</p></td>\n
11868188742SMark Prins        //    </tr></tbody>\n
11968188742SMark Prins        //    </table>\n
12068188742SMark Prins        // </div>\n
12168188742SMark Prins
12268188742SMark Prins        $_latCells = $response->queryHTML('td[class="lat"]');
12368188742SMark Prins        self::assertNotEmpty($_latCells);
124*3f760703SMark Prins        // not available in "stable"
12568188742SMark Prins        // self::assertEquals('50.548611º', $_latCells->first()->text());
126*3f760703SMark Prins        self::assertEquals('50.548611º', $_latCells->get(0)->textContent);
12768188742SMark Prins
12868188742SMark Prins        $_lonCells = $response->queryHTML('td[class="lon"]');
12968188742SMark Prins        self::assertNotEmpty($_lonCells);
130*3f760703SMark Prins        // not available in "stable"
13168188742SMark Prins        // self::assertEquals('6.29766º', $_lonCells->last()->text());
132*3f760703SMark Prins        self::assertEquals('6.29766º', $_lonCells->get(1)->textContent);
133*3f760703SMark Prins    }
134*3f760703SMark Prins
135*3f760703SMark Prins    final public function test_issue34(): void {
136*3f760703SMark Prins        $request  = new TestRequest();
137*3f760703SMark Prins        $response = $request->get(array('id' => 'issue34'));
138*3f760703SMark Prins        self::assertNotNull($response);
139*3f760703SMark Prins    }
140*3f760703SMark Prins
141*3f760703SMark Prins    final public function test_issue34_fixed(): void {
142*3f760703SMark Prins        $request  = new TestRequest();
143*3f760703SMark Prins        $response = $request->get(array('id' => 'issue34-fixed'));
144*3f760703SMark Prins        self::assertNotNull($response);
145*3f760703SMark Prins
146*3f760703SMark Prins        $_content = $response->getContent();
147*3f760703SMark Prins        self::assertStringContainsString('issue34-fixed', $_content);
148*3f760703SMark Prins        self::assertStringContainsString('<div id="olMap_example-static" class="olStaticMap">', $_content);
149*3f760703SMark Prins        self::assertStringContainsString('<table id="olMap_example-table" class="olPOItable">', $_content);
150*3f760703SMark Prins
151*3f760703SMark Prins        $_staticImage = $response->queryHTML('img[src*="olmapmaps:openstreetmap:14:cache_32:12:6533646ecb8cf2f193db46305e5f.png"]');
152*3f760703SMark Prins        self::assertNotEmpty($_staticImage);
153*3f760703SMark Prins        self::assertEquals('550', $_staticImage->attr('width'));
154*3f760703SMark Prins        self::assertEquals('450', $_staticImage->attr('height'));
155*3f760703SMark Prins        self::assertEmpty(trim($_staticImage->attr('title')));
15668188742SMark Prins    }
15768188742SMark Prins}