mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-22 01:38:22 +08:00
Tags: Stopped recycle bin tags being counted on index
For #4892 Added test to cover.
This commit is contained in:
parent
d9ff001ffe
commit
f05ec4cc26
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user