1 <?php
2 // must be run within Dokuwiki
3 if (!defined('DOKU_INC')) die();
4 
5 /**
6  * Test cases for the meta plugin
7  */
8 class plugin_meta_rendering_test extends DokuWikiTest {
9 
10     public function setUp() : void {
11         $this->pluginsEnabled[] = 'meta';
12         parent::setUp();
13     }
14 
15     public function test_meta_description() {
16         $text = "My page content";
17         saveWikiText('description_test', $text, 'Created');
18         self::assertEquals($text, p_get_metadata('description_test', 'description abstract', METADATA_RENDER_UNLIMITED));
19 
20         $text .= DOKU_LF . '~~META:description abstract=My abstract~~';
21 
22         saveWikiText('description_test', $text, 'Added meta');
23 
24         self::assertEquals('My abstract', p_get_metadata('description_test', 'description abstract', METADATA_RENDER_UNLIMITED));
25 
26         $text .= DOKU_LF . '~~META:description foobar=bar~~';
27         saveWikiText('description_test', $text, 'Updated meta');
28         self::assertEquals('My abstract', p_get_metadata('description_test', 'description abstract', METADATA_RENDER_UNLIMITED));
29         self::assertEquals('bar', p_get_metadata('description_test', 'description foobar', METADATA_RENDER_UNLIMITED));
30     }
31 
32     public function test_meta_description_with_persistent_description() {
33         $text = "My page content";
34         $id = 'description_test';
35         saveWikiText($id, $text, 'Created');
36         self::assertEquals($text, p_get_metadata($id, 'description abstract', METADATA_RENDER_UNLIMITED));
37 
38         p_set_metadata($id, array('description' => array('abstract' => 'Persistent description')), false, true);
39         self::assertEquals('Persistent description', p_get_metadata($id, 'description abstract', METADATA_RENDER_UNLIMITED));
40 
41         $text .= DOKU_LF . '~~META:description abstract=My abstract~~';
42 
43         saveWikiText($id, $text, 'Added meta');
44 
45         self::assertEquals('My abstract', p_get_metadata($id, 'description abstract', METADATA_RENDER_UNLIMITED));
46 
47         $text .= DOKU_LF . '~~META:description foobar=bar~~';
48         saveWikiText($id, $text, 'Updated meta');
49         self::assertEquals('My abstract', p_get_metadata($id, 'description abstract', METADATA_RENDER_UNLIMITED));
50         self::assertEquals('bar', p_get_metadata($id, 'description foobar', METADATA_RENDER_UNLIMITED));
51     }
52 
53     public function test_relation_references_with_link() {
54         $text = "My page with a [[link_target|Link]].";
55         $id = "source";
56 
57         saveWikiText($id, $text, 'Created');
58 
59         self::assertEquals(array('link_target' => false), p_get_metadata($id, 'relation references', METADATA_RENDER_UNLIMITED));
60 
61         $text .= DOKU_LF. "~~META:relation references=foo~~";
62         saveWikiText($id, $text, 'Updated');
63 
64         self::assertEquals(array('foo' => false, 'link_target' => false), p_get_metadata($id, 'relation references', METADATA_RENDER_UNLIMITED));
65     }
66 
67     public function test_relation_references_without_link() {
68         $text = "My page without a link.";
69         $id = "source";
70 
71         saveWikiText($id, $text, 'Created');
72 
73         self::assertEquals(null, p_get_metadata($id, 'relation references', METADATA_RENDER_UNLIMITED));
74 
75         $text .= DOKU_LF . "~~META:relation references=foo~~";
76         saveWikiText($id, $text, 'Updated');
77 
78         self::assertEquals(array('foo' => false), p_get_metadata($id, 'relation references', METADATA_RENDER_UNLIMITED));
79     }
80 }
81