From 582b784ffe70ef92f8e5c2a5b4e081850857fb99 Mon Sep 17 00:00:00 2001 From: Mole Date: Tue, 6 Jun 2023 13:45:39 +0200 Subject: [PATCH] V14: Update template controllers (#14326) * Add alias to document item response * Add master template key to detailed model * Add mater template key as optiona parameter to Scaffolding * Check for duplicate alias when creating templates directly * Clean * Ensure integration tests creates templates with unique aliases * Perform mapping in presentation factory --- .../Template/ByKeyTemplateController.cs | 12 ++-- .../Item/ItemTemplateItemController.cs | 12 ++-- .../Template/ScaffoldTemplateController.cs | 11 ++-- .../Template/TemplateControllerBase.cs | 4 ++ .../TemplateBuilderExtensions.cs | 5 +- .../Factories/ITemplatePresentationFactory.cs | 9 +++ .../Factories/TemplatePresentationFactory.cs | 39 ++++++++++++ .../Mapping/Items/ItemTypeMapDefinition.cs | 5 +- .../TemplateViewModelMapDefinition.cs | 10 --- .../Item/TemplateItemResponseModel.cs | 1 + .../Template/TemplateResponseModel.cs | 2 + src/Umbraco.Core/Services/ITemplateService.cs | 15 ++++- .../TemplateOperationStatus.cs | 1 + src/Umbraco.Core/Services/TemplateService.cs | 63 +++++++++++++++++-- .../Controllers/TemplateController.cs | 16 ++--- .../UmbracoIntegrationTestWithContent.cs | 2 +- .../Packaging/PackageDataInstallationTests.cs | 2 +- .../Repositories/DocumentRepositoryTest.cs | 2 +- .../Services/ContentServicePerformanceTest.cs | 2 +- .../Services/EntityServiceTests.cs | 2 +- 20 files changed, 168 insertions(+), 47 deletions(-) create mode 100644 src/Umbraco.Cms.Api.Management/Factories/ITemplatePresentationFactory.cs create mode 100644 src/Umbraco.Cms.Api.Management/Factories/TemplatePresentationFactory.cs diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/ByKeyTemplateController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/ByKeyTemplateController.cs index b0334fd051..a27aaefe88 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/ByKeyTemplateController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/ByKeyTemplateController.cs @@ -1,8 +1,8 @@ using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Api.Management.Factories; using Umbraco.Cms.Api.Management.ViewModels.Template; -using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; @@ -12,12 +12,14 @@ namespace Umbraco.Cms.Api.Management.Controllers.Template; public class ByKeyTemplateController : TemplateControllerBase { private readonly ITemplateService _templateService; - private readonly IUmbracoMapper _umbracoMapper; + private readonly ITemplatePresentationFactory _templatePresentationFactory; - public ByKeyTemplateController(ITemplateService templateService, IUmbracoMapper umbracoMapper) + public ByKeyTemplateController( + ITemplateService templateService, + ITemplatePresentationFactory templatePresentationFactory) { _templateService = templateService; - _umbracoMapper = umbracoMapper; + _templatePresentationFactory = templatePresentationFactory; } [HttpGet("{id:guid}")] @@ -29,6 +31,6 @@ public class ByKeyTemplateController : TemplateControllerBase ITemplate? template = await _templateService.GetAsync(id); return template == null ? NotFound() - : Ok(_umbracoMapper.Map(template)); + : Ok(await _templatePresentationFactory.CreateTemplateResponseModelAsync(template)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/Item/ItemTemplateItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/Item/ItemTemplateItemController.cs index e6abca829f..8eeb9f6229 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/Item/ItemTemplateItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/Item/ItemTemplateItemController.cs @@ -12,13 +12,13 @@ namespace Umbraco.Cms.Api.Management.Controllers.Template.Item; [ApiVersion("1.0")] public class ItemTemplateItemController : TemplateItemControllerBase { - private readonly IEntityService _entityService; private readonly IUmbracoMapper _mapper; + private readonly ITemplateService _templateService; - public ItemTemplateItemController(IEntityService entityService, IUmbracoMapper mapper) + public ItemTemplateItemController(IUmbracoMapper mapper, ITemplateService templateService) { - _entityService = entityService; _mapper = mapper; + _templateService = templateService; } [HttpGet("item")] @@ -26,8 +26,10 @@ public class ItemTemplateItemController : TemplateItemControllerBase [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] public async Task Item([FromQuery(Name = "id")] SortedSet ids) { - IEnumerable templates = _entityService.GetAll(UmbracoObjectTypes.Template, ids.ToArray()); - List responseModels = _mapper.MapEnumerable(templates); + // This is far from ideal, that we pick out the entire model, however, we must do this to get the alias. + // This is (for one) needed for when specifying master template, since alias + .cshtml + IEnumerable templates = await _templateService.GetAllAsync(ids.ToArray()); + List responseModels = _mapper.MapEnumerable(templates); return Ok(responseModels); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/ScaffoldTemplateController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/ScaffoldTemplateController.cs index 1c4aa1db7d..2b74089242 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/ScaffoldTemplateController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/ScaffoldTemplateController.cs @@ -3,26 +3,27 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.Template; using Umbraco.Cms.Core.IO; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; namespace Umbraco.Cms.Api.Management.Controllers.Template; [ApiVersion("1.0")] public class ScaffoldTemplateController : TemplateControllerBase { - private readonly IDefaultViewContentProvider _defaultViewContentProvider; + private readonly ITemplateService _templateService; - public ScaffoldTemplateController(IDefaultViewContentProvider defaultViewContentProvider) - => _defaultViewContentProvider = defaultViewContentProvider; + public ScaffoldTemplateController(ITemplateService templateService) => _templateService = templateService; [HttpGet("scaffold")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(TemplateScaffoldResponseModel), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task> Scaffold() + public async Task> Scaffold([FromQuery(Name = "masterTemplateId")] Guid? masterTemplateId) { var scaffoldViewModel = new TemplateScaffoldResponseModel { - Content = _defaultViewContentProvider.GetDefaultFileContent() + Content = await _templateService.GetScaffoldAsync(masterTemplateId), }; return await Task.FromResult(Ok(scaffoldViewModel)); diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/TemplateControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/TemplateControllerBase.cs index d99aa3f94a..0929f0c2e1 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/TemplateControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/TemplateControllerBase.cs @@ -25,6 +25,10 @@ public class TemplateControllerBase : ManagementApiControllerBase .WithTitle("Cancelled by notification") .WithDetail("A notification handler prevented the template operation.") .Build()), + TemplateOperationStatus.DuplicateAlias => BadRequest(new ProblemDetailsBuilder() + .WithTitle("Duplicate alias") + .WithDetail("A template with that alias already exists.") + .Build()), _ => StatusCode(StatusCodes.Status500InternalServerError, "Unknown template operation status") }; } diff --git a/src/Umbraco.Cms.Api.Management/DependencyInjection/TemplateBuilderExtensions.cs b/src/Umbraco.Cms.Api.Management/DependencyInjection/TemplateBuilderExtensions.cs index c662b2f509..6e36aef847 100644 --- a/src/Umbraco.Cms.Api.Management/DependencyInjection/TemplateBuilderExtensions.cs +++ b/src/Umbraco.Cms.Api.Management/DependencyInjection/TemplateBuilderExtensions.cs @@ -1,4 +1,6 @@ -using Umbraco.Cms.Core.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Api.Management.Factories; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Api.Management.Mapping.Template; using Umbraco.Cms.Core.Mapping; @@ -9,6 +11,7 @@ internal static class TemplateBuilderExtensions internal static IUmbracoBuilder AddTemplates(this IUmbracoBuilder builder) { builder.WithCollectionBuilder().Add(); + builder.Services.AddTransient(); return builder; } diff --git a/src/Umbraco.Cms.Api.Management/Factories/ITemplatePresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/ITemplatePresentationFactory.cs new file mode 100644 index 0000000000..b7827e4913 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/Factories/ITemplatePresentationFactory.cs @@ -0,0 +1,9 @@ +using Umbraco.Cms.Api.Management.ViewModels.Template; +using Umbraco.Cms.Core.Models; + +namespace Umbraco.Cms.Api.Management.Factories; + +public interface ITemplatePresentationFactory +{ + Task CreateTemplateResponseModelAsync(ITemplate template); +} diff --git a/src/Umbraco.Cms.Api.Management/Factories/TemplatePresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/TemplatePresentationFactory.cs new file mode 100644 index 0000000000..7570774cea --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/Factories/TemplatePresentationFactory.cs @@ -0,0 +1,39 @@ +using Umbraco.Cms.Api.Management.ViewModels.Template; +using Umbraco.Cms.Core.Mapping; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace Umbraco.Cms.Api.Management.Factories; + +public class TemplatePresentationFactory : ITemplatePresentationFactory +{ + private readonly ITemplateService _templateService; + private readonly IUmbracoMapper _mapper; + + public TemplatePresentationFactory( + ITemplateService templateService, + IUmbracoMapper mapper) + { + _templateService = templateService; + _mapper = mapper; + } + + public async Task CreateTemplateResponseModelAsync(ITemplate template) + { + TemplateResponseModel responseModel = new() + { + Id = template.Key, + Name = template.Name ?? string.Empty, + Alias = template.Alias, + Content = template.Content + }; + + if (template.MasterTemplateAlias is not null) + { + ITemplate? parentTemplate = await _templateService.GetAsync(template.MasterTemplateAlias); + responseModel.MasterTemplateId = parentTemplate?.Key; + } + + return responseModel; + } +} diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Items/ItemTypeMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Items/ItemTypeMapDefinition.cs index 197ef7ca4f..24f1ca70ff 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Items/ItemTypeMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Items/ItemTypeMapDefinition.cs @@ -28,7 +28,7 @@ public class ItemTypeMapDefinition : IMapDefinition mapper.Define((_, _) => new DocumentTypeItemResponseModel(), Map); mapper.Define((_, _) => new MediaTypeItemResponseModel(), Map); mapper.Define((_, _) => new MemberGroupItemReponseModel(), Map); - mapper.Define((_, _) => new TemplateItemResponseModel(), Map); + mapper.Define((_, _) => new TemplateItemResponseModel { Alias = string.Empty }, Map); mapper.Define((_, _) => new MemberTypeItemResponseModel(), Map); mapper.Define((_, _) => new RelationTypeItemResponseModel(), Map); mapper.Define((_, _) => new MediaItemResponseModel(), Map); @@ -84,10 +84,11 @@ public class ItemTypeMapDefinition : IMapDefinition } // Umbraco.Code.MapAll - private static void Map(IEntitySlim source, TemplateItemResponseModel target, MapperContext context) + private static void Map(ITemplate source, TemplateItemResponseModel target, MapperContext context) { target.Name = source.Name ?? string.Empty; target.Id = source.Key; + target.Alias = source.Alias; } // Umbraco.Code.MapAll diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Template/TemplateViewModelMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Template/TemplateViewModelMapDefinition.cs index 2cf9680ca1..17d208b37a 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/Template/TemplateViewModelMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/Template/TemplateViewModelMapDefinition.cs @@ -14,19 +14,9 @@ public class TemplateViewModelMapDefinition : IMapDefinition public void DefineMaps(IUmbracoMapper mapper) { - mapper.Define((_, _) => new TemplateResponseModel(), Map); mapper.Define((source, _) => new Core.Models.Template(_shortStringHelper, source.Name, source.Alias), Map); } - // Umbraco.Code.MapAll - private void Map(ITemplate source, TemplateResponseModel target, MapperContext context) - { - target.Id = source.Key; - target.Name = source.Name ?? string.Empty; - target.Alias = source.Alias; - target.Content = source.Content; - } - // Umbraco.Code.MapAll -Id -Key -CreateDate -UpdateDate -DeleteDate // Umbraco.Code.MapAll -Path -VirtualPath -MasterTemplateId -IsMasterTemplate private void Map(UpdateTemplateRequestModel source, ITemplate target, MapperContext context) diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Template/Item/TemplateItemResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Template/Item/TemplateItemResponseModel.cs index e7d65f49d6..0d75a20c1a 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Template/Item/TemplateItemResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Template/Item/TemplateItemResponseModel.cs @@ -4,4 +4,5 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Template.Item; public class TemplateItemResponseModel : ItemResponseModelBase { + public required string Alias { get; set; } } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Template/TemplateResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Template/TemplateResponseModel.cs index 95c23c63d3..b192df5551 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Template/TemplateResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Template/TemplateResponseModel.cs @@ -3,4 +3,6 @@ public class TemplateResponseModel : TemplateModelBase, INamedEntityPresentationModel { public Guid Id { get; set; } + + public Guid? MasterTemplateId { get; set; } } diff --git a/src/Umbraco.Core/Services/ITemplateService.cs b/src/Umbraco.Core/Services/ITemplateService.cs index 00371bada6..8d1fa669de 100644 --- a/src/Umbraco.Core/Services/ITemplateService.cs +++ b/src/Umbraco.Core/Services/ITemplateService.cs @@ -8,9 +8,15 @@ public interface ITemplateService : IService /// /// Gets a list of all objects /// - /// An enumerable list of objects + /// An enumerable list of . Task> GetAllAsync(params string[] aliases); + /// + /// Gets a list of all objects + /// + /// An enumerable list of . + Task> GetAllAsync(Guid[] keys); + /// /// Gets a list of all objects /// @@ -38,6 +44,13 @@ public interface ITemplateService : IService /// The object matching the identifier, or null. Task GetAsync(Guid id); + /// + /// Gets the scaffold code for a template. + /// + /// + /// + Task GetScaffoldAsync(Guid? masterTemplateKey); + /// /// Gets the template descendants /// diff --git a/src/Umbraco.Core/Services/OperationStatus/TemplateOperationStatus.cs b/src/Umbraco.Core/Services/OperationStatus/TemplateOperationStatus.cs index 88811e2e44..0eede51b77 100644 --- a/src/Umbraco.Core/Services/OperationStatus/TemplateOperationStatus.cs +++ b/src/Umbraco.Core/Services/OperationStatus/TemplateOperationStatus.cs @@ -5,6 +5,7 @@ public enum TemplateOperationStatus Success, CancelledByNotification, InvalidAlias, + DuplicateAlias, TemplateNotFound, MasterTemplateNotFound } diff --git a/src/Umbraco.Core/Services/TemplateService.cs b/src/Umbraco.Core/Services/TemplateService.cs index 458776ed3e..9f6de5557c 100644 --- a/src/Umbraco.Core/Services/TemplateService.cs +++ b/src/Umbraco.Core/Services/TemplateService.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Core.Persistence.Querying; @@ -18,6 +19,7 @@ public class TemplateService : RepositoryService, ITemplateService private readonly IAuditRepository _auditRepository; private readonly ITemplateContentParserService _templateContentParserService; private readonly IUserIdKeyResolver _userIdKeyResolver; + private readonly IDefaultViewContentProvider _defaultViewContentProvider; public TemplateService( ICoreScopeProvider provider, @@ -27,7 +29,8 @@ public class TemplateService : RepositoryService, ITemplateService ITemplateRepository templateRepository, IAuditRepository auditRepository, ITemplateContentParserService templateContentParserService, - IUserIdKeyResolver userIdKeyResolver) + IUserIdKeyResolver userIdKeyResolver, + IDefaultViewContentProvider defaultViewContentProvider) : base(provider, loggerFactory, eventMessagesFactory) { _shortStringHelper = shortStringHelper; @@ -35,6 +38,7 @@ public class TemplateService : RepositoryService, ITemplateService _auditRepository = auditRepository; _templateContentParserService = templateContentParserService; _userIdKeyResolver = userIdKeyResolver; + _defaultViewContentProvider = defaultViewContentProvider; } /// @@ -100,7 +104,7 @@ public class TemplateService : RepositoryService, ITemplateService { // file might already be on disk, if so grab the content to avoid overwriting template.Content = GetViewContent(template.Alias) ?? template.Content; - return await SaveAsync(template, AuditType.New, userKey); + return await SaveAsync(template, AuditType.New, userKey, () => ValidateCreate(template)); } catch (PathTooLongException ex) { @@ -109,6 +113,17 @@ public class TemplateService : RepositoryService, ITemplateService } } + private TemplateOperationStatus ValidateCreate(ITemplate templateToCreate) + { + ITemplate? existingTemplate = GetAsync(templateToCreate.Alias).GetAwaiter().GetResult(); + if (existingTemplate is not null) + { + return TemplateOperationStatus.DuplicateAlias; + } + + return TemplateOperationStatus.Success; + } + /// public async Task> GetAllAsync(params string[] aliases) { @@ -118,6 +133,17 @@ public class TemplateService : RepositoryService, ITemplateService } } + /// + public Task> GetAllAsync(params Guid[] keys) + { + using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); + + IQuery query = Query().Where(x => keys.Contains(x.Key)); + IEnumerable templates = _templateRepository.Get(query).OrderBy(x => x.Name); + + return Task.FromResult(templates); + } + /// public async Task> GetChildrenAsync(int masterTemplateId) { @@ -155,6 +181,19 @@ public class TemplateService : RepositoryService, ITemplateService } } + /// + public async Task GetScaffoldAsync(Guid? masterTemplateKey) + { + string? masterAlias = null; + if (masterTemplateKey is not null) + { + ITemplate? masterTemplate = await GetAsync(masterTemplateKey.Value); + masterAlias = masterTemplate?.Alias; + } + + return _defaultViewContentProvider.GetDefaultFileContent(masterAlias); + } + /// public async Task> GetDescendantsAsync(int masterTemplateId) { @@ -171,9 +210,23 @@ public class TemplateService : RepositoryService, ITemplateService AuditType.Save, userKey, // fail the attempt if the template does not exist within the scope - () => _templateRepository.Exists(template.Id) - ? TemplateOperationStatus.Success - : TemplateOperationStatus.TemplateNotFound); + () => ValidateUpdate(template)); + + private TemplateOperationStatus ValidateUpdate(ITemplate templateToUpdate) + { + ITemplate? existingTemplate = GetAsync(templateToUpdate.Alias).GetAwaiter().GetResult(); + if (existingTemplate is not null && existingTemplate.Key != templateToUpdate.Key) + { + return TemplateOperationStatus.DuplicateAlias; + } + + if (_templateRepository.Exists(templateToUpdate.Id) is false) + { + return TemplateOperationStatus.TemplateNotFound; + } + + return TemplateOperationStatus.Success; + } private async Task> SaveAsync(ITemplate template, AuditType auditType, Guid userKey, Func? scopeValidator = null) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/TemplateController.cs b/src/Umbraco.Web.BackOffice/Controllers/TemplateController.cs index 1c00e535bf..5e5a5a5c3f 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/TemplateController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/TemplateController.cs @@ -41,14 +41,14 @@ public class TemplateController : BackOfficeNotificationsController throw new ArgumentNullException(nameof(defaultViewContentProvider)); } - /// - /// Gets data type by alias - /// - /// - /// - public TemplateDisplay? GetByAlias(string alias) - { - ITemplate? template = _templateService.GetAsync(alias).GetAwaiter().GetResult(); + /// + /// Gets data type by alias + /// + /// + /// + public TemplateDisplay? GetByAlias(string alias) + { + ITemplate? template = _templateService.GetAsync(alias).GetAwaiter().GetResult(); return template == null ? null : _umbracoMapper.Map(template); } diff --git a/tests/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs b/tests/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs index 274f93125c..5f773e1ce0 100644 --- a/tests/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs +++ b/tests/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTestWithContent.cs @@ -34,7 +34,7 @@ public abstract class UmbracoIntegrationTestWithContent : UmbracoIntegrationTest public virtual void CreateTestData() { // NOTE Maybe not the best way to create/save test data as we are using the services, which are being tested. - var template = TemplateBuilder.CreateTextPageTemplate(); + var template = TemplateBuilder.CreateTextPageTemplate("defaultTemplate"); FileService.SaveTemplate(template); // Create and Save ContentType "umbTextpage" -> 1051 (template), 1052 (content type) diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Packaging/PackageDataInstallationTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Packaging/PackageDataInstallationTests.cs index d69edc5406..e3f605f057 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Packaging/PackageDataInstallationTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Packaging/PackageDataInstallationTests.cs @@ -547,7 +547,7 @@ public class PackageDataInstallationTests : UmbracoIntegrationTestWithContent var fileService = FileService; // kill default test data - fileService.DeleteTemplate("Textpage"); + fileService.DeleteTemplate("defaultTemplate"); // Act var numberOfTemplates = (from doc in templateElement.Elements("Template") select doc).Count(); diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs index 51a1a92376..2df2a7d68f 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DocumentRepositoryTest.cs @@ -64,7 +64,7 @@ public class DocumentRepositoryTest : UmbracoIntegrationTest public void CreateTestData() { - var template = TemplateBuilder.CreateTextPageTemplate(); + var template = TemplateBuilder.CreateTextPageTemplate("defaultTemplate"); FileService.SaveTemplate(template); // Create and Save ContentType "umbTextpage" -> (_contentType.Id) diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs index b44b993625..d603ce7212 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/ContentServicePerformanceTest.cs @@ -262,7 +262,7 @@ public class ContentServicePerformanceTest : UmbracoIntegrationTest public void CreateTestData() { - var template = TemplateBuilder.CreateTextPageTemplate(); + var template = TemplateBuilder.CreateTextPageTemplate("defaultTemplate"); FileService.SaveTemplate(template); // Create and Save ContentType "textpage" -> ContentType.Id diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/EntityServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/EntityServiceTests.cs index f949d5a923..7424a97001 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/EntityServiceTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/EntityServiceTests.cs @@ -886,7 +886,7 @@ public class EntityServiceTests : UmbracoIntegrationTest { s_isSetup = true; - var template = TemplateBuilder.CreateTextPageTemplate(); + var template = TemplateBuilder.CreateTextPageTemplate("defaultTemplate"); FileService.SaveTemplate(template); // else, FK violation on contentType! // Create and Save ContentType "umbTextpage" -> _contentType.Id