]> BookStack Code Mirror - bookstack/blobdiff - tests/Entity/EntitySearchTest.php
Add Slovak translation
[bookstack] / tests / Entity / EntitySearchTest.php
index 6b313e7b82aa58d74a3f81f846cbd5bde6ac6856..4ef8d46fbf0643815540633d149d71d402e23629 100644 (file)
@@ -1,8 +1,6 @@
-<?php
+<?php namespace Tests;
 
-use Illuminate\Support\Facades\DB;
-
-class EntitySearchTest extends TestCase
+class EntitySearchTest extends BrowserKitTest
 {
 
     public function test_page_search()
@@ -15,8 +13,8 @@ class EntitySearchTest extends TestCase
             ->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());
     }
 
@@ -76,10 +74,67 @@ class EntitySearchTest extends TestCase
             ->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();
         $this->asAdmin()->visit('/search/books?term=' . $book->name)
             ->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();
+        $notVisitedPage = \BookStack\Page::first();
+        $this->visit($page->getUrl());
+        $this->asAdmin()->visit('/ajax/search/entities?term=' . $page->name)->see('.entity-list', $page->name);
+        $this->asAdmin()->visit('/ajax/search/entities?types=book&term=' . $page->name)->dontSee('.entity-list', $page->name);
+        $this->asAdmin()->visit('/ajax/search/entities')->see('.entity-list', $page->name)->dontSee($notVisitedPage->name);
+    }
 }