1ab9621a8SMark Prins<?php 2ab9621a8SMark Prins 3ab9621a8SMark Prins/** 4ab9621a8SMark Prins * Syntax 'keyword_source' tests for the description plugin. 5ab9621a8SMark Prins * 6ab9621a8SMark Prins * @group plugin_description 7ab9621a8SMark Prins * @group plugins 8ab9621a8SMark Prins * 9ab9621a8SMark Prins * @author Mark C. Prins <mprins@users.sf.net> 10ab9621a8SMark Prins * 11ab9621a8SMark Prins * @noinspection AutoloadingIssuesInspection 12ab9621a8SMark Prins * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps 13ab9621a8SMark Prins */ 14ab9621a8SMark Prinsclass syntax_plugin_description_test extends DokuWikiTest 15ab9621a8SMark Prins{ 16ab9621a8SMark Prins protected $pluginsEnabled = array('description'); 17ab9621a8SMark Prins 18ab9621a8SMark Prins /** 19ab9621a8SMark Prins * copy data and pages. 20ab9621a8SMark Prins */ 21ab9621a8SMark Prins public static function setUpBeforeClass(): void 22ab9621a8SMark Prins { 23ab9621a8SMark Prins parent::setUpBeforeClass(); 24ab9621a8SMark Prins TestUtils::rcopy(TMP_DIR, __DIR__ . '/data/'); 25ab9621a8SMark Prins } 26ab9621a8SMark Prins 27ab9621a8SMark Prins final public function setUp(): void 28ab9621a8SMark Prins { 29ab9621a8SMark Prins global $conf; 30ab9621a8SMark Prins parent::setUp(); 31ab9621a8SMark Prins $conf['plugin']['description']['keyword_source'] = 'syntax'; 32ab9621a8SMark Prins } 33ab9621a8SMark Prins 34ab9621a8SMark Prins /** 35ab9621a8SMark Prins * @throws Exception if anything goes wrong 36ab9621a8SMark Prins */ 37ab9621a8SMark Prins final public function testHeaderFromSyntax(): void 38ab9621a8SMark Prins { 39ab9621a8SMark Prins $request = new TestRequest(); 40ab9621a8SMark Prins $response = $request->get(array('id' => 'description_syntax')); 41ab9621a8SMark Prins 42ab9621a8SMark Prins // check description meta headers, set from file 43ab9621a8SMark Prins $this->assertStringContainsString( 44ab9621a8SMark Prins 'Place the page description here', 45ab9621a8SMark Prins $response->queryHTML('meta[name="description"]')->attr('content') 46ab9621a8SMark Prins ); 47ab9621a8SMark Prins } 48*09eadb0eSCopilot 49*09eadb0eSCopilot /** 50*09eadb0eSCopilot * Test that pages without description syntax don't cause PHP errors 51*09eadb0eSCopilot * This tests the fix for issue #6 52*09eadb0eSCopilot * 53*09eadb0eSCopilot * @throws Exception if anything goes wrong 54*09eadb0eSCopilot */ 55*09eadb0eSCopilot final public function testNoDescriptionSyntaxNoError(): void 56*09eadb0eSCopilot { 57*09eadb0eSCopilot $request = new TestRequest(); 58*09eadb0eSCopilot $response = $request->get(array('id' => 'no_description')); 59*09eadb0eSCopilot 60*09eadb0eSCopilot // Page should load successfully without PHP errors 61*09eadb0eSCopilot $this->assertNotNull($response); 62*09eadb0eSCopilot 63*09eadb0eSCopilot // No description meta tag should be present 64*09eadb0eSCopilot $metaTags = $response->queryHTML('meta[name="description"]'); 65*09eadb0eSCopilot $this->assertEquals(0, $metaTags->count()); 66*09eadb0eSCopilot } 67ab9621a8SMark Prins} 68