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 = \'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);

View File

@ -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();

View File

@ -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.