Added trashed state so when requesting content from the recycle bin via the management api it will return trashed instead of published state (#20542)
Added trashed state so when requesting content from the recycle bin via the management api, the state will be trashed instead of published.
This commit is contained in:
@@ -12,6 +12,7 @@ internal static class DocumentVariantStateHelper
|
|||||||
culture,
|
culture,
|
||||||
content.Edited,
|
content.Edited,
|
||||||
content.Published,
|
content.Published,
|
||||||
|
content.Trashed,
|
||||||
content.AvailableCultures,
|
content.AvailableCultures,
|
||||||
content.EditedCultures ?? Enumerable.Empty<string>(),
|
content.EditedCultures ?? Enumerable.Empty<string>(),
|
||||||
content.PublishedCultures);
|
content.PublishedCultures);
|
||||||
@@ -22,17 +23,23 @@ internal static class DocumentVariantStateHelper
|
|||||||
culture,
|
culture,
|
||||||
content.Edited,
|
content.Edited,
|
||||||
content.Published,
|
content.Published,
|
||||||
|
content.Trashed,
|
||||||
content.CultureNames.Keys,
|
content.CultureNames.Keys,
|
||||||
content.EditedCultures,
|
content.EditedCultures,
|
||||||
content.PublishedCultures);
|
content.PublishedCultures);
|
||||||
|
|
||||||
private static DocumentVariantState GetState(IEntity entity, string? culture, bool edited, bool published, IEnumerable<string> availableCultures, IEnumerable<string> editedCultures, IEnumerable<string> publishedCultures)
|
private static DocumentVariantState GetState(IEntity entity, string? culture, bool edited, bool published, bool trashed, IEnumerable<string> availableCultures, IEnumerable<string> editedCultures, IEnumerable<string> publishedCultures)
|
||||||
{
|
{
|
||||||
if (entity.Id <= 0 || (culture is not null && availableCultures.Contains(culture) is false))
|
if (entity.Id <= 0 || (culture is not null && availableCultures.Contains(culture) is false))
|
||||||
{
|
{
|
||||||
return DocumentVariantState.NotCreated;
|
return DocumentVariantState.NotCreated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (trashed)
|
||||||
|
{
|
||||||
|
return DocumentVariantState.Trashed;
|
||||||
|
}
|
||||||
|
|
||||||
var isDraft = published is false ||
|
var isDraft = published is false ||
|
||||||
(culture != null && publishedCultures.Contains(culture) is false);
|
(culture != null && publishedCultures.Contains(culture) is false);
|
||||||
if (isDraft)
|
if (isDraft)
|
||||||
|
|||||||
@@ -24,4 +24,9 @@ public enum DocumentVariantState
|
|||||||
/// The item is published and there are pending changes
|
/// The item is published and there are pending changes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
PublishedPendingChanges = 4,
|
PublishedPendingChanges = 4,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The item is in the recycle bin
|
||||||
|
/// </summary>
|
||||||
|
Trashed = 5,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,13 +11,14 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Cms.Api.Management.Mapping.Content
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class DocumentVariantStateHelperTests
|
public class DocumentVariantStateHelperTests
|
||||||
{
|
{
|
||||||
[TestCase(false, false, DocumentVariantState.Draft)]
|
[TestCase(false, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(false, true, DocumentVariantState.Published)]
|
[TestCase(false, true, false, DocumentVariantState.Published)]
|
||||||
[TestCase(true, false, DocumentVariantState.Draft)]
|
[TestCase(true, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(true, true, DocumentVariantState.PublishedPendingChanges)]
|
[TestCase(true, true, false, DocumentVariantState.PublishedPendingChanges)]
|
||||||
public void Culture_Invariant_Content_State(bool edited, bool published, DocumentVariantState expectedResult)
|
[TestCase(true, false, true, DocumentVariantState.Trashed)]
|
||||||
|
public void Culture_Invariant_Content_State(bool edited, bool published, bool trashed, DocumentVariantState expectedResult)
|
||||||
{
|
{
|
||||||
var content = Mock.Of<IContent>(c => c.Id == 1 && c.Published == published && c.Edited == edited);
|
var content = Mock.Of<IContent>(c => c.Id == 1 && c.Published == published && c.Edited == edited && c.Trashed == trashed);
|
||||||
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(content, culture: null));
|
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(content, culture: null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,11 +32,12 @@ public class DocumentVariantStateHelperTests
|
|||||||
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(content, culture: null));
|
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(content, culture: null));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(false, false, DocumentVariantState.Draft)]
|
[TestCase(false, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(false, true, DocumentVariantState.Published)]
|
[TestCase(false, true, false, DocumentVariantState.Published)]
|
||||||
[TestCase(true, false, DocumentVariantState.Draft)]
|
[TestCase(true, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(true, true, DocumentVariantState.PublishedPendingChanges)]
|
[TestCase(true, true, false, DocumentVariantState.PublishedPendingChanges)]
|
||||||
public void Culture_Variant_Content_Existing_Culture_State(bool edited, bool published, DocumentVariantState expectedResult)
|
[TestCase(true, false, true, DocumentVariantState.Trashed)]
|
||||||
|
public void Culture_Variant_Content_Existing_Culture_State(bool edited, bool published, bool trashed, DocumentVariantState expectedResult)
|
||||||
{
|
{
|
||||||
const string culture = "en";
|
const string culture = "en";
|
||||||
var content = Mock.Of<IContent>(c =>
|
var content = Mock.Of<IContent>(c =>
|
||||||
@@ -43,7 +45,8 @@ public class DocumentVariantStateHelperTests
|
|||||||
&& c.AvailableCultures == new[] { culture }
|
&& c.AvailableCultures == new[] { culture }
|
||||||
&& c.EditedCultures == (edited ? new[] { culture } : Enumerable.Empty<string>())
|
&& c.EditedCultures == (edited ? new[] { culture } : Enumerable.Empty<string>())
|
||||||
&& c.Published == published
|
&& c.Published == published
|
||||||
&& c.PublishedCultures == (published ? new[] { culture } : Enumerable.Empty<string>()));
|
&& c.PublishedCultures == (published ? new[] { culture } : Enumerable.Empty<string>())
|
||||||
|
&& c.Trashed == trashed);
|
||||||
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(content, culture));
|
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(content, culture));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,13 +66,14 @@ public class DocumentVariantStateHelperTests
|
|||||||
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(content, "dk"));
|
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(content, "dk"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(false, false, DocumentVariantState.Draft)]
|
[TestCase(false, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(false, true, DocumentVariantState.Published)]
|
[TestCase(false, true, false, DocumentVariantState.Published)]
|
||||||
[TestCase(true, false, DocumentVariantState.Draft)]
|
[TestCase(true, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(true, true, DocumentVariantState.PublishedPendingChanges)]
|
[TestCase(true, true, false, DocumentVariantState.PublishedPendingChanges)]
|
||||||
public void Culture_Invariant_DocumentEntitySlim_State(bool edited, bool published, DocumentVariantState expectedResult)
|
[TestCase(true, false, true, DocumentVariantState.Trashed)]
|
||||||
|
public void Culture_Invariant_DocumentEntitySlim_State(bool edited, bool published, bool trashed, DocumentVariantState expectedResult)
|
||||||
{
|
{
|
||||||
var entity = Mock.Of<IDocumentEntitySlim>(c => c.Id == 1 && c.Published == published && c.Edited == edited && c.CultureNames == new Dictionary<string, string>());
|
var entity = Mock.Of<IDocumentEntitySlim>(c => c.Id == 1 && c.Published == published && c.Edited == edited && c.CultureNames == new Dictionary<string, string>() && c.Trashed == trashed);
|
||||||
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(entity, culture: null));
|
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(entity, culture: null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,11 +87,12 @@ public class DocumentVariantStateHelperTests
|
|||||||
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(entity, culture: null));
|
Assert.AreEqual(DocumentVariantState.NotCreated, DocumentVariantStateHelper.GetState(entity, culture: null));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(false, false, DocumentVariantState.Draft)]
|
[TestCase(false, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(false, true, DocumentVariantState.Published)]
|
[TestCase(false, true, false, DocumentVariantState.Published)]
|
||||||
[TestCase(true, false, DocumentVariantState.Draft)]
|
[TestCase(true, false, false, DocumentVariantState.Draft)]
|
||||||
[TestCase(true, true, DocumentVariantState.PublishedPendingChanges)]
|
[TestCase(true, true, false, DocumentVariantState.PublishedPendingChanges)]
|
||||||
public void Culture_Variant_DocumentEntitySlim_Existing_Culture_State(bool edited, bool published, DocumentVariantState expectedResult)
|
[TestCase(true, false, true, DocumentVariantState.Trashed)]
|
||||||
|
public void Culture_Variant_DocumentEntitySlim_Existing_Culture_State(bool edited, bool published, bool trashed, DocumentVariantState expectedResult)
|
||||||
{
|
{
|
||||||
const string culture = "en";
|
const string culture = "en";
|
||||||
var entity = Mock.Of<IDocumentEntitySlim>(c =>
|
var entity = Mock.Of<IDocumentEntitySlim>(c =>
|
||||||
@@ -95,7 +100,8 @@ public class DocumentVariantStateHelperTests
|
|||||||
&& c.CultureNames == new Dictionary<string, string> { { culture, "value does not matter" } }
|
&& c.CultureNames == new Dictionary<string, string> { { culture, "value does not matter" } }
|
||||||
&& c.EditedCultures == (edited ? new[] { culture } : Enumerable.Empty<string>())
|
&& c.EditedCultures == (edited ? new[] { culture } : Enumerable.Empty<string>())
|
||||||
&& c.Published == published
|
&& c.Published == published
|
||||||
&& c.PublishedCultures == (published ? new[] { culture } : Enumerable.Empty<string>()));
|
&& c.PublishedCultures == (published ? new[] { culture } : Enumerable.Empty<string>())
|
||||||
|
&& c.Trashed == trashed);
|
||||||
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(entity, culture));
|
Assert.AreEqual(expectedResult, DocumentVariantStateHelper.GetState(entity, culture));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user