namespace Shaarli\Bookmark;
use DateTime;
-use Shaarli\Bookmark\Exception\LinkNotFoundException;
use ReferenceLinkDB;
use ReflectionClass;
use Shaarli;
* - by tag,
* - by text,
* - etc.
- */
- public static function setUpBeforeClass()
- {
- self::$refDB = new ReferenceLinkDB();
- self::$refDB->write(self::$testDatastore);
-
- self::$publicLinkDB = new LinkDB(self::$testDatastore, false, false);
- self::$privateLinkDB = new LinkDB(self::$testDatastore, true, false);
- }
-
- /**
+ *
* Resets test data for each test
*/
protected function setUp()
if (file_exists(self::$testDatastore)) {
unlink(self::$testDatastore);
}
+
+ self::$refDB = new ReferenceLinkDB();
+ self::$refDB->write(self::$testDatastore);
+
+ self::$publicLinkDB = new LinkDB(self::$testDatastore, false, false);
+ self::$privateLinkDB = new LinkDB(self::$testDatastore, true, false);
}
/**
$dbSize = sizeof($testDB);
$link = array(
- 'id' => 42,
+ 'id' => 43,
'title' => 'an additional link',
'url' => 'http://dum.my',
'description' => 'One more',
);
}
- /**
- * Test real_url without redirector.
- */
- public function testLinkRealUrlWithoutRedirector()
- {
- $db = new LinkDB(self::$testDatastore, false, false);
- foreach ($db as $link) {
- $this->assertEquals($link['url'], $link['real_url']);
- }
- }
-
- /**
- * Test real_url with redirector.
- */
- public function testLinkRealUrlWithRedirector()
- {
- $redirector = 'http://redirector.to?';
- $db = new LinkDB(self::$testDatastore, false, false, $redirector);
- foreach ($db as $link) {
- $this->assertStringStartsWith($redirector, $link['real_url']);
- $this->assertNotFalse(strpos($link['real_url'], urlencode('://')));
- }
-
- $db = new LinkDB(self::$testDatastore, false, false, $redirector, false);
- foreach ($db as $link) {
- $this->assertStringStartsWith($redirector, $link['real_url']);
- $this->assertFalse(strpos($link['real_url'], urlencode('://')));
- }
- }
-
/**
* Test filter with string.
*/
public function testRenameTagCaseSensitive()
{
self::$refDB->write(self::$testDatastore);
- $linkDB = new LinkDB(self::$testDatastore, true, false, '');
+ $linkDB = new LinkDB(self::$testDatastore, true, false);
$res = $linkDB->renameTag('sTuff', 'Taz');
$this->assertEquals(1, count($res));
$this->assertEquals($expected, $tags, var_export($tags, true));
}
+
+ /**
+ * Make sure that bookmarks with the same timestamp have a consistent order:
+ * if their creation date is equal, bookmarks are sorted by ID DESC.
+ */
+ public function testConsistentOrder()
+ {
+ $nextId = 43;
+ $creation = DateTime::createFromFormat('Ymd_His', '20190807_130444');
+ $linkDB = new LinkDB(self::$testDatastore, true, false);
+ for ($i = 0; $i < 4; ++$i) {
+ $linkDB[$nextId + $i] = [
+ 'id' => $nextId + $i,
+ 'url' => 'http://'. $i,
+ 'created' => $creation,
+ 'title' => true,
+ 'description' => true,
+ 'tags' => true,
+ ];
+ }
+
+ // Check 4 new links 4 times
+ for ($i = 0; $i < 4; ++$i) {
+ $linkDB->save('tests');
+ $linkDB = new LinkDB(self::$testDatastore, true, false);
+ $count = 3;
+ foreach ($linkDB as $link) {
+ if ($link['sticky'] === true) {
+ continue;
+ }
+ $this->assertEquals($nextId + $count, $link['id']);
+ $this->assertEquals('http://'. $count, $link['url']);
+ if (--$count < 0) {
+ break;
+ }
+ }
+ }
+ }
}