Skip to content

Commit a86baa4

Browse files
author
Paul Johnson
committed
Bugfix - Policy returns items to delete not items to keep.
Switch to inverse behavior.
1 parent bdbc38e commit a86baa4

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

src/Umbraco.Core/Services/Implement/DefaultContentVersionCleanupPolicy.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ public IEnumerable<ContentVersionMeta> Apply(DateTime asAtDate, IEnumerable<Cont
7373

7474
foreach (var group in grouped)
7575
{
76-
yield return group.OrderByDescending(x => x.VersionId).First();
76+
foreach (var version in group.OrderByDescending(x => x.VersionId).Skip(1))
77+
{
78+
yield return version;
79+
}
7780
}
7881
}
7982
}

src/Umbraco.Tests/Services/DefaultContentVersionCleanupPolicy_Tests_UnitTests.cs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ public void Apply_WithinInKeepLatestPerDay_ReturnsSinglePerContentPerDay(
8787
new ContentVersionMeta(versionId: 5, contentId: 1, contentTypeId: 1, -1, versionDate: DateTime.Today.AddDays(-1).AddHours(-2), false, false, false, null),
8888
new ContentVersionMeta(versionId: 6, contentId: 1, contentTypeId: 1, -1, versionDate: DateTime.Today.AddDays(-1).AddHours(-1), false, false, false, null),
8989
// another content
90-
new ContentVersionMeta(versionId: 7, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
91-
new ContentVersionMeta(versionId: 8, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
92-
new ContentVersionMeta(versionId: 9, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
90+
new ContentVersionMeta(versionId: 7, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
91+
new ContentVersionMeta(versionId: 8, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
92+
new ContentVersionMeta(versionId: 9, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
9393
};
9494

9595
globalSettings.Setup(x => x.ContentVersionCleanupPolicyGlobalSettings)
@@ -103,12 +103,17 @@ public void Apply_WithinInKeepLatestPerDay_ReturnsSinglePerContentPerDay(
103103

104104
var results = sut.Apply(DateTime.Today, historicItems).ToList();
105105

106+
// Keep latest per day for 3 days per content type
107+
// 2 content types, one of which has 2 days of entries, the other only a single day
108+
106109
Assert.Multiple(() =>
107110
{
108-
Assert.AreEqual(3, results.Count);
109-
Assert.True(results.Exists(x => x.VersionId == 3));
110-
Assert.True(results.Exists(x => x.VersionId == 6));
111-
Assert.True(results.Exists(x => x.VersionId == 9));
111+
Assert.AreEqual(6, results.Count);
112+
Assert.AreEqual(4, results.Count(x => x.ContentTypeId == 1));
113+
Assert.AreEqual(2, results.Count(x => x.ContentTypeId == 2));
114+
Assert.False(results.Any(x => x.VersionId == 9)); // Most recent for content type 2
115+
Assert.False(results.Any(x => x.VersionId == 3)); // Most recent for content type 1 today
116+
Assert.False(results.Any(x => x.VersionId == 6)); // Most recent for content type 1 yesterday
112117
});
113118
}
114119

@@ -191,10 +196,14 @@ public void Apply_HasOverridePolicy_RespectsKeepLatest(
191196
new ContentVersionMeta(versionId: 1, contentId: 1, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
192197
new ContentVersionMeta(versionId: 2, contentId: 1, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
193198
new ContentVersionMeta(versionId: 3, contentId: 1, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
199+
// another content
200+
new ContentVersionMeta(versionId: 4, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
201+
new ContentVersionMeta(versionId: 5, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
202+
new ContentVersionMeta(versionId: 6, contentId: 2, contentTypeId: 1, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
194203
// another content & type
195-
new ContentVersionMeta(versionId: 4, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
196-
new ContentVersionMeta(versionId: 5, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
197-
new ContentVersionMeta(versionId: 6, contentId: 2, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
204+
new ContentVersionMeta(versionId: 7, contentId: 3, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-3), false, false, false, null),
205+
new ContentVersionMeta(versionId: 8, contentId: 3, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-2), false, false, false, null),
206+
new ContentVersionMeta(versionId: 9, contentId: 3, contentTypeId: 2, -1, versionDate: DateTime.Today.AddHours(-1), false, false, false, null),
198207
};
199208

200209
globalSettings.Setup(x => x.ContentVersionCleanupPolicyGlobalSettings)
@@ -211,10 +220,15 @@ public void Apply_HasOverridePolicy_RespectsKeepLatest(
211220

212221
var results = sut.Apply(DateTime.Today, historicItems).ToList();
213222

223+
// By default no historic versions are kept
224+
// Override policy for content type 2 keeps latest per day for 3 days, no versions retained for content type with id 1
225+
// There were 3 entries for content type 2 all on the same day
226+
// version id 9 is most recent for content type 2, and should be filtered, all the rest should be present.
214227
Assert.Multiple(() =>
215228
{
216-
Assert.AreEqual(3, results.Count(x => x.ContentTypeId == 1));
217-
Assert.AreEqual(6, results.Single(x => x.ContentTypeId == 2).VersionId);
229+
Assert.AreEqual(8, results.Count);
230+
Assert.AreEqual(2, results.Count(x => x.ContentTypeId == 2));
231+
Assert.False(results.Any(x => x.VersionId == 9));
218232
});
219233
}
220234

0 commit comments

Comments
 (0)