public void an_if_evaluating_to_false_stops_the_rendering_of_methods_before_the_next_method_call()
        {
            var inlineEelement = new InlineSharpViewElement(
                () => Document.CreateElement <IDivElement>().If(false).ID("test"));

            inlineEelement.OuterXml.ShouldBe(string.Empty);
        }
        public void an_if_pointing_to_an_empty_string_generates_an_empty_element()
        {
            string value = string.Empty;
            var    e     = new InlineSharpViewElement(() => Document.CreateElement <IDivElement>().If(value)["content"]);

            e.OuterXml.ShouldBe(string.Empty);
        }
        public void a_comparison_on_a_static_returning_false_results_in_an_empty_element()
        {
            var inlineEelement = new InlineSharpViewElement(
                () => Document.CreateElement <IDivElement>().If(Thread.CurrentPrincipal.Identity.Name == "john"));

            inlineEelement.OuterXml.ShouldBe(string.Empty);
        }
        public void access_to_a_null_field_that_is_an_interface_results_in_a_null_element()
        {
            IConvertible convertible = null;
            var          e           = new InlineSharpViewElement(() => Document.CreateElement <IDivElement>().If(convertible));

            e.OuterXml.ShouldBe(string.Empty);
        }
        public void a_boolean_sets_to_false_results_in_an_empty_element()
        {
            bool result         = false;
            var  inlineEelement = new InlineSharpViewElement(
                () => Document.CreateElement <IDivElement>().If(result));

            inlineEelement.OuterXml.ShouldBe(string.Empty);
        }
        public void multiple_methods_are_rewritten()
        {
            var Xhtml = new XhtmlAnchor(null, null, () => Thread.CurrentPrincipal);
            var e     =
                new InlineSharpViewElement(
                    () => Document.CreateElement <IAElement>().If(false).ID("hi").Class("hello")["content"]);

            e.OuterXml.ShouldBe(string.Empty);
        }
        public void an_intermediate_null_value_results_in_a_null_element()
        {
            var nested         = new nested();
            var inlineEelement = new InlineSharpViewElement(
                () => Document.CreateElement <IDivElement>().If(nested.subnested.property));

            inlineEelement.Prepare();
            inlineEelement.ChildNodes.Count.ShouldBe(0);
        }
        public void both_sides_of_conditionals_inside_ifs_are_propagating_null_values()
        {
            var    nested         = new nested();
            string value          = string.Empty;
            var    inlineEelement = new InlineSharpViewElement(
                () => Document.CreateElement <IDivElement>().If(nested.subnested.booleanValue || false));

            inlineEelement.Prepare();
            inlineEelement.ChildNodes.Count.ShouldBe(0);
        }
        public void current_in_if_is_rewritten()
        {
            var strings = new List <string> {
                "one", "two"
            };
            var e =
                new InlineSharpViewElement(
                    () => Document.CreateElement <IDivElement>().ForEach(strings)).If(strings.Current());

            e.OuterXml.ShouldBe("<div class=\"item\"></div>");
        }
        public void the_foreach_is_not_executed_when_the_if_case_evaluates_to_false()
        {
            var strings = new List <string> {
                "one", "two"
            };
            var e =
                new InlineSharpViewElement(
                    () => Document.CreateElement <IDivElement>().ForEach(strings).Class("item").If(false));

            e.OuterXml.ShouldBe(string.Empty);
        }
        public void a_root_node_is_rewritten()
        {
            var list = new List <string> {
                "one", "two"
            };

            var inlineElement =
                new InlineSharpViewElement(() => Document.CreateElement <IDivElement>().ID(list.Current()).ForEach(list));

            inlineElement.Prepare();
            inlineElement.OuterXml.ShouldBe("<div id=\"one\"></div><div id=\"two\"></div>");
        }
        public void a_foreach_and_multiple_current_items_producethe_correct_html_output()
        {
            var list = new List <string> {
                "one", "two"
            };
            var e = new InlineSharpViewElement(() => Document.CreateElement <IDivElement>().ForEach(list)
                                               [
                                                   Document.CreateElement <IAElement>().Class(list.Current())[
                                                       list.Current()]
                                               ]);

            e.OuterXml.ShouldBe("<div><a class=\"one\">one</a></div><div><a class=\"two\">two</a></div>");
        }
        public void nested_foreach_respect_the_index_values()
        {
            var      anchor = new XhtmlAnchor(null, null, () => null);
            Customer data   = CreateCustomerOrderLines();
            var      e      = new InlineSharpViewElement(() => Document.CreateElement <IDivElement>().ForEach(data.Orders)[
                                                             anchor.TextBox(() => data.Orders.Current().Lines.Current().Description).ForEach(data.Orders.Current().Lines)
                                                         ]);
            var elementString = e.OuterXml;

            elementString.ShouldBe(
                "<div>" +
                "<input type=\"text\" name=\"Customer.Orders:0.Lines:0.Description\" value=\"1\" />" +
                "<input type=\"text\" name=\"Customer.Orders:0.Lines:1.Description\" value=\"2\" />" +
                "</div><div>" +
                "<input type=\"text\" name=\"Customer.Orders:1.Lines:0.Description\" value=\"1\" />" +
                "<input type=\"text\" name=\"Customer.Orders:1.Lines:1.Description\" value=\"2\" />" +
                "</div>");
        }
        public void a_foreach_and_multiple_current_items_produce_the_correct_html_output1()
        {
            var anchor = new XhtmlAnchor(null, null, () => null);
            var data   = new Customer
            {
                Orders = new List <Order>
                {
                    new Order {
                        ProductName = "product1"
                    },
                    new Order {
                        ProductName = "product2"
                    }
                }
            };
            var e = new InlineSharpViewElement(() => anchor.TextBox(() => data.Orders.Current().ProductName).ForEach(data.Orders));

            e.OuterXml.ShouldBe("<input type=\"text\" name=\"Customer.Orders:0.ProductName\" value=\"product1\" />"
                                + "<input type=\"text\" name=\"Customer.Orders:1.ProductName\" value=\"product2\" />");
        }
        public void nested_foreach_clauses_are_rewritten()
        {
            var list = new List <string> {
                "one", "two"
            };
            var list2 = new List <string> {
                "three", "four"
            };

            var inlineElement = new InlineSharpViewElement(() =>
                                                           Document.CreateElement <IDivElement>()
                                                           .Class(list.Current())
                                                           .ForEach(list)
                                                           [Document.CreateElement <IPElement>()
                                                            .ID(list2.Current())
                                                            .ForEach(list2)]
                                                           );

            inlineElement.Prepare();
            inlineElement.OuterXml.ShouldBe("<div class=\"one\"><p id=\"three\"></p><p id=\"four\"></p></div><div class=\"two\"><p id=\"three\"></p><p id=\"four\"></p></div>");
        }
        public void a_foreach_applied_to_the_current_item_of_a_parent_foreach_are_processed()
        {
            Customer data = CreateCustomerOrderLines();
            var      e    = new InlineSharpViewElement(() =>
                                                       Document.CreateElement <IDivElement>()
                                                       .Class(data.Orders.Current().ProductName)
                                                       .ForEach(data.Orders)
                                                       [Document.CreateElement <IDivElement>()
                                                        .Class(data.Orders.Current().Lines.Current().Description)
                                                        .ForEach(data.Orders.Current().Lines)
                                                       ]);

            e.OuterXml.ShouldBe(
                "<div class=\"product1\">" +
                "<div class=\"1\"></div>" +
                "<div class=\"2\"></div>" +
                "</div><div class=\"product2\">" +
                "<div class=\"1\"></div>" +
                "<div class=\"2\"></div>" +
                "</div>"
                );
        }