xref: /plugin/description/_test/syntax.test.php (revision 09eadb0e29ebc967a2c5419f38284ed710a0110f)
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