Search by term: extend to entries url

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
Kevin Decherf 2017-02-02 21:39:28 +01:00
parent 8a098044bf
commit eac09b48b0
2 changed files with 26 additions and 1 deletions

View 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');

View 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]'));
}
}