From: Kevin Decherf Date: Thu, 2 Feb 2017 20:39:28 +0000 (+0100) Subject: Search by term: extend to entries url X-Git-Tag: 2.2.2~11^2 X-Git-Url: https://git.immae.eu/?p=github%2Fwallabag%2Fwallabag.git;a=commitdiff_plain;h=eac09b48b08f5cbc0d219da000026c38a265583a Search by term: extend to entries url Signed-off-by: Kevin Decherf --- diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index b9532fa2..4071301d 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -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'); diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 06ed2db6..3eb6d47f 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -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]')); } }