diff options
-rw-r--r-- | src/Wallabag/CoreBundle/Repository/EntryRepository.php | 3 | ||||
-rw-r--r-- | tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | 24 |
2 files changed, 26 insertions, 1 deletions
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 | |||
106 | $qb->andWhere('e.isArchived = true'); | 106 | $qb->andWhere('e.isArchived = true'); |
107 | } | 107 | } |
108 | 108 | ||
109 | // We lower() all parts here because PostgreSQL 'LIKE' verb is case-sensitive | ||
109 | $qb | 110 | $qb |
110 | ->andWhere('e.content LIKE :term OR e.title LIKE :term')->setParameter('term', '%'.$term.'%') | 111 | ->andWhere('lower(e.content) LIKE lower(:term) OR lower(e.title) LIKE lower(:term) OR lower(e.url) LIKE lower(:term)')->setParameter('term', '%'.$term.'%') |
111 | ->leftJoin('e.tags', 't') | 112 | ->leftJoin('e.tags', 't') |
112 | ->groupBy('e.id'); | 113 | ->groupBy('e.id'); |
113 | 114 | ||
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 | |||
1093 | $crawler = $client->submit($form, $data); | 1093 | $crawler = $client->submit($form, $data); |
1094 | 1094 | ||
1095 | $this->assertCount(0, $crawler->filter('div[class=entry]')); | 1095 | $this->assertCount(0, $crawler->filter('div[class=entry]')); |
1096 | |||
1097 | // test url search on list of all articles | ||
1098 | $crawler = $client->request('GET', '/all/list'); | ||
1099 | |||
1100 | $form = $crawler->filter('form[name=search]')->form(); | ||
1101 | $data = [ | ||
1102 | 'search_entry[term]' => 'domain', // the search will match an entry with 'domain' in its url | ||
1103 | ]; | ||
1104 | |||
1105 | $crawler = $client->submit($form, $data); | ||
1106 | |||
1107 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | ||
1108 | |||
1109 | // same as previous test but for case-sensitivity | ||
1110 | $crawler = $client->request('GET', '/all/list'); | ||
1111 | |||
1112 | $form = $crawler->filter('form[name=search]')->form(); | ||
1113 | $data = [ | ||
1114 | 'search_entry[term]' => 'doMain', // the search will match an entry with 'domain' in its url | ||
1115 | ]; | ||
1116 | |||
1117 | $crawler = $client->submit($form, $data); | ||
1118 | |||
1119 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | ||
1096 | } | 1120 | } |
1097 | } | 1121 | } |