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