Cleanup and fixed tests

This commit is contained in:
Bjarke Berg
2021-11-02 09:18:15 +01:00
parent 926c74dcba
commit b7d5fd4b26
20 changed files with 183 additions and 91 deletions

View File

@@ -13,7 +13,7 @@ namespace Umbraco.Cms.Core.Models
/// </summary>
[Serializable]
[DataContract(IsReference = true)]
public class ContentType : ContentTypeCompositionBase, IContentType
public class ContentType : ContentTypeCompositionBase, IContentTypeWithHistoryCleanup
{
public const bool SupportsPublishingConst = true;

View File

@@ -1,6 +1,6 @@
using System;
namespace Umbraco.Core.Models
namespace Umbraco.Cms.Core.Models
{
public class ContentVersionCleanupPolicySettings
{

View File

@@ -1,8 +1,19 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Umbraco.Cms.Core.Models.ContentEditing;
namespace Umbraco.Cms.Core.Models
{
[Obsolete("This will be merged into IContentType in Umbraco 10")]
public interface IContentTypeWithHistoryCleanup : IContentType
{
/// <summary>
/// Gets or Sets the history cleanup configuration
/// </summary>
HistoryCleanup HistoryCleanup { get; set; }
}
/// <summary>
/// Defines a ContentType, which Content is based on
/// </summary>
@@ -23,11 +34,6 @@ namespace Umbraco.Cms.Core.Models
/// </summary>
IEnumerable<ITemplate> AllowedTemplates { get; set; }
/// <summary>
/// Gets or Sets the history cleanup configuration
/// </summary>
HistoryCleanup HistoryCleanup { get; set; }
/// <summary>
/// Determines if AllowedTemplates contains templateId
/// </summary>

View File

@@ -45,9 +45,10 @@ namespace Umbraco.Cms.Core.Models.Mapping
IMemberTypeService memberTypeService,
ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IOptions<GlobalSettings> globalSettings,
IHostingEnvironment hostingEnvironment)
: this(commonMapper, propertyEditors, dataTypeService, fileService, contentTypeService, mediaTypeService, memberTypeService, loggerFactory, shortStringHelper, globalSettings, hostingEnvironment, StaticServiceProvider.Instance.GetRequiredService<IOptionsMonitor<ContentSettings>>())
: this(commonMapper, propertyEditors, dataTypeService, fileService, contentTypeService, mediaTypeService,
memberTypeService, loggerFactory, shortStringHelper, globalSettings, hostingEnvironment,
StaticServiceProvider.Instance.GetRequiredService<IOptionsMonitor<ContentSettings>>())
{
}
public ContentTypeMapDefinition(CommonMapper commonMapper, PropertyEditorCollection propertyEditors,
@@ -130,7 +131,10 @@ namespace Umbraco.Cms.Core.Models.Mapping
MapSaveToTypeBase<DocumentTypeSave, PropertyTypeBasic>(source, target, context);
MapComposition(source, target, alias => _contentTypeService.Get(alias));
target.HistoryCleanup = source.HistoryCleanup;
if (target is IContentTypeWithHistoryCleanup targetWithHistoryCleanup)
{
targetWithHistoryCleanup.HistoryCleanup = source.HistoryCleanup;
}
target.AllowedTemplates = source.AllowedTemplates
.Where(x => x != null)
@@ -177,15 +181,23 @@ namespace Umbraco.Cms.Core.Models.Mapping
{
MapTypeToDisplayBase<DocumentTypeDisplay, PropertyTypeDisplay>(source, target);
target.HistoryCleanup = new HistoryCleanupViewModel
if (source is IContentTypeWithHistoryCleanup sourceWithHistoryCleanup)
{
PreventCleanup = source.HistoryCleanup.PreventCleanup,
KeepAllVersionsNewerThanDays = source.HistoryCleanup.KeepAllVersionsNewerThanDays,
KeepLatestVersionPerDayForDays = source.HistoryCleanup.KeepLatestVersionPerDayForDays,
GlobalKeepAllVersionsNewerThanDays = _contentSettings.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays,
GlobalKeepLatestVersionPerDayForDays = _contentSettings.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays,
GlobalEnableCleanup = _contentSettings.ContentVersionCleanupPolicy.EnableCleanup
};
target.HistoryCleanup = new HistoryCleanupViewModel
{
PreventCleanup = sourceWithHistoryCleanup.HistoryCleanup.PreventCleanup,
KeepAllVersionsNewerThanDays =
sourceWithHistoryCleanup.HistoryCleanup.KeepAllVersionsNewerThanDays,
KeepLatestVersionPerDayForDays =
sourceWithHistoryCleanup.HistoryCleanup.KeepLatestVersionPerDayForDays,
GlobalKeepAllVersionsNewerThanDays =
_contentSettings.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays,
GlobalKeepLatestVersionPerDayForDays =
_contentSettings.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays,
GlobalEnableCleanup = _contentSettings.ContentVersionCleanupPolicy.EnableCleanup
};
}
target.AllowCultureVariant = source.VariesByCulture();
target.AllowSegmentVariant = source.VariesBySegment();

View File

@@ -1,9 +1,7 @@
using System.Collections.Generic;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Persistence;
using Umbraco.Core.Models;
namespace Umbraco.Core.Persistence.Repositories
namespace Umbraco.Cms.Core.Persistence.Repositories
{
public interface IDocumentVersionRepository : IRepository
{

View File

@@ -1,9 +1,8 @@
using System;
using System.Collections.Generic;
using Umbraco.Cms.Core.Models;
using Umbraco.Core.Models;
namespace Umbraco.Core.Services
namespace Umbraco.Cms.Core.Services
{
/// <summary>
/// Used to filter historic content versions for cleanup.

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using Umbraco.Cms.Core.Models;
using Umbraco.Core.Models;
namespace Umbraco.Cms.Core.Services
{

View File

@@ -25,6 +25,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection
builder.Services.AddUnique<IDictionaryRepository, DictionaryRepository>();
builder.Services.AddUnique<IDocumentBlueprintRepository, DocumentBlueprintRepository>();
builder.Services.AddUnique<IDocumentRepository, DocumentRepository>();
builder.Services.AddUnique<IDocumentVersionRepository, DocumentVersionRepository>();
builder.Services.AddUnique<IDocumentTypeContainerRepository, DocumentTypeContainerRepository>();
builder.Services.AddUnique<IDomainRepository, DomainRepository>();
builder.Services.AddUnique<IEntityRepository, EntityRepository>();

View File

@@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Hosting;
@@ -16,6 +15,7 @@ using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.Implement;
using Umbraco.Cms.Infrastructure.Packaging;
using Umbraco.Cms.Infrastructure.Services.Implement;
using Umbraco.Extensions;
namespace Umbraco.Cms.Infrastructure.DependencyInjection
@@ -44,6 +44,7 @@ namespace Umbraco.Cms.Infrastructure.DependencyInjection
builder.Services.AddUnique<ITagService, TagService>();
builder.Services.AddUnique<IContentService, ContentService>();
builder.Services.AddUnique<IContentVersionService, ContentVersionService>();
builder.Services.AddUnique<IContentVersionCleanupPolicy, DefaultContentVersionCleanupPolicy>();
builder.Services.AddUnique<IUserService, UserService>();
builder.Services.AddUnique<IMemberService, MemberService>();
builder.Services.AddUnique<IMediaService, MediaService>();

View File

@@ -7,7 +7,6 @@ using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Runtime;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Sync;
using Umbraco.Core.Services;
namespace Umbraco.Cms.Infrastructure.HostedServices
{
@@ -18,10 +17,10 @@ namespace Umbraco.Cms.Infrastructure.HostedServices
{
private readonly IRuntimeState _runtimeState;
private readonly ILogger<ContentVersionCleanup> _logger;
private readonly IOptionsMonitor<ContentSettings> _settingsMonitor;
private readonly IContentVersionService _service;
private readonly IMainDom _mainDom;
private readonly IServerRoleAccessor _serverRoleAccessor;
private ContentVersionCleanupPolicySettings _settings;
/// <summary>
/// Initializes a new instance of the <see cref="ContentVersionCleanup"/> class.
@@ -29,7 +28,7 @@ namespace Umbraco.Cms.Infrastructure.HostedServices
public ContentVersionCleanup(
IRuntimeState runtimeState,
ILogger<ContentVersionCleanup> logger,
IOptionsMonitor<ContentSettings> settings,
IOptionsMonitor<ContentSettings> settingsMonitor,
IContentVersionService service,
IMainDom mainDom,
IServerRoleAccessor serverRoleAccessor)
@@ -37,19 +36,17 @@ namespace Umbraco.Cms.Infrastructure.HostedServices
{
_runtimeState = runtimeState;
_logger = logger;
_settings = settings.CurrentValue.ContentVersionCleanupPolicy;
_settingsMonitor = settingsMonitor;
_service = service;
_mainDom = mainDom;
_serverRoleAccessor = serverRoleAccessor;
settings.OnChange(x => _settings = x.ContentVersionCleanupPolicy);
}
/// <inheritdoc />
public override Task PerformExecuteAsync(object state)
{
// Globally disabled by feature flag
if (!_settings.EnableCleanup)
if (!_settingsMonitor.CurrentValue.ContentVersionCleanupPolicy.EnableCleanup)
{
_logger.LogInformation("ContentVersionCleanup task will not run as it has been globally disabled via configuration");
return Task.CompletedTask;

View File

@@ -13,7 +13,7 @@ using Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_8_6_0;
using Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_8_7_0;
using Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_8_9_0;
using Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_9_0_0;
using Umbraco.Core.Migrations.Upgrade.V_9_1_0;
using Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_9_1_0;
using Umbraco.Extensions;
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade

View File

@@ -2,7 +2,7 @@ using Umbraco.Cms.Infrastructure.Migrations;
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
using Umbraco.Extensions;
namespace Umbraco.Core.Migrations.Upgrade.V_9_1_0
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_9_1_0
{
class AddContentVersionCleanupFeature : MigrationBase
{

View File

@@ -296,15 +296,19 @@ namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement
private void PersistHistoryCleanup(IContentType entity)
{
ContentVersionCleanupPolicyDto dto = new ContentVersionCleanupPolicyDto()
if (entity is IContentTypeWithHistoryCleanup entityWithHistoryCleanup)
{
ContentTypeId = entity.Id,
Updated = DateTime.Now,
PreventCleanup = entity.HistoryCleanup.PreventCleanup,
KeepAllVersionsNewerThanDays = entity.HistoryCleanup.KeepAllVersionsNewerThanDays,
KeepLatestVersionPerDayForDays = entity.HistoryCleanup.KeepLatestVersionPerDayForDays,
};
Database.InsertOrUpdate(dto);
ContentVersionCleanupPolicyDto dto = new ContentVersionCleanupPolicyDto()
{
ContentTypeId = entity.Id,
Updated = DateTime.Now,
PreventCleanup = entityWithHistoryCleanup.HistoryCleanup.PreventCleanup,
KeepAllVersionsNewerThanDays = entityWithHistoryCleanup.HistoryCleanup.KeepAllVersionsNewerThanDays,
KeepLatestVersionPerDayForDays = entityWithHistoryCleanup.HistoryCleanup.KeepLatestVersionPerDayForDays,
};
Database.InsertOrUpdate(dto);
}
}
}
}

View File

@@ -3,10 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Extensions;
namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement

View File

@@ -7,8 +7,6 @@ using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Notifications;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Services;
using Umbraco.Extensions;
namespace Umbraco.Cms.Core.Services.Implement

View File

@@ -4,11 +4,10 @@ using System.Linq;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Services;
using ContentVersionCleanupPolicySettings = Umbraco.Core.Models.ContentVersionCleanupPolicySettings;
using Umbraco.Cms.Core.Services;
using ContentVersionCleanupPolicySettings = Umbraco.Cms.Core.Models.ContentVersionCleanupPolicySettings;
namespace Umbraco.Cms.Infrastructure.Services.Implement
{

View File

@@ -1,6 +1,7 @@
using System.Diagnostics;
using System.Linq;
using NUnit.Framework;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Infrastructure.Persistence.Dtos;
using Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement;
@@ -25,8 +26,11 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Persistence.Repos
[Test]
public void GetDocumentVersionsEligibleForCleanup_Always_ExcludesActiveVersions()
{
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage");
FileService.SaveTemplate(contentType.DefaultTemplate);
Template template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);
ContentTypeService.Save(contentType);
ContentTypeService.Save(contentType);
var content = ContentBuilder.CreateSimpleContent(contentType);
@@ -53,8 +57,11 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Persistence.Repos
[Test]
public void GetDocumentVersionsEligibleForCleanup_Always_ExcludesPinnedVersions()
{
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage");
FileService.SaveTemplate(contentType.DefaultTemplate);
Template template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);
ContentTypeService.Save(contentType);
ContentTypeService.Save(contentType);
var content = ContentBuilder.CreateSimpleContent(contentType);
@@ -92,8 +99,10 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Persistence.Repos
[Test]
public void DeleteVersions_Always_DeletesSpecifiedVersions()
{
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage");
FileService.SaveTemplate(contentType.DefaultTemplate);
Template template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
var contentType = ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);
ContentTypeService.Save(contentType);
var content = ContentBuilder.CreateSimpleContent(contentType);

View File

@@ -20,6 +20,7 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Services
public IContentTypeService ContentTypeService => GetRequiredService<IContentTypeService>();
public IContentService ContentService => GetRequiredService<IContentService>();
public IContentVersionService ContentVersionService => GetRequiredService<IContentVersionService>();
/// <remarks>
/// This is covered by the unit tests, but nice to know it deletes on infra.
@@ -33,8 +34,10 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Services
// With 200K Versions
// With 11M Property data
ContentType contentTypeA = ContentTypeBuilder.CreateSimpleContentType("contentTypeA", "contentTypeA");
FileService.SaveTemplate(contentTypeA.DefaultTemplate);
Template template = TemplateBuilder.CreateTextPageTemplate();
FileService.SaveTemplate(template);
ContentType contentTypeA = ContentTypeBuilder.CreateSimpleContentType("contentTypeA", "contentTypeA", defaultTemplateId: template.Id);
ContentTypeService.Save(contentTypeA);
Content content = ContentBuilder.CreateSimpleContent(contentTypeA);
@@ -53,7 +56,7 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Infrastructure.Services
// Kill all historic
InsertCleanupPolicy(contentTypeA, 0, 0);
((IContentVersionService)ContentService).PerformContentVersionCleanup(DateTime.Now.AddHours(1));
ContentVersionService.PerformContentVersionCleanup(DateTime.Now.AddHours(1));
Report after = GetReport();

View File

@@ -19,15 +19,20 @@ namespace Umbraco.Tests.Scheduling
{
[Test, AutoMoqData]
public async Task ContentVersionCleanup_WhenNotEnabled_DoesNotCleanupWillRepeat(
[Frozen] Mock<IOptions<ContentSettings>> settings,
[Frozen] Mock<IOptionsMonitor<ContentSettings>> settings,
[Frozen] Mock<IMainDom> mainDom,
[Frozen] Mock<IServerRoleAccessor> serverRoleAccessor,
[Frozen] Mock<IRuntimeState> runtimeState,
[Frozen] Mock<IContentVersionService> cleanupService,
ContentVersionCleanup sut)
{
settings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(false);
settings.Setup(x => x.CurrentValue).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new ContentVersionCleanupPolicySettings()
{
EnableCleanup = false
}
});
runtimeState.Setup(x => x.Level).Returns(RuntimeLevel.Run);
mainDom.Setup(x => x.IsMainDom).Returns(true);
serverRoleAccessor.Setup(x => x.CurrentServerRole).Returns(ServerRole.SchedulingPublisher);
@@ -39,14 +44,20 @@ namespace Umbraco.Tests.Scheduling
[Test, AutoMoqData]
public async Task ContentVersionCleanup_RuntimeLevelNotRun_DoesNotCleanupWillRepeat(
[Frozen] Mock<IOptions<ContentSettings>> settings,
[Frozen] Mock<IOptionsMonitor<ContentSettings>> settings,
[Frozen] Mock<IMainDom> mainDom,
[Frozen] Mock<IServerRoleAccessor> serverRoleAccessor,
[Frozen] Mock<IRuntimeState> runtimeState,
[Frozen] Mock<IContentVersionService> cleanupService,
ContentVersionCleanup sut)
{
settings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
settings.Setup(x => x.CurrentValue).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new ContentVersionCleanupPolicySettings()
{
EnableCleanup = true
}
});
runtimeState.Setup(x => x.Level).Returns(RuntimeLevel.Unknown);
mainDom.Setup(x => x.IsMainDom).Returns(true);
serverRoleAccessor.Setup(x => x.CurrentServerRole).Returns(ServerRole.SchedulingPublisher);
@@ -58,14 +69,20 @@ namespace Umbraco.Tests.Scheduling
[Test, AutoMoqData]
public async Task ContentVersionCleanup_ServerRoleUnknown_DoesNotCleanupWillRepeat(
[Frozen] Mock<IOptions<ContentSettings>> settings,
[Frozen] Mock<IOptionsMonitor<ContentSettings>> settings,
[Frozen] Mock<IMainDom> mainDom,
[Frozen] Mock<IServerRoleAccessor> serverRoleAccessor,
[Frozen] Mock<IRuntimeState> runtimeState,
[Frozen] Mock<IContentVersionService> cleanupService,
ContentVersionCleanup sut)
{
settings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
settings.Setup(x => x.CurrentValue).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new ContentVersionCleanupPolicySettings()
{
EnableCleanup = true
}
});
runtimeState.Setup(x => x.Level).Returns(RuntimeLevel.Run);
mainDom.Setup(x => x.IsMainDom).Returns(true);
serverRoleAccessor.Setup(x => x.CurrentServerRole).Returns(ServerRole.Unknown);
@@ -77,14 +94,21 @@ namespace Umbraco.Tests.Scheduling
[Test, AutoMoqData]
public async Task ContentVersionCleanup_NotMainDom_DoesNotCleanupWillNotRepeat(
[Frozen] Mock<IOptions<ContentSettings>> settings,
[Frozen] Mock<IOptionsMonitor<ContentSettings>> settings,
[Frozen] Mock<IMainDom> mainDom,
[Frozen] Mock<IServerRoleAccessor> serverRoleAccessor,
[Frozen] Mock<IRuntimeState> runtimeState,
[Frozen] Mock<IContentVersionService> cleanupService,
ContentVersionCleanup sut)
{
settings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
settings.Setup(x => x.CurrentValue).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new ContentVersionCleanupPolicySettings()
{
EnableCleanup = true
}
});
runtimeState.Setup(x => x.Level).Returns(RuntimeLevel.Run);
mainDom.Setup(x => x.IsMainDom).Returns(false);
serverRoleAccessor.Setup(x => x.CurrentServerRole).Returns(ServerRole.SchedulingPublisher);
@@ -96,14 +120,21 @@ namespace Umbraco.Tests.Scheduling
[Test, AutoMoqData]
public async Task ContentVersionCleanup_Enabled_DelegatesToCleanupService(
[Frozen] Mock<IOptions<ContentSettings>> settings,
[Frozen] Mock<IOptionsMonitor<ContentSettings>> settings,
[Frozen] Mock<IMainDom> mainDom,
[Frozen] Mock<IServerRoleAccessor> serverRoleAccessor,
[Frozen] Mock<IRuntimeState> runtimeState,
[Frozen] Mock<IContentVersionService> cleanupService,
ContentVersionCleanup sut)
{
settings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
settings.Setup(x => x.CurrentValue).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new ContentVersionCleanupPolicySettings()
{
EnableCleanup = true
}
});
runtimeState.Setup(x => x.Level).Returns(RuntimeLevel.Run);
mainDom.Setup(x => x.IsMainDom).Returns(true);
serverRoleAccessor.Setup(x => x.CurrentServerRole).Returns(ServerRole.SchedulingPublisher);

View File

@@ -7,10 +7,10 @@ using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Infrastructure.Services.Implement;
using Umbraco.Cms.Tests.UnitTests.AutoFixture;
using Umbraco.Core.Persistence.Repositories;
using ContentVersionCleanupPolicySettings = Umbraco.Core.Models.ContentVersionCleanupPolicySettings;
using ContentVersionCleanupPolicySettings = Umbraco.Cms.Core.Models.ContentVersionCleanupPolicySettings;
namespace Umbraco.Tests.Services
{
@@ -31,9 +31,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: ++versionId, contentId: 1, contentTypeId: 1, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(0);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(0);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 0,
KeepLatestVersionPerDayForDays = 0
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(Array.Empty<ContentVersionCleanupPolicySettings>());
@@ -60,9 +66,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: ++versionId, contentId: 1, contentTypeId: 1, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(2);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(2);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 2,
KeepLatestVersionPerDayForDays = 2
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(Array.Empty<ContentVersionCleanupPolicySettings>());
@@ -96,9 +108,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: 9, contentId: 2, contentTypeId: 1, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(0);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(3);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 0,
KeepLatestVersionPerDayForDays = 3
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(Array.Empty<ContentVersionCleanupPolicySettings>());
@@ -134,9 +152,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: 6, contentId: 2, contentTypeId: 2, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(0);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(0);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 0,
KeepLatestVersionPerDayForDays = 0
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(new ContentVersionCleanupPolicySettings[]
@@ -169,9 +193,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: 6, contentId: 2, contentTypeId: 2, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(0);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(0);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 0,
KeepLatestVersionPerDayForDays = 0
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(new ContentVersionCleanupPolicySettings[]
@@ -204,9 +234,15 @@ namespace Umbraco.Tests.Services
new HistoricContentVersionMeta(versionId: 6, contentId: 2, contentTypeId: 2, versionDate: DateTime.Today.AddHours(-1)),
};
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.EnableCleanup).Returns(true);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepAllVersionsNewerThanDays).Returns(0);
contentSettings.Setup(x => x.Value.ContentVersionCleanupPolicy.KeepLatestVersionPerDayForDays).Returns(0);
contentSettings.Setup(x => x.Value).Returns(new ContentSettings()
{
ContentVersionCleanupPolicy = new Cms.Core.Configuration.Models.ContentVersionCleanupPolicySettings()
{
EnableCleanup = true,
KeepAllVersionsNewerThanDays = 0,
KeepLatestVersionPerDayForDays = 0
}
});
documentVersionRepository.Setup(x => x.GetCleanupPolicies())
.Returns(new ContentVersionCleanupPolicySettings[]