X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/9135a85de4eef32a91c7a3ee0aa405ed454e5a4c..refs/pull/5676/head:/tests/Api/SearchApiTest.php
diff --git a/tests/Api/SearchApiTest.php b/tests/Api/SearchApiTest.php
index cdc954ec3..9da7900ca 100644
--- a/tests/Api/SearchApiTest.php
+++ b/tests/Api/SearchApiTest.php
@@ -13,7 +13,7 @@ class SearchApiTest extends TestCase
{
use TestsApi;
- protected $baseEndpoint = '/api/search';
+ protected string $baseEndpoint = '/api/search';
public function test_all_endpoint_returns_search_filtered_results_with_query()
{
@@ -45,22 +45,22 @@ class SearchApiTest extends TestCase
$resp = $this->actingAsApiAdmin()->getJson($this->baseEndpoint . '?query=superuniquevalue');
$resp->assertJsonFragment([
'type' => 'page',
- 'url' => $page->getUrl(),
+ 'url' => $page->getUrl(),
]);
}
public function test_all_endpoint_returns_items_with_preview_html()
{
$book = $this->entities->book();
- $book->update(['name' => 'name with superuniquevalue within', 'description' => 'Description with superuniquevalue within']);
+ $book->forceFill(['name' => 'name with superuniquevalue within', 'description' => 'Description with superuniquevalue within'])->save();
$book->indexForSearch();
$resp = $this->actingAsApiAdmin()->getJson($this->baseEndpoint . '?query=superuniquevalue');
$resp->assertJsonFragment([
- 'type' => 'book',
- 'url' => $book->getUrl(),
+ 'type' => 'book',
+ 'url' => $book->getUrl(),
'preview_html' => [
- 'name' => 'name with superuniquevalue within',
+ 'name' => 'name with superuniquevalue within',
'content' => 'Description with superuniquevalue within',
],
]);
@@ -74,4 +74,46 @@ class SearchApiTest extends TestCase
$resp = $this->actingAsApiEditor()->get($this->baseEndpoint . '?query=myqueryvalue');
$resp->assertOk();
}
+
+ public function test_all_endpoint_includes_parent_details_where_visible()
+ {
+ $page = $this->entities->pageWithinChapter();
+ $chapter = $page->chapter;
+ $book = $page->book;
+
+ $page->update(['name' => 'name with superextrauniquevalue within']);
+ $page->indexForSearch();
+
+ $editor = $this->users->editor();
+ $this->actingAsApiEditor();
+ $resp = $this->getJson($this->baseEndpoint . '?query=superextrauniquevalue');
+ $resp->assertJsonFragment([
+ 'id' => $page->id,
+ 'type' => 'page',
+ 'book' => [
+ 'id' => $book->id,
+ 'name' => $book->name,
+ 'slug' => $book->slug,
+ ],
+ 'chapter' => [
+ 'id' => $chapter->id,
+ 'name' => $chapter->name,
+ 'slug' => $chapter->slug,
+ ],
+ ]);
+
+ $this->permissions->disableEntityInheritedPermissions($chapter);
+ $this->permissions->setEntityPermissions($page, ['view'], [$editor->roles()->first()]);
+
+ $resp = $this->getJson($this->baseEndpoint . '?query=superextrauniquevalue');
+ $resp->assertJsonPath('data.0.id', $page->id);
+ $resp->assertJsonPath('data.0.book.name', $book->name);
+ $resp->assertJsonMissingPath('data.0.chapter');
+
+ $this->permissions->disableEntityInheritedPermissions($book);
+
+ $resp = $this->getJson($this->baseEndpoint . '?query=superextrauniquevalue');
+ $resp->assertJsonPath('data.0.id', $page->id);
+ $resp->assertJsonMissingPath('data.0.book.name');
+ }
}