1<?php
2
3namespace dokuwiki\test\Feed;
4
5use dokuwiki\Feed\FeedMediaProcessor;
6use DOMWrap\Document;
7
8class FeedMediaProcessorTest extends \DokuWikiTest
9{
10
11    public function provideData()
12    {
13        // an Item returned by FeedCreator::fetchItemsFromRecentChanges()
14        yield ([
15            array(
16                'date' => 1705511543,
17                'ip' => '::1',
18                'type' => 'C',
19                'id' => 'wiki:dokuwiki-128.png',
20                'user' => 'testuser',
21                'sum' => 'created',
22                'extra' => '',
23                'sizechange' => 52618,
24                'perms' => 8,
25                'mode' => 'media',
26            ),
27            1705511543, // fixed revision
28            ['testuser@undisclosed.example.com', 'Arthur Dent'], // proper author
29            'created', // summary
30        ]);
31
32        // FeedCreator::fetchItemsFromNamespace() currently does not support media files
33        // FeedCreator::fetchItemsFromSearch() currently does not support media files
34    }
35
36
37    /**
38     * @dataProvider provideData
39     */
40    public function testProcessing($data, $expectedMtime, $expectedAuthor, $expectedSummary)
41    {
42        global $conf;
43        $conf['useacl'] = 1;
44        $conf['showuseras'] = 'username';
45        $conf['useheading'] = 1;
46
47        $proc = new FeedMediaProcessor($data);
48
49        $this->assertEquals('wiki:dokuwiki-128.png', $proc->getId());
50        $this->assertEquals('dokuwiki-128.png', $proc->getTitle());
51        $this->assertEquals($expectedAuthor, $proc->getAuthor());
52        $this->assertEquals($expectedMtime, $proc->getRev());
53        $this->assertEquals(null, $proc->getPrev());
54        $this->assertTrue($proc->isExisting());
55        $this->assertTrue($proc->isExisting());
56        $this->assertEquals(['wiki'], $proc->getCategory());
57        $this->assertEquals($expectedSummary, $proc->getSummary());
58
59        $this->assertEquals(
60            "http://wiki.example.com/doku.php?image=wiki%3Adokuwiki-128.png&ns=wiki&rev=$expectedMtime&do=media",
61            $proc->getURL('page')
62        );
63        $this->assertEquals(
64            "http://wiki.example.com/doku.php?image=wiki%3Adokuwiki-128.png&ns=wiki&rev=$expectedMtime&tab_details=history&do=media",
65            $proc->getURL('rev')
66        );
67        $this->assertEquals(
68            "http://wiki.example.com/doku.php?image=wiki%3Adokuwiki-128.png&ns=wiki&do=media",
69            $proc->getURL('current')
70        );
71        $this->assertEquals(
72            "http://wiki.example.com/doku.php?image=wiki%3Adokuwiki-128.png&ns=wiki&rev=$expectedMtime&tab_details=history&media_do=diff&do=media",
73            $proc->getURL('diff')
74        );
75
76
77        $doc = new Document();
78        $doc->html($proc->getBody('diff'));
79        $th = $doc->find('table th');
80        $this->assertGreaterThanOrEqual(2, $th->count());
81
82        $doc = new Document();
83        $doc->html($proc->getBody('htmldiff'));
84        $th = $doc->find('table th');
85        $this->assertGreaterThanOrEqual(2, $th->count());
86
87        $doc = new Document();
88        $doc->html($proc->getBody('html'));
89        $home = $doc->find('img');
90        $this->assertEquals(1, $home->count());
91    }
92
93}
94