mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-07-31 15:24:31 +03:00
Searching: Split out search tests into their own dir
This commit is contained in:
117
tests/Search/SiblingSearchTest.php
Normal file
117
tests/Search/SiblingSearchTest.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace Search;
|
||||
|
||||
use BookStack\Entities\Models\Book;
|
||||
use BookStack\Entities\Models\Bookshelf;
|
||||
use Tests\TestCase;
|
||||
|
||||
class SiblingSearchTest extends TestCase
|
||||
{
|
||||
public function test_sibling_search_for_pages()
|
||||
{
|
||||
$chapter = $this->entities->chapterHasPages();
|
||||
$this->assertGreaterThan(2, count($chapter->pages), 'Ensure we\'re testing with at least 1 sibling');
|
||||
$page = $chapter->pages->first();
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$page->id}&entity_type=page");
|
||||
$search->assertSuccessful();
|
||||
foreach ($chapter->pages as $page) {
|
||||
$search->assertSee($page->name);
|
||||
}
|
||||
|
||||
$search->assertDontSee($chapter->name);
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_pages_without_chapter()
|
||||
{
|
||||
$page = $this->entities->pageNotWithinChapter();
|
||||
$bookChildren = $page->book->getDirectVisibleChildren();
|
||||
$this->assertGreaterThan(2, count($bookChildren), 'Ensure we\'re testing with at least 1 sibling');
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$page->id}&entity_type=page");
|
||||
$search->assertSuccessful();
|
||||
foreach ($bookChildren as $child) {
|
||||
$search->assertSee($child->name);
|
||||
}
|
||||
|
||||
$search->assertDontSee($page->book->name);
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_chapters()
|
||||
{
|
||||
$chapter = $this->entities->chapter();
|
||||
$bookChildren = $chapter->book->getDirectVisibleChildren();
|
||||
$this->assertGreaterThan(2, count($bookChildren), 'Ensure we\'re testing with at least 1 sibling');
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$chapter->id}&entity_type=chapter");
|
||||
$search->assertSuccessful();
|
||||
foreach ($bookChildren as $child) {
|
||||
$search->assertSee($child->name);
|
||||
}
|
||||
|
||||
$search->assertDontSee($chapter->book->name);
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_books()
|
||||
{
|
||||
$books = Book::query()->take(10)->get();
|
||||
$book = $books->first();
|
||||
$this->assertGreaterThan(2, count($books), 'Ensure we\'re testing with at least 1 sibling');
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$book->id}&entity_type=book");
|
||||
$search->assertSuccessful();
|
||||
foreach ($books as $expectedBook) {
|
||||
$search->assertSee($expectedBook->name);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_shelves()
|
||||
{
|
||||
$shelves = Bookshelf::query()->take(10)->get();
|
||||
$shelf = $shelves->first();
|
||||
$this->assertGreaterThan(2, count($shelves), 'Ensure we\'re testing with at least 1 sibling');
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$shelf->id}&entity_type=bookshelf");
|
||||
$search->assertSuccessful();
|
||||
foreach ($shelves as $expectedShelf) {
|
||||
$search->assertSee($expectedShelf->name);
|
||||
}
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_books_provides_results_in_alphabetical_order()
|
||||
{
|
||||
$contextBook = $this->entities->book();
|
||||
$searchBook = $this->entities->book();
|
||||
|
||||
$searchBook->name = 'Zebras';
|
||||
$searchBook->save();
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$contextBook->id}&entity_type=book");
|
||||
$this->withHtml($search)->assertElementNotContains('a:first-child', 'Zebras');
|
||||
|
||||
$searchBook->name = '1AAAAAAArdvarks';
|
||||
$searchBook->save();
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$contextBook->id}&entity_type=book");
|
||||
$this->withHtml($search)->assertElementContains('a:first-child', '1AAAAAAArdvarks');
|
||||
}
|
||||
|
||||
public function test_sibling_search_for_shelves_provides_results_in_alphabetical_order()
|
||||
{
|
||||
$contextShelf = $this->entities->shelf();
|
||||
$searchShelf = $this->entities->shelf();
|
||||
|
||||
$searchShelf->name = 'Zebras';
|
||||
$searchShelf->save();
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$contextShelf->id}&entity_type=bookshelf");
|
||||
$this->withHtml($search)->assertElementNotContains('a:first-child', 'Zebras');
|
||||
|
||||
$searchShelf->name = '1AAAAAAArdvarks';
|
||||
$searchShelf->save();
|
||||
|
||||
$search = $this->actingAs($this->users->viewer())->get("/search/entity/siblings?entity_id={$contextShelf->id}&entity_type=bookshelf");
|
||||
$this->withHtml($search)->assertElementContains('a:first-child', '1AAAAAAArdvarks');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user