]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tests/LinkFilterTest.php
Allow crossed search between terms and tags
[github/shaarli/Shaarli.git] / tests / LinkFilterTest.php
index 31fd4cf499ac0606d32ced23d261b6ac1c18ad0a..ef1cc10a9789c78ea80dc85ee375eeaca17a5f0f 100644 (file)
@@ -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(
-            7,
+            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, ''))
+        );
     }
 
     /**
@@ -341,4 +353,41 @@ class LinkFilterTest extends PHPUnit_Framework_TestCase
             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,
+                ''
+            ))
+        );
+    }
 }