X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2Fbookmark%2FLinkDBTest.php;h=ffe03cc5bde08322b0016275693a827bac0c37a6;hb=refs%2Fpull%2F1368%2Fhead;hp=ff5c0b970af1e8283d71e68606c3337e3d4c5936;hpb=dea72c711ff740b3b829d238fcf85648465143a0;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/bookmark/LinkDBTest.php b/tests/bookmark/LinkDBTest.php index ff5c0b97..ffe03cc5 100644 --- a/tests/bookmark/LinkDBTest.php +++ b/tests/bookmark/LinkDBTest.php @@ -49,17 +49,7 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase * - 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() @@ -67,6 +57,12 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase 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); } /** @@ -191,7 +187,7 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase $dbSize = sizeof($testDB); $link = array( - 'id' => 42, + 'id' => 43, 'title' => 'an additional link', 'url' => 'http://dum.my', 'description' => 'One more', @@ -361,36 +357,6 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase ); } - /** - * 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. */ @@ -516,7 +482,7 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase 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)); @@ -649,4 +615,42 @@ class LinkDBTest extends \PHPUnit\Framework\TestCase $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; + } + } + } + } }