diff --git a/PreMailer.Net/PreMailer.Net.Tests/CssElementStyleResolverTests.cs b/PreMailer.Net/PreMailer.Net.Tests/CssElementStyleResolverTests.cs index b505635..5f4ec29 100644 --- a/PreMailer.Net/PreMailer.Net.Tests/CssElementStyleResolverTests.cs +++ b/PreMailer.Net/PreMailer.Net.Tests/CssElementStyleResolverTests.cs @@ -22,5 +22,39 @@ public void GetAllStylesForElement() Assert.Equal("style", result.ElementAt(0).AttributeName); Assert.Equal("bgcolor", result.ElementAt(1).AttributeName); } + + [Fact] + public void GetAllStyles_PreservesImportantFlagsInInlineStyles() + { + var document = new HtmlParser().ParseDocument("
"); + var element = document.Body.FirstElementChild; + + var styleClass = new StyleClass(); + styleClass.Attributes["color"] = CssAttribute.FromRule("color: red"); + + var result = CssElementStyleResolver.GetAllStyles(element, styleClass); + + var styleAttribute = result.FirstOrDefault(a => a.AttributeName == "style"); + Assert.NotNull(styleAttribute); + Assert.Contains("font-weight: bold !important", styleAttribute.CssValue); + Assert.Contains("color: red", styleAttribute.CssValue); + } + + [Fact] + public void GetAllStyles_PreservesImportantFlagsWhenMergingStyles() + { + var document = new HtmlParser().ParseDocument(""); + var element = document.Body.FirstElementChild; + + var styleClass = new StyleClass(); + styleClass.Attributes["font-weight"] = CssAttribute.FromRule("font-weight: normal"); + + var result = CssElementStyleResolver.GetAllStyles(element, styleClass); + + var styleAttribute = result.FirstOrDefault(a => a.AttributeName == "style"); + Assert.NotNull(styleAttribute); + Assert.Contains("font-weight: bold !important", styleAttribute.CssValue); + Assert.DoesNotContain("font-weight: normal", styleAttribute.CssValue); + } } } diff --git a/PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs b/PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs index 4db0e0e..9923ece 100644 --- a/PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs +++ b/PreMailer.Net/PreMailer.Net.Tests/PreMailerTests.cs @@ -188,6 +188,23 @@ public void MoveCssInline_ImportantFlag_HonorsImportantFlagInline() Assert.Contains("test
+"; + + var premailedOutput = PreMailer.MoveCssInline(input); + + Assert.Contains("font-weight: bold !important", premailedOutput.Html); + } + [Fact] public void MoveCssInline_AbsoluteBackgroundUrl_ShouldNotBeCleanedAsComment() { diff --git a/PreMailer.Net/PreMailer.Net.Tests/StyleClassApplierTests.cs b/PreMailer.Net/PreMailer.Net.Tests/StyleClassApplierTests.cs index 8088bb3..1f40b34 100644 --- a/PreMailer.Net/PreMailer.Net.Tests/StyleClassApplierTests.cs +++ b/PreMailer.Net/PreMailer.Net.Tests/StyleClassApplierTests.cs @@ -58,7 +58,24 @@ public void ApplyInlineStylesWithoutImportant() var result = StyleClassApplier.ApplyAllStyles(elementDictionary); - Assert.Equal("", result.ElementAt(0).Key.OuterHtml); + Assert.Equal("", result.ElementAt(0).Key.OuterHtml); + } + + [Fact] + public void ApplyInlineStylesWithImportant() + { + var document = new HtmlParser().ParseDocument(""); + + var clazz = new StyleClass(); + clazz.Attributes["color"] = CssAttribute.FromRule("color: #000"); + + var elementDictionary = new Dictionary