Excluded tags from trashed content (#18164)

This commit is contained in:
Andy Butland
2025-01-29 21:10:11 +01:00
committed by GitHub
parent 5d48bc7371
commit ee2d7bbb1b
2 changed files with 89 additions and 1 deletions

View File

@@ -387,7 +387,9 @@ WHERE r.tagId IS NULL";
}).ToList();
/// <inheritdoc />
public IEnumerable<ITag> GetTagsForEntityType(TaggableObjectTypes objectType, string? group = null,
public IEnumerable<ITag> GetTagsForEntityType(
TaggableObjectTypes objectType,
string? group = null,
string? culture = null)
{
Sql<ISqlContext> sql = GetTagsSql(culture, true);
@@ -401,6 +403,9 @@ WHERE r.tagId IS NULL";
.Where<NodeDto>(dto => dto.NodeObjectType == nodeObjectType);
}
sql = sql
.Where<NodeDto>(dto => !dto.Trashed);
if (group.IsNullOrWhiteSpace() == false)
{
sql = sql

View File

@@ -638,6 +638,89 @@ public class TagRepositoryTest : UmbracoIntegrationTest
}
}
[Test]
public void Can_Get_Tags_For_Entity_Type_Excluding_Trashed_Entity()
{
var provider = ScopeProvider;
using (ScopeProvider.CreateScope())
{
var template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("test", "Test", defaultTemplateId: template.Id);
ContentTypeRepository.Save(contentType);
var content1 = ContentBuilder.CreateSimpleContent(contentType);
content1.PublishCulture(CultureImpact.Invariant);
content1.PublishedState = PublishedState.Publishing;
DocumentRepository.Save(content1);
var content2 = ContentBuilder.CreateSimpleContent(contentType);
content2.PublishCulture(CultureImpact.Invariant);
content2.PublishedState = PublishedState.Publishing;
content2.Trashed = true;
DocumentRepository.Save(content2);
var mediaType = MediaTypeBuilder.CreateImageMediaType("image2");
MediaTypeRepository.Save(mediaType);
var media1 = MediaBuilder.CreateMediaImage(mediaType, -1);
MediaRepository.Save(media1);
var media2 = MediaBuilder.CreateMediaImage(mediaType, -1);
media2.Trashed = true;
MediaRepository.Save(media2);
var repository = CreateRepository(provider);
Tag[] tags =
{
new Tag {Text = "tag1", Group = "test"},
new Tag {Text = "tag2", Group = "test1"},
new Tag {Text = "tag3", Group = "test"}
};
Tag[] tags2 =
{
new Tag {Text = "tag4", Group = "test"},
new Tag {Text = "tag5", Group = "test1"},
new Tag {Text = "tag6", Group = "test"}
};
repository.Assign(
content1.Id,
contentType.PropertyTypes.First().Id,
tags,
false);
repository.Assign(
content2.Id,
contentType.PropertyTypes.First().Id,
tags2,
false);
repository.Assign(
media1.Id,
contentType.PropertyTypes.First().Id,
tags,
false);
repository.Assign(
media2.Id,
contentType.PropertyTypes.First().Id,
tags2,
false);
var result1 = repository.GetTagsForEntityType(TaggableObjectTypes.Content).ToArray();
var result2 = repository.GetTagsForEntityType(TaggableObjectTypes.Media).ToArray();
var result3 = repository.GetTagsForEntityType(TaggableObjectTypes.All).ToArray();
const string ExpectedTags = "tag1,tag2,tag3";
Assert.AreEqual(ExpectedTags, string.Join(",", result1.Select(x => x.Text)));
Assert.AreEqual(ExpectedTags, string.Join(",", result2.Select(x => x.Text)));
Assert.AreEqual(ExpectedTags, string.Join(",", result3.Select(x => x.Text)));
}
}
[Test]
public void Can_Get_Tags_For_Entity_Type()
{