1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2024-10-29 23:22:34 +01:00

Tags: Stopped recycle bin tags being counted on index

For #4892
Added test to cover.
This commit is contained in:
Dan Brown 2024-04-15 18:44:59 +01:00
parent d9ff001ffe
commit f05ec4cc26
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 44 additions and 2 deletions

View File

@ -38,7 +38,8 @@ class TagRepo
DB::raw('SUM(IF(entity_type = \'book\', 1, 0)) as book_count'),
DB::raw('SUM(IF(entity_type = \'bookshelf\', 1, 0)) as shelf_count'),
])
->orderBy($sort, $listOptions->getOrder());
->orderBy($sort, $listOptions->getOrder())
->whereHas('entity');
if ($nameFilter) {
$query->where('name', '=', $nameFilter);

View File

@ -9,7 +9,7 @@ use Tests\TestCase;
class TagTest extends TestCase
{
protected $defaultTagCount = 20;
protected int $defaultTagCount = 20;
/**
* Get an instance of a page that has many tags.
@ -193,6 +193,24 @@ class TagTest extends TestCase
$resp->assertSee('Tags can be assigned via the page editor sidebar');
}
public function test_tag_index_does_not_include_tags_on_recycle_bin_items()
{
$page = $this->entities->page();
$page->tags()->create(['name' => 'DeleteRecord', 'value' => 'itemToDeleteTest']);
$resp = $this->asEditor()->get('/tags');
$resp->assertSee('DeleteRecord');
$resp = $this->asEditor()->get('/tags?name=DeleteRecord');
$resp->assertSee('itemToDeleteTest');
$this->entities->sendToRecycleBin($page);
$resp = $this->asEditor()->get('/tags');
$resp->assertDontSee('DeleteRecord');
$resp = $this->asEditor()->get('/tags?name=DeleteRecord');
$resp->assertDontSee('itemToDeleteTest');
}
public function test_tag_classes_visible_on_entities()
{
$this->asEditor();

View File

@ -207,6 +207,29 @@ class EntityProvider
return $draftPage;
}
/**
* Send an entity to the recycle bin.
*/
public function sendToRecycleBin(Entity $entity)
{
$trash = app()->make(TrashCan::class);
if ($entity instanceof Page) {
$trash->softDestroyPage($entity);
} elseif ($entity instanceof Chapter) {
$trash->softDestroyChapter($entity);
} elseif ($entity instanceof Book) {
$trash->softDestroyBook($entity);
} elseif ($entity instanceof Bookshelf) {
$trash->softDestroyBookshelf($entity);
}
$entity->refresh();
if (is_null($entity->deleted_at)) {
throw new \Exception("Could not send entity type [{$entity->getMorphClass()}] to the recycle bin");
}
}
/**
* Fully destroy the given entity from the system, bypassing the recycle bin
* stage. Still runs through main app deletion logic.