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')); 763f760703SMark Prins self::assertNotNull($response); 7768188742SMark Prins 7868188742SMark Prins $_content = $response->getContent(); 7968188742SMark Prins self::assertStringContainsString('Rur', $_content); 80*2ce80357SMark Prins self::assertStringContainsString('<script defer="defer" src="/lib/plugins/openlayersmap/ol/ol.js"></script>', $_content); 8168188742SMark Prins self::assertStringContainsString('<div id="olMap-static" class="olStaticMap">', $_content); 823f760703SMark Prins self::assertStringContainsString('<table id="olMap-table" class="olPOItable">', $_content); 8368188742SMark Prins 8468188742SMark Prins // <img src="/./lib/exe/fetch.php?w=650&h=550&tok=72bf3a&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); 1243f760703SMark Prins // not available in "stable" 12568188742SMark Prins // self::assertEquals('50.548611º', $_latCells->first()->text()); 1263f760703SMark Prins self::assertEquals('50.548611º', $_latCells->get(0)->textContent); 12768188742SMark Prins 12868188742SMark Prins $_lonCells = $response->queryHTML('td[class="lon"]'); 12968188742SMark Prins self::assertNotEmpty($_lonCells); 1303f760703SMark Prins // not available in "stable" 13168188742SMark Prins // self::assertEquals('6.29766º', $_lonCells->last()->text()); 1323f760703SMark Prins self::assertEquals('6.29766º', $_lonCells->get(1)->textContent); 1333f760703SMark Prins } 1343f760703SMark Prins 1353f760703SMark Prins final public function test_issue34(): void { 1363f760703SMark Prins $request = new TestRequest(); 1373f760703SMark Prins $response = $request->get(array('id' => 'issue34')); 1383f760703SMark Prins self::assertNotNull($response); 1393f760703SMark Prins } 1403f760703SMark Prins 1413f760703SMark Prins final public function test_issue34_fixed(): void { 1423f760703SMark Prins $request = new TestRequest(); 1433f760703SMark Prins $response = $request->get(array('id' => 'issue34-fixed')); 1443f760703SMark Prins self::assertNotNull($response); 1453f760703SMark Prins 1463f760703SMark Prins $_content = $response->getContent(); 1473f760703SMark Prins self::assertStringContainsString('issue34-fixed', $_content); 1483f760703SMark Prins self::assertStringContainsString('<div id="olMap_example-static" class="olStaticMap">', $_content); 1493f760703SMark Prins self::assertStringContainsString('<table id="olMap_example-table" class="olPOItable">', $_content); 1503f760703SMark Prins 1513f760703SMark Prins $_staticImage = $response->queryHTML('img[src*="olmapmaps:openstreetmap:14:cache_32:12:6533646ecb8cf2f193db46305e5f.png"]'); 1523f760703SMark Prins self::assertNotEmpty($_staticImage); 1533f760703SMark Prins self::assertEquals('550', $_staticImage->attr('width')); 1543f760703SMark Prins self::assertEquals('450', $_staticImage->attr('height')); 1553f760703SMark Prins self::assertEmpty(trim($_staticImage->attr('title'))); 15668188742SMark Prins } 15768188742SMark Prins}