X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FLinkDBTest.php;h=43652e72c502fbd695e362755a8cc92d53b65c7c;hb=628b97cbdf276785eb9ff4f7a124e81e67d2f76c;hp=3b1a20572a75d428724c8dcf37f50a0f1edb4ff7;hpb=88c15abb2a2b24f05ca926c0ddbdec18a407e47d;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/LinkDBTest.php b/tests/LinkDBTest.php index 3b1a2057..43652e72 100644 --- a/tests/LinkDBTest.php +++ b/tests/LinkDBTest.php @@ -17,8 +17,20 @@ class LinkDBTest extends PHPUnit_Framework_TestCase { // datastore to test write operations protected static $testDatastore = 'sandbox/datastore.php'; + + /** + * @var ReferenceLinkDB instance. + */ protected static $refDB = null; + + /** + * @var LinkDB public LinkDB instance. + */ protected static $publicLinkDB = null; + + /** + * @var LinkDB private LinkDB instance. + */ protected static $privateLinkDB = null; /** @@ -89,7 +101,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase * Attempt to instantiate a LinkDB whereas the datastore is not writable * * @expectedException IOException - * @expectedExceptionMessageRegExp /Error accessing null/ + * @expectedExceptionMessageRegExp /Error accessing\nnull/ */ public function testConstructDatastoreNotWriteable() { @@ -105,7 +117,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase unlink(self::$testDatastore); $this->assertFileNotExists(self::$testDatastore); - $checkDB = self::getMethod('_checkDB'); + $checkDB = self::getMethod('checkDB'); $checkDB->invokeArgs($linkDB, array()); $this->assertFileExists(self::$testDatastore); @@ -122,7 +134,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase $datastoreSize = filesize(self::$testDatastore); $this->assertGreaterThan(0, $datastoreSize); - $checkDB = self::getMethod('_checkDB'); + $checkDB = self::getMethod('checkDB'); $checkDB->invokeArgs($linkDB, array()); // ensure the datastore is left unmodified @@ -244,7 +256,7 @@ class LinkDBTest extends PHPUnit_Framework_TestCase $link = self::$publicLinkDB->getLinkFromUrl('http://mediagoblin.org/'); $this->assertNotEquals(false, $link); - $this->assertEquals( + $this->assertContains( 'A free software media publishing platform', $link['description'] ); @@ -276,7 +288,12 @@ class LinkDBTest extends PHPUnit_Framework_TestCase 'media' => 1, 'software' => 1, 'stallman' => 1, - 'free' => 1 + 'free' => 1, + '-exclude' => 1, + // The DB contains a link with `sTuff` and another one with `stuff` tag. + // They need to be grouped with the first case found (`sTuff`). + 'sTuff' => 2, + 'hashtag' => 2, ), self::$publicLinkDB->allTags() ); @@ -295,7 +312,15 @@ class LinkDBTest extends PHPUnit_Framework_TestCase 'html' => 1, 'w3c' => 1, 'css' => 1, - 'Mercurial' => 1 + 'Mercurial' => 1, + 'sTuff' => 2, + '-exclude' => 1, + '.hidden' => 1, + 'hashtag' => 2, + 'tag1' => 1, + 'tag2' => 1, + 'tag3' => 1, + 'tag4' => 1, ), self::$privateLinkDB->allTags() ); @@ -321,6 +346,13 @@ class LinkDBTest extends PHPUnit_Framework_TestCase $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('://'))); } } @@ -330,9 +362,10 @@ class LinkDBTest extends PHPUnit_Framework_TestCase public function testFilterString() { $tags = 'dev cartoon'; + $request = array('searchtags' => $tags); $this->assertEquals( 2, - count(self::$privateLinkDB->filter(LinkFilter::$FILTER_TAG, $tags, true, false)) + count(self::$privateLinkDB->filterSearch($request, true, false)) ); } @@ -342,9 +375,62 @@ class LinkDBTest extends PHPUnit_Framework_TestCase public function testFilterArray() { $tags = array('dev', 'cartoon'); + $request = array('searchtags' => $tags); $this->assertEquals( 2, - count(self::$privateLinkDB->filter(LinkFilter::$FILTER_TAG, $tags, true, false)) + count(self::$privateLinkDB->filterSearch($request, true, false)) ); } + + /** + * Test hidden tags feature: + * tags starting with a dot '.' are only visible when logged in. + */ + public function testHiddenTags() + { + $tags = '.hidden'; + $request = array('searchtags' => $tags); + $this->assertEquals( + 1, + count(self::$privateLinkDB->filterSearch($request, true, false)) + ); + + $this->assertEquals( + 0, + count(self::$publicLinkDB->filterSearch($request, true, false)) + ); + } + + /** + * Test filterHash() with a valid smallhash. + */ + public function testFilterHashValid() + { + $request = smallHash('20150310_114651'); + $this->assertEquals( + 1, + count(self::$publicLinkDB->filterHash($request)) + ); + } + + /** + * Test filterHash() with an invalid smallhash. + * + * @expectedException LinkNotFoundException + */ + public function testFilterHashInValid1() + { + $request = 'blabla'; + self::$publicLinkDB->filterHash($request); + } + + /** + * Test filterHash() with an empty smallhash. + * + * @expectedException LinkNotFoundException + */ + public function testFilterHashInValid() + { + self::$publicLinkDB->filterHash(''); + } }