From ccc68c7609ec54a3da6e47053be78ff92e35ce80 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Wed, 6 Aug 2025 12:01:06 +0530 Subject: [PATCH 01/11] Ensure culture-invariant date formatting for explicit formats and set test cultures - Updated DateTagHelper to use CultureInfo.InvariantCulture when DateFormat is specified and no explicit Culture is set, ensuring consistent date output regardless of system locale. - Explicitly set culture to en-US in RichTextFieldTagHelperFixture and other relevant integration test fixtures to make test expectations stable and independent of the developer's environment. - Updated test assertions to use the correct culture where appropriate. - Resolves test failures related to date formatting when running tests under non-US locales (e.g., da-DK). --- .../TagHelpers/Fields/DateTagHelper.cs | 2 +- .../Fixtures/Binding/ViewFieldsBindingFixture.cs | 11 ++++++++++- .../Fixtures/TagHelpers/DateFieldTagHelperFixture.cs | 10 +++++++++- .../TagHelpers/RichTextFieldTagHelperFixture.cs | 11 ++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index a0ef61a..8dc7321 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,7 +67,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, culture) : field.Value.ToString(culture); + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs index 8f8f7ef..82d57f2 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs @@ -1,6 +1,8 @@ -using System.Net; +using System.Globalization; +using System.Net; using FluentAssertions; using HtmlAgilityPack; +using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -37,6 +39,13 @@ public ViewFieldsBindingFixture() .Configure(app => { app.UseRouting(); + app.UseRequestLocalization(options => + { + var culture = new CultureInfo("en-US"); + options.DefaultRequestCulture = new RequestCulture(culture); + options.SupportedCultures = [culture]; + options.SupportedUICultures = [culture]; + }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs index 60f4aa3..0b5513d 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs @@ -2,6 +2,7 @@ using System.Net; using FluentAssertions; using HtmlAgilityPack; +using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -38,6 +39,13 @@ public DateFieldTagHelperFixture() .Configure(app => { app.UseRouting(); + app.UseRequestLocalization(options => + { + var culture = new CultureInfo("da-DK"); + options.DefaultRequestCulture = new RequestCulture(culture); + options.SupportedCultures = [culture]; + options.SupportedUICultures = [culture]; + }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { @@ -95,7 +103,7 @@ public async Task DateTagHelper_GeneratesProperDate() // Assert sectionNode.ChildNodes[1].InnerHtml.Should().Be("05/04/2012"); sectionNode.ChildNodes[3].InnerHtml.Should().Be("05/04/2012 00:00:00"); - sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(CultureInfo.CurrentCulture)); + sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("da-DK"))); sectionNode.ChildNodes[9].InnerHtml.Should().Contain("04.05.2012"); } diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs index 23e1ef2..42625cc 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs @@ -1,7 +1,9 @@ -using System.Net; +using System.Globalization; +using System.Net; using System.Text.Encodings.Web; using FluentAssertions; using HtmlAgilityPack; +using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -39,6 +41,13 @@ public RichTextFieldTagHelperFixture() .Configure(app => { app.UseRouting(); + app.UseRequestLocalization(options => + { + var culture = new CultureInfo("en-US"); + options.DefaultRequestCulture = new RequestCulture(culture); + options.SupportedCultures = [culture]; + options.SupportedUICultures = [culture]; + }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { From 979e5889d22bbfc6c017ae2621bc24e271e51aaf Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Mon, 11 Aug 2025 09:54:19 +0530 Subject: [PATCH 02/11] Changes on copilot review - use en-US culture for test in DateFieldTagHelperFixture.cs, extracting the culture selection logic into a separate variable for better readability in DateTagHelper.cs --- .../TagHelpers/Fields/DateTagHelper.cs | 4 +++- .../Fixtures/TagHelpers/DateFieldTagHelperFixture.cs | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 8dc7321..4ce5c93 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,7 +67,9 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) : field.Value.ToString(culture); + CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; + + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, formatCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs index 0b5513d..8f2a2ff 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs @@ -41,7 +41,7 @@ public DateFieldTagHelperFixture() app.UseRouting(); app.UseRequestLocalization(options => { - var culture = new CultureInfo("da-DK"); + var culture = new CultureInfo("en-US"); options.DefaultRequestCulture = new RequestCulture(culture); options.SupportedCultures = [culture]; options.SupportedUICultures = [culture]; @@ -103,7 +103,7 @@ public async Task DateTagHelper_GeneratesProperDate() // Assert sectionNode.ChildNodes[1].InnerHtml.Should().Be("05/04/2012"); sectionNode.ChildNodes[3].InnerHtml.Should().Be("05/04/2012 00:00:00"); - sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("da-DK"))); + sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("en-US"))); sectionNode.ChildNodes[9].InnerHtml.Should().Contain("04.05.2012"); } From 30986a284e59f05fe97faef2bc95f3dda72b14ff Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Mon, 11 Aug 2025 17:02:07 +0530 Subject: [PATCH 03/11] Move the formatCulture - formattedDate logic inside the ternary operator --- .../TagHelpers/Fields/DateTagHelper.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 4ce5c93..0883755 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,9 +67,9 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; - - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, formatCulture) : field.Value.ToString(culture); + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) + ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) + : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); From debfcdef43edad7bea571981d891e831434b8991 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Mon, 11 Aug 2025 17:14:47 +0530 Subject: [PATCH 04/11] Refactor culture selection logic with formatCulture --- .../TagHelpers/Fields/DateTagHelper.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 0883755..8e42e5b 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,8 +67,10 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; + CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) - ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) + ? field.Value.ToString(DateFormat, formatCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); From c1b531f24beb97cc13c84f2c4ca912d57dfee789 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Wed, 13 Aug 2025 14:15:07 +0530 Subject: [PATCH 05/11] fix: Update date formatting tests to handle culture-specific formats - Convert DateTagHelper unit tests to use InlineData pattern with multiple cultures --- .../Binding/ViewFieldsBindingFixture.cs | 6 +- .../TagHelpers/AllFieldTagHelpersFixture.cs | 2 +- .../TagHelpers/DateFieldTagHelperFixture.cs | 4 +- .../RichTextFieldTagHelperFixture.cs | 6 +- .../TagHelpers/Fields/DateTagHelperFixture.cs | 102 +++++++++++++----- 5 files changed, 85 insertions(+), 35 deletions(-) diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs index 8f8f7ef..532c7fe 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs @@ -1,4 +1,5 @@ -using System.Net; +using System.Globalization; +using System.Net; using FluentAssertions; using HtmlAgilityPack; using Microsoft.AspNetCore.TestHost; @@ -75,7 +76,8 @@ public async Task SitecoreLayoutModelBinders_BindDataCorrectly() sectionNode.ChildNodes.First(n => n.Name.Equals("p", StringComparison.OrdinalIgnoreCase)).InnerText .Should().BeEmpty(); - sectionNode.ChildNodes.First(n => n.Name.Equals("textarea", StringComparison.OrdinalIgnoreCase)).InnerText.Should().Contain("12/12/2019"); + DateTime expectedDate = DateTime.Parse("12.12.19", CultureInfo.InvariantCulture); + sectionNode.ChildNodes.First(n => n.Name.Equals("textarea", StringComparison.OrdinalIgnoreCase)).InnerText.Should().Contain(expectedDate.ToString("MM/dd/yyyy", CultureInfo.CurrentCulture)); sectionNode.ChildNodes.First(n => n.Name.Equals("span", StringComparison.OrdinalIgnoreCase)).InnerHtml .Should().Be(TestConstants.TestMultilineFieldValue.Replace(Environment.NewLine, "
", StringComparison.OrdinalIgnoreCase)); diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/AllFieldTagHelpersFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/AllFieldTagHelpersFixture.cs index bf853cb..7152897 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/AllFieldTagHelpersFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/AllFieldTagHelpersFixture.cs @@ -82,7 +82,7 @@ public async Task ComponentWithAllFieldTypes_RendersFieldsCorrectly() sectionNode.ChildNodes.First(n => n.Name.Equals("div", StringComparison.OrdinalIgnoreCase) && n.Id.Equals("div5", StringComparison.OrdinalIgnoreCase)).InnerHtml .Should().Be(TestConstants.AllFieldsImageValue); sectionNode.ChildNodes.First(n => n.Name.Equals("div", StringComparison.OrdinalIgnoreCase) && n.Id.Equals("div6", StringComparison.OrdinalIgnoreCase)).InnerHtml - .Should().Be(TestConstants.DateFieldValue); + .Should().Be(TestConstants.DateTimeValue.ToString("MM/dd/yyyy", CultureInfo.CurrentCulture)); sectionNode.ChildNodes.First(n => n.Name.Equals("div", StringComparison.OrdinalIgnoreCase) && n.Id.Equals("div7", StringComparison.OrdinalIgnoreCase)).InnerHtml .Should().Be(TestConstants.MediaLibraryItemImageFieldValue); sectionNode.ChildNodes.First(n => n.Name.Equals("div", StringComparison.OrdinalIgnoreCase) && n.Id.Equals("div8", StringComparison.OrdinalIgnoreCase)).InnerHtml diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs index 60f4aa3..c6ec161 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs @@ -93,8 +93,8 @@ public async Task DateTagHelper_GeneratesProperDate() HtmlNode? sectionNode = doc.DocumentNode.ChildNodes.First(n => n.HasClass("component-with-dates")); // Assert - sectionNode.ChildNodes[1].InnerHtml.Should().Be("05/04/2012"); - sectionNode.ChildNodes[3].InnerHtml.Should().Be("05/04/2012 00:00:00"); + sectionNode.ChildNodes[1].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString("MM/dd/yyyy", CultureInfo.CurrentCulture)); + sectionNode.ChildNodes[3].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString("MM/dd/yyyy HH:mm:ss", CultureInfo.CurrentCulture)); sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(CultureInfo.CurrentCulture)); sectionNode.ChildNodes[9].InnerHtml.Should().Contain("04.05.2012"); } diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs index 23e1ef2..b6ff80f 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs @@ -1,4 +1,5 @@ -using System.Net; +using System.Globalization; +using System.Net; using System.Text.Encodings.Web; using FluentAssertions; using HtmlAgilityPack; @@ -70,7 +71,8 @@ public async Task RichTextFieldTagHelper_DoesNotResetOtherTagHelperOutput() // Assert // check scenario that RichTextTagHelper does not reset values of another helpers. - sectionNode.ChildNodes.First(n => n.Name.Equals("textarea", StringComparison.OrdinalIgnoreCase)).InnerText.Should().Contain("12/12/2019"); + DateTime expectedDate = DateTime.Parse("12.12.19", CultureInfo.InvariantCulture); + sectionNode.ChildNodes.First(n => n.Name.Equals("textarea", StringComparison.OrdinalIgnoreCase)).InnerText.Should().Contain(expectedDate.ToString("MM/dd/yyyy", CultureInfo.CurrentCulture)); } [Fact] diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs index 1ba472b..0515b21 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs @@ -123,23 +123,46 @@ public void Process_ScDateTagWithEmptyValueInForAttribute_GeneratesEmptyOutput( } [Theory] - [AutoNSubstituteData] - public void Process_ScDateTagWithCustomFormat_GeneratesCustomDateFormatOutput( - DateTagHelper sut, - TagHelperContext tagHelperContext, - TagHelperOutput tagHelperOutput) + [InlineData("en-US")] + [InlineData("da-DK")] + [InlineData("uk-UA")] + public void Process_ScDateTagWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) { // Arrange - const string dateFormat = "MM/dd/yyyy H:mm"; - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; - sut.DateFormat = dateFormat; - sut.For = GetModelExpression(new DateField(_date)); + CultureInfo originalCulture = CultureInfo.CurrentCulture; + CultureInfo originalUiCulture = CultureInfo.CurrentUICulture; + CultureInfo testCulture = new CultureInfo(cultureName); - // Act - sut.Process(tagHelperContext, tagHelperOutput); - - // Assert - tagHelperOutput.Content.GetContent().Should().Be(_date.ToString(dateFormat, CultureInfo.InvariantCulture)); + try + { + CultureInfo.CurrentCulture = testCulture; + CultureInfo.CurrentUICulture = testCulture; + + const string dateFormat = "MM/dd/yyyy H:mm"; + DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); + TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); + TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => + { + DefaultTagHelperContent tagHelperContent = new(); + return Task.FromResult(tagHelperContent); + }); + + tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; + sut.DateFormat = dateFormat; + sut.For = GetModelExpression(new DateField(_date)); + + // Act + sut.Process(tagHelperContext, tagHelperOutput); + + // Assert - Expect culture-specific formatting based on current culture + string expected = _date.ToString(dateFormat, testCulture); + tagHelperOutput.Content.GetContent().Should().Be(expected); + } + finally + { + CultureInfo.CurrentCulture = originalCulture; + CultureInfo.CurrentUICulture = originalUiCulture; + } } [Theory] @@ -258,23 +281,46 @@ public void Process_ScDateTagWithAspDataAttributeWithEmptyValueInForAttribute_Ge } [Theory] - [AutoNSubstituteData] - public void Process_ScDateTagWithAspDataAttributeWithCustomFormat_GeneratesCustomDateFormatOutput( - DateTagHelper sut, - TagHelperContext tagHelperContext, - TagHelperOutput tagHelperOutput) + [InlineData("en-US")] + [InlineData("da-DK")] + [InlineData("uk-UA")] + public void Process_ScDateTagWithAspDataAttributeWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) { // Arrange - string dateFormat = "MM/dd/yyyy H:mm"; - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; - sut.DateFormat = dateFormat; - sut.DateModel = new DateField(_date); + CultureInfo originalCulture = CultureInfo.CurrentCulture; + CultureInfo originalUiCulture = CultureInfo.CurrentUICulture; + CultureInfo testCulture = new CultureInfo(cultureName); - // Act - sut.Process(tagHelperContext, tagHelperOutput); - - // Assert - tagHelperOutput.Content.GetContent().Should().Be(_date.ToString(dateFormat, CultureInfo.InvariantCulture)); + try + { + CultureInfo.CurrentCulture = testCulture; + CultureInfo.CurrentUICulture = testCulture; + + string dateFormat = "MM/dd/yyyy H:mm"; + DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); + TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); + TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => + { + DefaultTagHelperContent tagHelperContent = new(); + return Task.FromResult(tagHelperContent); + }); + + tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; + sut.DateFormat = dateFormat; + sut.DateModel = new DateField(_date); + + // Act + sut.Process(tagHelperContext, tagHelperOutput); + + // Assert - Expect culture-specific formatting based on current culture + string expected = _date.ToString(dateFormat, testCulture); + tagHelperOutput.Content.GetContent().Should().Be(expected); + } + finally + { + CultureInfo.CurrentCulture = originalCulture; + CultureInfo.CurrentUICulture = originalUiCulture; + } } [Theory] From f98096b63ec406422c3be60978ccba5c18a64153 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Wed, 13 Aug 2025 14:53:32 +0530 Subject: [PATCH 06/11] REmove manual culture setting --- .../TagHelpers/Fields/DateTagHelperFixture.cs | 100 +++++++----------- 1 file changed, 38 insertions(+), 62 deletions(-) diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs index 0515b21..668baf1 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs @@ -129,40 +129,28 @@ public void Process_ScDateTagWithEmptyValueInForAttribute_GeneratesEmptyOutput( public void Process_ScDateTagWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) { // Arrange - CultureInfo originalCulture = CultureInfo.CurrentCulture; - CultureInfo originalUiCulture = CultureInfo.CurrentUICulture; CultureInfo testCulture = new CultureInfo(cultureName); + const string dateFormat = "MM/dd/yyyy H:mm"; - try + DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); + TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); + TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => { - CultureInfo.CurrentCulture = testCulture; - CultureInfo.CurrentUICulture = testCulture; - - const string dateFormat = "MM/dd/yyyy H:mm"; - DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); - TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); - TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => - { - DefaultTagHelperContent tagHelperContent = new(); - return Task.FromResult(tagHelperContent); - }); - - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; - sut.DateFormat = dateFormat; - sut.For = GetModelExpression(new DateField(_date)); - - // Act - sut.Process(tagHelperContext, tagHelperOutput); - - // Assert - Expect culture-specific formatting based on current culture - string expected = _date.ToString(dateFormat, testCulture); - tagHelperOutput.Content.GetContent().Should().Be(expected); - } - finally - { - CultureInfo.CurrentCulture = originalCulture; - CultureInfo.CurrentUICulture = originalUiCulture; - } + DefaultTagHelperContent tagHelperContent = new(); + return Task.FromResult(tagHelperContent); + }); + + tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; + sut.DateFormat = dateFormat; + sut.Culture = cultureName; + sut.For = GetModelExpression(new DateField(_date)); + + // Act + sut.Process(tagHelperContext, tagHelperOutput); + + // Assert + string expected = _date.ToString(dateFormat, testCulture); + tagHelperOutput.Content.GetContent().Should().Be(expected); } [Theory] @@ -287,40 +275,28 @@ public void Process_ScDateTagWithAspDataAttributeWithEmptyValueInForAttribute_Ge public void Process_ScDateTagWithAspDataAttributeWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) { // Arrange - CultureInfo originalCulture = CultureInfo.CurrentCulture; - CultureInfo originalUiCulture = CultureInfo.CurrentUICulture; CultureInfo testCulture = new CultureInfo(cultureName); + string dateFormat = "MM/dd/yyyy H:mm"; - try + DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); + TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); + TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => { - CultureInfo.CurrentCulture = testCulture; - CultureInfo.CurrentUICulture = testCulture; - - string dateFormat = "MM/dd/yyyy H:mm"; - DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); - TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); - TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => - { - DefaultTagHelperContent tagHelperContent = new(); - return Task.FromResult(tagHelperContent); - }); - - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; - sut.DateFormat = dateFormat; - sut.DateModel = new DateField(_date); - - // Act - sut.Process(tagHelperContext, tagHelperOutput); - - // Assert - Expect culture-specific formatting based on current culture - string expected = _date.ToString(dateFormat, testCulture); - tagHelperOutput.Content.GetContent().Should().Be(expected); - } - finally - { - CultureInfo.CurrentCulture = originalCulture; - CultureInfo.CurrentUICulture = originalUiCulture; - } + DefaultTagHelperContent tagHelperContent = new(); + return Task.FromResult(tagHelperContent); + }); + + tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; + sut.DateFormat = dateFormat; + sut.Culture = cultureName; + sut.DateModel = new DateField(_date); + + // Act + sut.Process(tagHelperContext, tagHelperOutput); + + // Assert + string expected = _date.ToString(dateFormat, testCulture); + tagHelperOutput.Content.GetContent().Should().Be(expected); } [Theory] From 6c284320d4bdfeb4b2a0cca85174aaec1282d378 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Thu, 14 Aug 2025 09:00:59 +0530 Subject: [PATCH 07/11] Revert "Refactor culture selection logic with formatCulture" This reverts commit debfcdef43edad7bea571981d891e831434b8991. --- .../TagHelpers/Fields/DateTagHelper.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 8e42e5b..0883755 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,10 +67,8 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) - ? field.Value.ToString(DateFormat, formatCulture) + ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); From 547797563f2d1735628401fa2242dec000334435 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Thu, 14 Aug 2025 09:01:07 +0530 Subject: [PATCH 08/11] Revert "Move the formatCulture - formattedDate logic inside the ternary operator" This reverts commit 30986a284e59f05fe97faef2bc95f3dda72b14ff. --- .../TagHelpers/Fields/DateTagHelper.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 0883755..4ce5c93 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,9 +67,9 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) - ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) - : field.Value.ToString(culture); + CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; + + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, formatCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); From b2ddb2aeed5f7482486cf54101750d6af6e1f690 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Thu, 14 Aug 2025 09:01:09 +0530 Subject: [PATCH 09/11] Revert "Changes on copilot review - use en-US culture for test in DateFieldTagHelperFixture.cs, extracting the culture selection logic into a separate variable for better readability in DateTagHelper.cs" This reverts commit 979e5889d22bbfc6c017ae2621bc24e271e51aaf. --- .../TagHelpers/Fields/DateTagHelper.cs | 4 +--- .../Fixtures/TagHelpers/DateFieldTagHelperFixture.cs | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 4ce5c93..8dc7321 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,9 +67,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - CultureInfo formatCulture = !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture; - - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, formatCulture) : field.Value.ToString(culture); + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs index 8f2a2ff..0b5513d 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs @@ -41,7 +41,7 @@ public DateFieldTagHelperFixture() app.UseRouting(); app.UseRequestLocalization(options => { - var culture = new CultureInfo("en-US"); + var culture = new CultureInfo("da-DK"); options.DefaultRequestCulture = new RequestCulture(culture); options.SupportedCultures = [culture]; options.SupportedUICultures = [culture]; @@ -103,7 +103,7 @@ public async Task DateTagHelper_GeneratesProperDate() // Assert sectionNode.ChildNodes[1].InnerHtml.Should().Be("05/04/2012"); sectionNode.ChildNodes[3].InnerHtml.Should().Be("05/04/2012 00:00:00"); - sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("en-US"))); + sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("da-DK"))); sectionNode.ChildNodes[9].InnerHtml.Should().Contain("04.05.2012"); } From 47fe2db4606afe95551d7cfa5abfab332ba48bf0 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Thu, 14 Aug 2025 09:01:12 +0530 Subject: [PATCH 10/11] Revert "Ensure culture-invariant date formatting for explicit formats and set test cultures" This reverts commit ccc68c7609ec54a3da6e47053be78ff92e35ce80. --- .../TagHelpers/Fields/DateTagHelper.cs | 2 +- .../Fixtures/Binding/ViewFieldsBindingFixture.cs | 11 +---------- .../Fixtures/TagHelpers/DateFieldTagHelperFixture.cs | 10 +--------- .../TagHelpers/RichTextFieldTagHelperFixture.cs | 11 +---------- 4 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs index 8dc7321..a0ef61a 100644 --- a/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs +++ b/src/Sitecore.AspNetCore.SDK.RenderingEngine/TagHelpers/Fields/DateTagHelper.cs @@ -67,7 +67,7 @@ public override void Process(TagHelperContext context, TagHelperOutput output) CultureInfo culture = !string.IsNullOrWhiteSpace(Culture) ? CultureInfo.CreateSpecificCulture(Culture) : CultureInfo.CurrentCulture; - string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, !string.IsNullOrWhiteSpace(Culture) ? culture : CultureInfo.InvariantCulture) : field.Value.ToString(culture); + string formattedDate = !string.IsNullOrWhiteSpace(DateFormat) ? field.Value.ToString(DateFormat, culture) : field.Value.ToString(culture); HtmlString html = outputEditableMarkup ? new HtmlString(field.EditableMarkup) : new HtmlString(formattedDate); diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs index 82d57f2..8f8f7ef 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/Binding/ViewFieldsBindingFixture.cs @@ -1,8 +1,6 @@ -using System.Globalization; -using System.Net; +using System.Net; using FluentAssertions; using HtmlAgilityPack; -using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -39,13 +37,6 @@ public ViewFieldsBindingFixture() .Configure(app => { app.UseRouting(); - app.UseRequestLocalization(options => - { - var culture = new CultureInfo("en-US"); - options.DefaultRequestCulture = new RequestCulture(culture); - options.SupportedCultures = [culture]; - options.SupportedUICultures = [culture]; - }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs index 0b5513d..60f4aa3 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/DateFieldTagHelperFixture.cs @@ -2,7 +2,6 @@ using System.Net; using FluentAssertions; using HtmlAgilityPack; -using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -39,13 +38,6 @@ public DateFieldTagHelperFixture() .Configure(app => { app.UseRouting(); - app.UseRequestLocalization(options => - { - var culture = new CultureInfo("da-DK"); - options.DefaultRequestCulture = new RequestCulture(culture); - options.SupportedCultures = [culture]; - options.SupportedUICultures = [culture]; - }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { @@ -103,7 +95,7 @@ public async Task DateTagHelper_GeneratesProperDate() // Assert sectionNode.ChildNodes[1].InnerHtml.Should().Be("05/04/2012"); sectionNode.ChildNodes[3].InnerHtml.Should().Be("05/04/2012 00:00:00"); - sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(new CultureInfo("da-DK"))); + sectionNode.ChildNodes[5].InnerHtml.Should().Be(TestConstants.DateTimeValue.ToString(CultureInfo.CurrentCulture)); sectionNode.ChildNodes[9].InnerHtml.Should().Contain("04.05.2012"); } diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs index 42625cc..23e1ef2 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Integration.Tests/Fixtures/TagHelpers/RichTextFieldTagHelperFixture.cs @@ -1,9 +1,7 @@ -using System.Globalization; -using System.Net; +using System.Net; using System.Text.Encodings.Web; using FluentAssertions; using HtmlAgilityPack; -using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.TestHost; using Sitecore.AspNetCore.SDK.AutoFixture.Mocks; using Sitecore.AspNetCore.SDK.LayoutService.Client.Extensions; @@ -41,13 +39,6 @@ public RichTextFieldTagHelperFixture() .Configure(app => { app.UseRouting(); - app.UseRequestLocalization(options => - { - var culture = new CultureInfo("en-US"); - options.DefaultRequestCulture = new RequestCulture(culture); - options.SupportedCultures = [culture]; - options.SupportedUICultures = [culture]; - }); app.UseSitecoreRenderingEngine(); app.UseEndpoints(endpoints => { From be5c60ca4d493234686e7cebcf86ca8ea1469c72 Mon Sep 17 00:00:00 2001 From: krishanthaudayakumara Date: Mon, 18 Aug 2025 10:51:38 +0530 Subject: [PATCH 11/11] Refactor: use [InlineAutoNSubstituteData] attributes and receive dependency-injected instances --- .../TagHelpers/Fields/DateTagHelperFixture.cs | 32 +++++-------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs index 668baf1..c2fe417 100644 --- a/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs +++ b/tests/Sitecore.AspNetCore.SDK.RenderingEngine.Tests/TagHelpers/Fields/DateTagHelperFixture.cs @@ -123,23 +123,15 @@ public void Process_ScDateTagWithEmptyValueInForAttribute_GeneratesEmptyOutput( } [Theory] - [InlineData("en-US")] - [InlineData("da-DK")] - [InlineData("uk-UA")] - public void Process_ScDateTagWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) + [InlineAutoNSubstituteData("en-US")] + [InlineAutoNSubstituteData("da-DK")] + [InlineAutoNSubstituteData("uk-UA")] + public void Process_ScDateTagWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName, DateTagHelper sut, TagHelperContext tagHelperContext, TagHelperOutput tagHelperOutput) { // Arrange CultureInfo testCulture = new CultureInfo(cultureName); const string dateFormat = "MM/dd/yyyy H:mm"; - DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); - TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); - TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => - { - DefaultTagHelperContent tagHelperContent = new(); - return Task.FromResult(tagHelperContent); - }); - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; sut.DateFormat = dateFormat; sut.Culture = cultureName; @@ -269,23 +261,15 @@ public void Process_ScDateTagWithAspDataAttributeWithEmptyValueInForAttribute_Ge } [Theory] - [InlineData("en-US")] - [InlineData("da-DK")] - [InlineData("uk-UA")] - public void Process_ScDateTagWithAspDataAttributeWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName) + [InlineAutoNSubstituteData("en-US")] + [InlineAutoNSubstituteData("da-DK")] + [InlineAutoNSubstituteData("uk-UA")] + public void Process_ScDateTagWithAspDataAttributeWithCustomFormat_GeneratesCustomDateFormatOutput(string cultureName, DateTagHelper sut, TagHelperContext tagHelperContext, TagHelperOutput tagHelperOutput) { // Arrange CultureInfo testCulture = new CultureInfo(cultureName); string dateFormat = "MM/dd/yyyy H:mm"; - DateTagHelper sut = new DateTagHelper(new EditableChromeRenderer()); - TagHelperContext tagHelperContext = new TagHelperContext([], new Dictionary(), Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)); - TagHelperOutput tagHelperOutput = new TagHelperOutput(string.Empty, [], (_, _) => - { - DefaultTagHelperContent tagHelperContent = new(); - return Task.FromResult(tagHelperContent); - }); - tagHelperOutput.TagName = RenderingEngineConstants.SitecoreTagHelpers.DateHtmlTag; sut.DateFormat = dateFormat; sut.Culture = cultureName;