mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04: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 = \'book\', 1, 0)) as book_count'),
|
||||||
DB::raw('SUM(IF(entity_type = \'bookshelf\', 1, 0)) as shelf_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) {
|
if ($nameFilter) {
|
||||||
$query->where('name', '=', $nameFilter);
|
$query->where('name', '=', $nameFilter);
|
||||||
|
@ -9,7 +9,7 @@ use Tests\TestCase;
|
|||||||
|
|
||||||
class TagTest extends TestCase
|
class TagTest extends TestCase
|
||||||
{
|
{
|
||||||
protected $defaultTagCount = 20;
|
protected int $defaultTagCount = 20;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an instance of a page that has many tags.
|
* 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');
|
$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()
|
public function test_tag_classes_visible_on_entities()
|
||||||
{
|
{
|
||||||
$this->asEditor();
|
$this->asEditor();
|
||||||
|
@ -207,6 +207,29 @@ class EntityProvider
|
|||||||
return $draftPage;
|
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
|
* Fully destroy the given entity from the system, bypassing the recycle bin
|
||||||
* stage. Still runs through main app deletion logic.
|
* stage. Still runs through main app deletion logic.
|
||||||
|
Loading…
Reference in New Issue
Block a user