Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        public void EmptyRendorTests()
        {
            var view = new ParsedView(CQ.Create(EmptyHtmlString));

            Assert.AreEqual(EmptyHtmlString, view.Render(new Mock<IYateDataContext>().Object));
        }
Esempio n. 4
0
        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;
        }