public void GetNodesAndDeclarations_Important_Declaration_Should_Override_Specificity() { var html = @" <html> <head> <title>test</title> </head> <body> <div id=""myDiv""> </div> </body> </html>"; var document = new HtmlDocument(); document.LoadHtml(html); var css = @" #myDiv { font-family: Arial, Helvetica, sans-serif; } div { font-family: Times New Roman !important; }"; var ruleSets = new CSSParser().ParseText(css).RuleSets; var cssRewriter = new CSSInliner(); var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList(); Assert.Equal(nodesAndDeclarations.Count(), 1); Assert.Equal(nodesAndDeclarations.First().Item1.Id, "myDiv"); Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Times New Roman"); }
public void GetNodesAndDeclarations_Important_Declarations_Have_Priority_Over_Declarations_Defined_Inline() { var html = @" <html> <head> <title>test</title> </head> <body> <div id=""myDiv"" style=""font-family: Comic Sans MS;""> </div> </body> </html>"; var document = new HtmlDocument(); document.LoadHtml(html); var css = @"#myDiv { font-family: Arial, Helvetica, sans-serif !important; }"; var ruleSets = new CSSParser().ParseText(css).RuleSets; var cssRewriter = new CSSInliner(); var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList(); Assert.Equal(nodesAndDeclarations.Count(), 1); Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Arial, Helvetica, sans-serif"); }
public void GetNodesAndDeclarations_Should_Pick_Class_Rule_Over_Element_Rule() { var html = @" <html> <head> <title>test</title> </head> <body> <div class=""myDiv""> </div> </body> </html>"; var document = new HtmlDocument(); document.LoadHtml(html); var css = @" .myDiv { font-family: Arial, Helvetica, sans-serif; } div { font-family: Times New Roman, sans-serif; }"; var ruleSets = new CSSParser().ParseText(css).RuleSets; var cssRewriter = new CSSInliner(); var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList(); Assert.Equal(nodesAndDeclarations.Count(), 1); Assert.Equal(nodesAndDeclarations.First().Item1.Attributes["class"].Value, "myDiv"); Assert.Equal(nodesAndDeclarations.First().Item2.Expression.ToString(), "Arial, Helvetica, sans-serif"); }
public void GetNodesAndDeclarations_NodeAndDeclaration_Should_Not_Be_Returned_When_Node_Has_Declaration_Defined_Inline() { var html = @" <html> <head> <title>test</title> </head> <body> <div id=""myDiv"" style=""font-family: Comic Sans MS;""> </div> </body> </html>"; var document = new HtmlDocument(); document.LoadHtml(html); var css = @" #myDiv { font-family: Arial, Helvetica, sans-serif; } div { font-family: Times New Roman; }"; var ruleSets = new CSSParser().ParseText(css).RuleSets; var cssRewriter = new CSSInliner(); var nodesAndDeclarations = cssRewriter.GetMatchedNodes(document, ruleSets).ToList(); Assert.Empty(nodesAndDeclarations); }