]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | namespace Shaarli\Netscape; | |
3 | ||
4 | use Shaarli\Bookmark\LinkDB; | |
5 | ||
6 | require_once 'tests/utils/ReferenceLinkDB.php'; | |
7 | ||
8 | /** | |
9 | * Netscape bookmark export | |
10 | */ | |
11 | class BookmarkExportTest extends \PHPUnit\Framework\TestCase | |
12 | { | |
13 | /** | |
14 | * @var string datastore to test write operations | |
15 | */ | |
16 | protected static $testDatastore = 'sandbox/datastore.php'; | |
17 | ||
18 | /** | |
19 | * @var \ReferenceLinkDB instance. | |
20 | */ | |
21 | protected static $refDb = null; | |
22 | ||
23 | /** | |
24 | * @var LinkDB private LinkDB instance. | |
25 | */ | |
26 | protected static $linkDb = null; | |
27 | ||
28 | /** | |
29 | * Instantiate reference data | |
30 | */ | |
31 | public static function setUpBeforeClass() | |
32 | { | |
33 | self::$refDb = new \ReferenceLinkDB(); | |
34 | self::$refDb->write(self::$testDatastore); | |
35 | self::$linkDb = new LinkDB(self::$testDatastore, true, false); | |
36 | } | |
37 | ||
38 | /** | |
39 | * Attempt to export an invalid link selection | |
40 | * @expectedException Exception | |
41 | * @expectedExceptionMessageRegExp /Invalid export selection/ | |
42 | */ | |
43 | public function testFilterAndFormatInvalid() | |
44 | { | |
45 | NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'derp', false, ''); | |
46 | } | |
47 | ||
48 | /** | |
49 | * Prepare all links for export | |
50 | */ | |
51 | public function testFilterAndFormatAll() | |
52 | { | |
53 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'all', false, ''); | |
54 | $this->assertEquals(self::$refDb->countLinks(), sizeof($links)); | |
55 | foreach ($links as $link) { | |
56 | $date = $link['created']; | |
57 | $this->assertEquals( | |
58 | $date->getTimestamp(), | |
59 | $link['timestamp'] | |
60 | ); | |
61 | $this->assertEquals( | |
62 | str_replace(' ', ',', $link['tags']), | |
63 | $link['taglist'] | |
64 | ); | |
65 | } | |
66 | } | |
67 | ||
68 | /** | |
69 | * Prepare private links for export | |
70 | */ | |
71 | public function testFilterAndFormatPrivate() | |
72 | { | |
73 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'private', false, ''); | |
74 | $this->assertEquals(self::$refDb->countPrivateLinks(), sizeof($links)); | |
75 | foreach ($links as $link) { | |
76 | $date = $link['created']; | |
77 | $this->assertEquals( | |
78 | $date->getTimestamp(), | |
79 | $link['timestamp'] | |
80 | ); | |
81 | $this->assertEquals( | |
82 | str_replace(' ', ',', $link['tags']), | |
83 | $link['taglist'] | |
84 | ); | |
85 | } | |
86 | } | |
87 | ||
88 | /** | |
89 | * Prepare public links for export | |
90 | */ | |
91 | public function testFilterAndFormatPublic() | |
92 | { | |
93 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, ''); | |
94 | $this->assertEquals(self::$refDb->countPublicLinks(), sizeof($links)); | |
95 | foreach ($links as $link) { | |
96 | $date = $link['created']; | |
97 | $this->assertEquals( | |
98 | $date->getTimestamp(), | |
99 | $link['timestamp'] | |
100 | ); | |
101 | $this->assertEquals( | |
102 | str_replace(' ', ',', $link['tags']), | |
103 | $link['taglist'] | |
104 | ); | |
105 | } | |
106 | } | |
107 | ||
108 | /** | |
109 | * Do not prepend notes with the Shaarli index's URL | |
110 | */ | |
111 | public function testFilterAndFormatDoNotPrependNoteUrl() | |
112 | { | |
113 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, ''); | |
114 | $this->assertEquals( | |
115 | '?WDWyig', | |
116 | $links[2]['url'] | |
117 | ); | |
118 | } | |
119 | ||
120 | /** | |
121 | * Prepend notes with the Shaarli index's URL | |
122 | */ | |
123 | public function testFilterAndFormatPrependNoteUrl() | |
124 | { | |
125 | $indexUrl = 'http://localhost:7469/shaarli/'; | |
126 | $links = NetscapeBookmarkUtils::filterAndFormat( | |
127 | self::$linkDb, | |
128 | 'public', | |
129 | true, | |
130 | $indexUrl | |
131 | ); | |
132 | $this->assertEquals( | |
133 | $indexUrl . '?WDWyig', | |
134 | $links[2]['url'] | |
135 | ); | |
136 | } | |
137 | } |