X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FLinkFilterTest.php;h=ef1cc10a9789c78ea80dc85ee375eeaca17a5f0f;hb=b2764886c7b52ed98debb90b2ebf075dec5ae2e8;hp=164af0d4fa83f683a2a1b8c789a0c2f8c1406de9;hpb=21979ff11ceee0042642ac17147858a4155d54c5;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/LinkFilterTest.php b/tests/LinkFilterTest.php index 164af0d4..ef1cc10a 100644 --- a/tests/LinkFilterTest.php +++ b/tests/LinkFilterTest.php @@ -12,6 +12,8 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase */ protected static $linkFilter; + protected static $NB_LINKS_REFDB = 7; + /** * Instanciate linkFilter with ReferenceLinkDB data. */ @@ -27,7 +29,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase public function testFilter() { $this->assertEquals( - 6, + self::$NB_LINKS_REFDB, count(self::$linkFilter->filter('', '')) ); @@ -36,6 +38,16 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase 2, count(self::$linkFilter->filter('', '', false, true)) ); + + $this->assertEquals( + self::$NB_LINKS_REFDB, + count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '')) + ); + + $this->assertEquals( + self::$NB_LINKS_REFDB, + count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '')) + ); } /** @@ -164,6 +176,17 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase ); } + /** + * Full-text search - no result found. + */ + public function testFilterFullTextNoResult() + { + $this->assertEquals( + 0, + count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'azertyuiop')) + ); + } + /** * Full-text search - result from a link's URL */ @@ -222,7 +245,7 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase ); $this->assertEquals( - 2, + 3, count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '"free software"')) ); } @@ -250,11 +273,71 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase public function testFilterFullTextMixed() { $this->assertEquals( - 2, + 3, count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'free software')) ); } + /** + * Full-text search - test exclusion with '-'. + */ + public function testExcludeSearch() + { + $this->assertEquals( + 1, + count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, 'free -gnu')) + ); + + $this->assertEquals( + 6, + count(self::$linkFilter->filter(LinkFilter::$FILTER_TEXT, '-revolution')) + ); + } + + /** + * Full-text search - test AND, exact terms and exclusion combined, across fields. + */ + public function testMultiSearch() + { + $this->assertEquals( + 2, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TEXT, + '"Free Software " stallman "read this" @website stuff' + )) + ); + + $this->assertEquals( + 1, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TEXT, + '"free software " stallman "read this" -beard @website stuff' + )) + ); + } + + /** + * Full-text search - make sure that exact search won't work across fields. + */ + public function testSearchExactTermMultiFieldsKo() + { + $this->assertEquals( + 0, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TEXT, + '"designer naming"' + )) + ); + + $this->assertEquals( + 0, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TEXT, + '"designernaming"' + )) + ); + } + /** * Tag search with exclusion. */ @@ -266,8 +349,45 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase ); $this->assertEquals( - 5, + 6, count(self::$linkFilter->filter(LinkFilter::$FILTER_TAG, '-free')) ); } + + /** + * Test crossed search (terms + tags). + */ + public function testFilterCrossedSearch() + { + $terms = '"Free Software " stallman "read this" @website stuff'; + $tags = 'free'; + $this->assertEquals( + 1, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, + array($tags, $terms) + )) + ); + $this->assertEquals( + 2, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, + array('', $terms) + )) + ); + $this->assertEquals( + 1, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, + array($tags, '') + )) + ); + $this->assertEquals( + self::$NB_LINKS_REFDB, + count(self::$linkFilter->filter( + LinkFilter::$FILTER_TAG | LinkFilter::$FILTER_TEXT, + '' + )) + ); + } }