aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/netscape/BookmarkExportTest.php
blob: 6de9876d419701cd76bcf7078b3c57a718e13510 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
namespace Shaarli\Netscape;

use Shaarli\Bookmark\LinkDB;

require_once 'tests/utils/ReferenceLinkDB.php';

/**
 * Netscape bookmark export
 */
class BookmarkExportTest extends \PHPUnit\Framework\TestCase
{
    /**
     * @var string datastore to test write operations
     */
    protected static $testDatastore = 'sandbox/datastore.php';

    /**
     * @var \ReferenceLinkDB instance.
     */
    protected static $refDb = null;

    /**
     * @var LinkDB private LinkDB instance.
     */
    protected static $linkDb = null;

    /**
     * Instantiate reference data
     */
    public static function setUpBeforeClass()
    {
        self::$refDb = new \ReferenceLinkDB();
        self::$refDb->write(self::$testDatastore);
        self::$linkDb = new LinkDB(self::$testDatastore, true, false);
    }

    /**
     * Attempt to export an invalid link selection
     * @expectedException              Exception
     * @expectedExceptionMessageRegExp /Invalid export selection/
     */
    public function testFilterAndFormatInvalid()
    {
        NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'derp', false, '');
    }

    /**
     * Prepare all links for export
     */
    public function testFilterAndFormatAll()
    {
        $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'all', false, '');
        $this->assertEquals(self::$refDb->countLinks(), sizeof($links));
        foreach ($links as $link) {
            $date = $link['created'];
            $this->assertEquals(
                $date->getTimestamp(),
                $link['timestamp']
            );
            $this->assertEquals(
                str_replace(' ', ',', $link['tags']),
                $link['taglist']
            );
        }
    }

    /**
     * Prepare private links for export
     */
    public function testFilterAndFormatPrivate()
    {
        $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'private', false, '');
        $this->assertEquals(self::$refDb->countPrivateLinks(), sizeof($links));
        foreach ($links as $link) {
            $date = $link['created'];
            $this->assertEquals(
                $date->getTimestamp(),
                $link['timestamp']
            );
            $this->assertEquals(
                str_replace(' ', ',', $link['tags']),
                $link['taglist']
            );
        }
    }

    /**
     * Prepare public links for export
     */
    public function testFilterAndFormatPublic()
    {
        $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, '');
        $this->assertEquals(self::$refDb->countPublicLinks(), sizeof($links));
        foreach ($links as $link) {
            $date = $link['created'];
            $this->assertEquals(
                $date->getTimestamp(),
                $link['timestamp']
            );
            $this->assertEquals(
                str_replace(' ', ',', $link['tags']),
                $link['taglist']
            );
        }
    }

    /**
     * Do not prepend notes with the Shaarli index's URL
     */
    public function testFilterAndFormatDoNotPrependNoteUrl()
    {
        $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, '');
        $this->assertEquals(
            '?WDWyig',
            $links[2]['url']
        );
    }

    /**
     * Prepend notes with the Shaarli index's URL
     */
    public function testFilterAndFormatPrependNoteUrl()
    {
        $indexUrl = 'http://localhost:7469/shaarli/';
        $links = NetscapeBookmarkUtils::filterAndFormat(
            self::$linkDb,
            'public',
            true,
            $indexUrl
        );
        $this->assertEquals(
            $indexUrl . '?WDWyig',
            $links[2]['url']
        );
    }
}