Excluded tags from trashed content (#18164)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user