public void ConstrutorTests() { Assert.Throws<ArgumentNullException>(() => new ParsedView(null)); var view = new ParsedView(CQ.Create()); Assert.IsNotNull(view); Assert.IsNotNull(view.RuleSets); Assert.IsNotNull(view.Html); }
public void FirstRenderDoesntMessWithSecondRender() { var damangingRuleSetMock = new Mock<RuleSet>(); damangingRuleSetMock.Setup(d => d.Render(It.IsAny<CQ>(), It.IsAny<IYateDataContext>())) .Callback((CQ html, IYateDataContext data) => html.Select("body").Text("hi")); var view = new ParsedView(CQ.Create(EmptyHtmlString)); view.RuleSets.Add(damangingRuleSetMock.Object); Assert.AreEqual("<html><head></head><body>hi</body></html>", view.Render(new Mock<IYateDataContext>().Object)); view.RuleSets.Clear(); Assert.AreEqual(EmptyHtmlString, view.Render(new Mock<IYateDataContext>().Object)); }
public void EmptyRendorTests() { var view = new ParsedView(CQ.Create(EmptyHtmlString)); Assert.AreEqual(EmptyHtmlString, view.Render(new Mock<IYateDataContext>().Object)); }
public IParsedView Build(string filepath) { if (string.IsNullOrWhiteSpace(filepath)) { _log.Error("filepath was not given."); throw new ArgumentNullException("filepath"); } var dom = CQ.Create(_fileFetcher.GetText(filepath)); //get all YateScripts out and combine var combinedScripts = new StringBuilder(); var scriptTags = dom.Select("script[type='text/yate']"); foreach (var scriptTag in scriptTags) { var srcAttributeValue = scriptTag.GetAttribute("src"); if (!string.IsNullOrWhiteSpace(srcAttributeValue)) { combinedScripts.Append(_fileFetcher.GetText(srcAttributeValue)); } else { combinedScripts.Append(scriptTag.InnerHTML); } } dom.Select("script[type='text/yate']").Remove(); //todo: we would have to sort the css to be more css like. var css = _cssParser.ParseText(combinedScripts.ToString()); var view = new ParsedView(dom); BuildBlock(view, css.Directives, css.RuleSets); return view; }