From 674c48ab9a7e7bbd479b2c8baff4fefeddb7965a Mon Sep 17 00:00:00 2001 From: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Date: Tue, 2 Jan 2024 08:57:07 +0100 Subject: [PATCH] V14: Add optional key to template create model (#15471) * Implement Id for request model * Make key optional * Add test for use case --------- Co-authored-by: Elitsa --- .../Template/CreateTemplateController.cs | 3 ++- .../Template/CreateTemplateRequestModel.cs | 1 + src/Umbraco.Core/Services/ITemplateService.cs | 3 ++- src/Umbraco.Core/Services/TemplateService.cs | 5 +++-- .../Services/TemplateServiceTests.cs | 17 +++++++++++++++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/CreateTemplateController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/CreateTemplateController.cs index 40c1a0ebfd..f41188fee7 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/CreateTemplateController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/CreateTemplateController.cs @@ -35,7 +35,8 @@ public class CreateTemplateController : TemplateControllerBase requestModel.Name, requestModel.Alias, requestModel.Content, - CurrentUserKey(_backOfficeSecurityAccessor)); + CurrentUserKey(_backOfficeSecurityAccessor), + requestModel.Key); return result.Success ? CreatedAtAction(controller => nameof(controller.ByKey), result.Result.Key) diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Template/CreateTemplateRequestModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Template/CreateTemplateRequestModel.cs index f3b13c9e3c..cf02fc2860 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Template/CreateTemplateRequestModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Template/CreateTemplateRequestModel.cs @@ -2,4 +2,5 @@ public class CreateTemplateRequestModel : TemplateModelBase { + public Guid? Key { get; set; } } diff --git a/src/Umbraco.Core/Services/ITemplateService.cs b/src/Umbraco.Core/Services/ITemplateService.cs index 8d1fa669de..f4dfd60f90 100644 --- a/src/Umbraco.Core/Services/ITemplateService.cs +++ b/src/Umbraco.Core/Services/ITemplateService.cs @@ -83,12 +83,13 @@ public interface ITemplateService : IService /// /// Creates a new template /// + /// /// Name of the new template /// Alias of the template /// View content for the new template /// Key of the user performing the Create. /// - Task> CreateAsync(string name, string alias, string? content, Guid userKey); + Task> CreateAsync(string name, string alias, string? content, Guid userKey, Guid? templateKey = null); /// /// Creates a new template diff --git a/src/Umbraco.Core/Services/TemplateService.cs b/src/Umbraco.Core/Services/TemplateService.cs index 9f6de5557c..4b4f4b05e9 100644 --- a/src/Umbraco.Core/Services/TemplateService.cs +++ b/src/Umbraco.Core/Services/TemplateService.cs @@ -94,8 +94,9 @@ public class TemplateService : RepositoryService, ITemplateService string name, string alias, string? content, - Guid userKey) - => await CreateAsync(new Template(_shortStringHelper, name, alias) { Content = content }, userKey); + Guid userKey, + Guid? templateKey = null) + => await CreateAsync(new Template(_shortStringHelper, name, alias) { Content = content, Key = templateKey ?? Guid.NewGuid() }, userKey); /// public async Task> CreateAsync(ITemplate template, Guid userKey) diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/TemplateServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/TemplateServiceTests.cs index ed2abf5df4..2c8e588b9c 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/TemplateServiceTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/TemplateServiceTests.cs @@ -276,4 +276,21 @@ public class TemplateServiceTests : UmbracoIntegrationTest Assert.IsFalse(result.Success); Assert.AreEqual(TemplateOperationStatus.InvalidAlias, result.Status); } + + [Test] + public async Task Can_Create_Template_With_Key() + { + var key = Guid.NewGuid(); + var result = await TemplateService.CreateAsync("Template", "template", "test", Constants.Security.SuperUserKey, key); + Assert.IsTrue(result.Success); + + var template = await TemplateService.GetAsync(key); + + Assert.Multiple(() => + { + Assert.IsNotNull(template); + Assert.AreEqual(key, template.Key); + }); + + } }