->type($page->name, 'term')
->press('header-search-box-button')
->see('Search Results')
- ->see($page->name)
- ->click($page->name)
+ ->seeInElement('.entity-list', $page->name)
+ ->clickInElement('.entity-list', $page->name)
->seePageIs($page->getUrl());
}
->see('Chapter Search Results')->seeInElement('.entity-list', $chapter->name);
}
+ public function test_search_quote_term_preparation()
+ {
+ $termString = '"192" cat "dog hat"';
+ $repo = $this->app[\BookStack\Repos\EntityRepo::class];
+ $preparedTerms = $repo->prepareSearchTerms($termString);
+ $this->assertTrue($preparedTerms === ['"192"','"dog hat"', 'cat']);
+ }
+
public function test_books_search_listing()
{
$book = \BookStack\Book::all()->last();
->see('Book Search Results')->see('.entity-list', $book->name);
}
+ public function test_searching_hypen_doesnt_break()
+ {
+ $this->visit('/search/all?term=cat+-')
+ ->seeStatusCode(200);
+ }
+
+ public function test_tag_search()
+ {
+ $newTags = [
+ new \BookStack\Tag([
+ 'name' => 'animal',
+ 'value' => 'cat'
+ ]),
+ new \BookStack\Tag([
+ 'name' => 'color',
+ 'value' => 'red'
+ ])
+ ];
+
+ $pageA = \BookStack\Page::first();
+ $pageA->tags()->saveMany($newTags);
+
+ $pageB = \BookStack\Page::all()->last();
+ $pageB->tags()->create(['name' => 'animal', 'value' => 'dog']);
+
+ $this->asAdmin()->visit('/search/all?term=%5Banimal%5D')
+ ->seeLink($pageA->name)
+ ->seeLink($pageB->name);
+
+ $this->visit('/search/all?term=%5Bcolor%5D')
+ ->seeLink($pageA->name)
+ ->dontSeeLink($pageB->name);
+
+ $this->visit('/search/all?term=%5Banimal%3Dcat%5D')
+ ->seeLink($pageA->name)
+ ->dontSeeLink($pageB->name);
+
+ }
+
public function test_ajax_entity_search()
{
$page = \BookStack\Page::all()->last();