]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Search by term: extend to entries url 2832/head
authorKevin Decherf <kevin@kdecherf.com>
Thu, 2 Feb 2017 20:39:28 +0000 (21:39 +0100)
committerKevin Decherf <kevin@kdecherf.com>
Thu, 16 Feb 2017 20:47:52 +0000 (21:47 +0100)
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
src/Wallabag/CoreBundle/Repository/EntryRepository.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php

index b9532fa2519d0ea7aaf2ca7e2dba60fc5f16a90e..4071301de0206c1dfbc409b1971d7bd9ff0131c9 100644 (file)
@@ -106,8 +106,9 @@ class EntryRepository extends EntityRepository
             $qb->andWhere('e.isArchived = true');
         }
 
+        // We lower() all parts here because PostgreSQL 'LIKE' verb is case-sensitive
         $qb
-            ->andWhere('e.content LIKE :term OR e.title LIKE :term')->setParameter('term', '%'.$term.'%')
+            ->andWhere('lower(e.content) LIKE lower(:term) OR lower(e.title) LIKE lower(:term) OR lower(e.url) LIKE lower(:term)')->setParameter('term', '%'.$term.'%')
             ->leftJoin('e.tags', 't')
             ->groupBy('e.id');
 
index 06ed2db60e4ec6041b21510d8d29cd2e09a601b6..3eb6d47fb9feb875dd45053801f100515beabf7a 100644 (file)
@@ -1093,5 +1093,29 @@ class EntryControllerTest extends WallabagCoreTestCase
         $crawler = $client->submit($form, $data);
 
         $this->assertCount(0, $crawler->filter('div[class=entry]'));
+
+        // test url search on list of all articles
+        $crawler = $client->request('GET', '/all/list');
+
+        $form = $crawler->filter('form[name=search]')->form();
+        $data = [
+            'search_entry[term]' => 'domain', // the search will match an entry with 'domain' in its url
+        ];
+
+        $crawler = $client->submit($form, $data);
+
+        $this->assertCount(1, $crawler->filter('div[class=entry]'));
+
+        // same as previous test but for case-sensitivity
+        $crawler = $client->request('GET', '/all/list');
+
+        $form = $crawler->filter('form[name=search]')->form();
+        $data = [
+            'search_entry[term]' => 'doMain', // the search will match an entry with 'domain' in its url
+        ];
+
+        $crawler = $client->submit($form, $data);
+
+        $this->assertCount(1, $crawler->filter('div[class=entry]'));
     }
 }