Cleanup and fixed tests
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Umbraco.Core.Models
|
||||
namespace Umbraco.Cms.Core.Models
|
||||
{
|
||||
public class ContentVersionCleanupPolicySettings
|
||||
{
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Cms.Core.Services
|
||||
{
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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[]
|
||||
|
||||
Reference in New Issue
Block a user