1<?php 2 3/** 4 * @group plugin_googletagmanager 5 * @group plugins 6 */ 7 8class action_plugin_googletagmanagerTest extends \DokuWikiTest 9{ 10 const gtmPluginName = 'googletagmanager'; 11 12 public function setUp(): void 13 { 14 $this->pluginsEnabled[] = self::gtmPluginName; 15 parent::setUp(); 16 } 17 18 public function test_google_tag_manager() 19 { 20 global $conf; 21 $gtmValue = "GTM-12345"; 22 $conf['plugin'][self::gtmPluginName][action_plugin_googletagmanager::GTMID] = $gtmValue; 23 24 $pageId = 'start'; 25 saveWikiText($pageId, "Content", 'Script Test base'); 26 idx_addPage($pageId); 27 28 $request = new TestRequest(); 29 $response = $request->get(['id' => $pageId, '/doku.php']); 30 31 /** 32 * Tags to searched 33 */ 34 $tagsSearched = ["script", "noscript"]; 35 36 foreach ($tagsSearched as $tagSearched) { 37 $domElements = $response->queryHTML($tagSearched); 38 39 $patternFound = false; 40 foreach ($domElements as $domElement) { 41 $patternFound = false; 42 foreach ($domElements as $domElement) { 43 if ($tagSearched=="script") { 44 $value = $domElement->textContent; 45 } else { 46 // iframe src as subelement of noscript 47 $this->assertEquals("iframe", $domElement->firstChild->nodeName); 48 $value = $domElement->firstChild->getAttribute("src"); 49 } 50 $patternFound = preg_match("!https://www.googletagmanager.com/.*id=.*$gtmValue!s", $value) === 1; 51 if ($patternFound) { 52 break; 53 } 54 } 55 $this->assertTrue($patternFound, "The GTM scripts have not been found for the tag $tagSearched"); 56 } 57 } 58 } 59 60 public function test_google_tag_manager_awcode() 61 { 62 global $conf; 63 $gtmValue = "AW-12345"; 64 $conf['plugin'][self::gtmPluginName][action_plugin_googletagmanager::GTMID] = $gtmValue; 65 66 $pageId = 'start'; 67 saveWikiText($pageId, "Content", 'Script Test base'); 68 idx_addPage($pageId); 69 70 $request = new TestRequest(); 71 $response = $request->get(['id' => $pageId, '/doku.php']); 72 73 $domElements = $response->queryHTML("script"); 74 75 $patternFound = false; 76 foreach ($domElements as $domElement) { 77 $value = $domElement->textContent; 78 $patternFound = preg_match("/$gtmValue/", $value) === 1; 79 if ($patternFound) { 80 break; 81 } 82 } 83 $this->assertTrue($patternFound, "The GTM scripts have not been found"); 84 } 85} 86