Пример #1
0
        public void CanDeserializeRootColumnFromXmlString()
        {
            string source = "<rootcolumn>";

            source += "<id>rootcol</id>";
            source += "<parts>";
            source += "<part><id>col1</id><typecode>columncontainer</typecode>";
            source += "<spacerabove>true</spacerabove>";
            source += "<columns>";
            source += "<part><id>col1a</id><typecode>column</typecode>";
            source += "<size>Size2</size><nogutter>false</nogutter>";
            source += "<parts>";
            source += "<part><id>test1</id><typecode>htmlpart</typecode><rawhtml>sidebar</rawhtml></part>";
            source += "</parts>";
            source += "</part>";
            source += "<part><id>col1b</id><typecode>column</typecode>";
            source += "<size>Size10</size><nogutter>false</nogutter>";
            source += "<parts>";
            source += "<part><id>test2</id><typecode>htmlpart</typecode><rawhtml>&lt;h1&gt;hello, world!&lt;/h1&gt;</rawhtml></part>";
            source += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml>&lt;p&gt;Lorem Ipsum&lt;/p&gt;</rawhtml></part>";
            source += "<part><id>col2</id><typecode>columncontainer</typecode>";
            source += "<spacerabove>true</spacerabove>";
            source += "<columns>";
            source += "<part><id>col2a</id><typecode>column</typecode>";
            source += "<size>Size4</size><nogutter>true</nogutter>";
            source += "<parts>";
            source += "<part><id>test4</id><typecode>htmlpart</typecode><rawhtml>inside</rawhtml></part>";
            source += "</parts>";
            source += "</part>";
            source += "<part><id>col2b</id><typecode>column</typecode>";
            source += "<size>Size6</size><nogutter>false</nogutter>";
            source += "<parts>";
            source += "<part><id>test5</id><typecode>htmlpart</typecode><rawhtml>outside</rawhtml></part>";
            source += "</parts>";
            source += "</part>";
            source += "</columns>";
            source += "</part>";
            source += "</parts>";
            source += "</part>";
            source += "</columns>";
            source += "</part>";
            source += "</parts>";
            source += "</rootcolumn>";



            RootColumn expected = new RootColumn();

            expected.Id = "rootcol";
            ColumnContainer cols = new ColumnContainer(expected);

            cols.Id = "col1";
            expected.AddPart(cols);
            cols.SetColumns("2,10");
            cols.Columns[0].Id = "col1a";
            cols.Columns[1].Id = "col1b";
            cols.Columns[0].AddPart(new Html()
            {
                Id = "test1", RawHtml = "sidebar"
            });
            cols.Columns[1].AddPart(new Html()
            {
                Id = "test2", RawHtml = "<h1>hello, world!</h1>"
            });
            cols.Columns[1].AddPart(new Html()
            {
                Id = "test3", RawHtml = "<p>Lorem Ipsum</p>"
            });

            ColumnContainer cols2 = new ColumnContainer(cols.Columns[1]);

            cols2.Id = "col2";
            cols2.SetColumns("4w,6");
            cols2.Columns[0].Id = "col2a";
            cols2.Columns[1].Id = "col2b";
            cols2.Columns[0].AddPart(new Html()
            {
                Id = "test4", RawHtml = "inside"
            });
            cols2.Columns[1].AddPart(new Html()
            {
                Id = "test5", RawHtml = "outside"
            });
            cols.Columns[1].AddPart(cols2);


            RootColumn actual = new RootColumn();

            actual.DeserializeFromXml(source);

            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(expected.MinimumSize(), actual.MinimumSize());
            Assert.AreEqual(expected.NoGutter, actual.NoGutter);
            Assert.AreEqual(1, actual.Parts.Count);

            ColumnContainer actualCols = (ColumnContainer)actual.Parts[0];

            Assert.IsNotNull(actualCols);

            Assert.AreEqual(cols.Id, actualCols.Id);
            Assert.AreEqual(cols.Columns.Count, actualCols.Columns.Count);
            Assert.AreEqual(cols.MinimumSize(), actualCols.MinimumSize());

            // Column 1
            Assert.AreEqual(cols.Columns[0].Id, actualCols.Columns[0].Id);
            Assert.AreEqual(cols.Columns[0].NoGutter, actualCols.Columns[0].NoGutter);
            Assert.AreEqual(cols.Columns[0].Parts.Count, actualCols.Columns[0].Parts.Count);
            Assert.AreEqual(cols.Columns[0].Size, actualCols.Columns[0].Size);
            // Part 1 in Column 1
            Html test1 = (Html)actualCols.Columns[0].Parts[0];

            Assert.IsNotNull(test1);
            Assert.AreEqual("test1", test1.Id);
            Assert.AreEqual("sidebar", test1.RawHtml);


            // Column 2
            Assert.AreEqual(cols.Columns[1].Id, actualCols.Columns[1].Id);
            Assert.AreEqual(cols.Columns[1].NoGutter, actualCols.Columns[1].NoGutter);
            Assert.AreEqual(cols.Columns[1].Parts.Count, actualCols.Columns[1].Parts.Count);
            Assert.AreEqual(cols.Columns[1].Size, actualCols.Columns[1].Size);

            // Part 1 in Column 2
            Html test2 = (Html)actualCols.Columns[1].Parts[0];

            Assert.IsNotNull(test2);
            Assert.AreEqual("test2", test2.Id);
            Assert.AreEqual("<h1>hello, world!</h1>", test2.RawHtml);

            // Part 2 in Column 2
            Html test3 = (Html)actualCols.Columns[1].Parts[1];

            Assert.IsNotNull(test3);
            Assert.AreEqual("test3", test3.Id);
            Assert.AreEqual("<p>Lorem Ipsum</p>", test3.RawHtml);

            // ColumnContainer 2 inside column 2
            ColumnContainer actualCols2 = (ColumnContainer)actualCols.Columns[1].Parts[2];

            Assert.IsNotNull(actualCols2);
            Assert.AreEqual(cols2.Columns.Count, actualCols2.Columns.Count);
            Assert.AreEqual(cols2.Id, actualCols2.Id);
            Assert.AreEqual(cols2.MinimumSize(), actualCols2.MinimumSize());

            // ColumnContainer2 column 1
            Assert.AreEqual(cols2.Columns[0].Id, actualCols2.Columns[0].Id);
            Assert.AreEqual(cols2.Columns[0].NoGutter, actualCols2.Columns[0].NoGutter);
            Assert.AreEqual(cols2.Columns[0].Parts.Count, actualCols2.Columns[0].Parts.Count);
            Assert.AreEqual(cols2.Columns[0].Size, actualCols2.Columns[0].Size);
            // ColumnContainer2 Part 1 in Column 1
            Html test4 = (Html)actualCols2.Columns[0].Parts[0];

            Assert.IsNotNull(test4);
            Assert.AreEqual("test4", test4.Id);
            Assert.AreEqual("inside", test4.RawHtml);

            // ColumnContainer2 column 2
            Assert.AreEqual(cols2.Columns[1].Id, actualCols2.Columns[1].Id);
            Assert.AreEqual(cols2.Columns[1].NoGutter, actualCols2.Columns[1].NoGutter);
            Assert.AreEqual(cols2.Columns[1].Parts.Count, actualCols2.Columns[1].Parts.Count);
            Assert.AreEqual(cols2.Columns[1].Size, actualCols2.Columns[1].Size);

            // ColumnContainer2 Part 1 in Column 2
            Html test5 = (Html)actualCols2.Columns[1].Parts[0];

            Assert.IsNotNull(test5);
            Assert.AreEqual("test5", test5.Id);
            Assert.AreEqual("outside", test5.RawHtml);

            // Make sure everything renders as expected
            string expectedRender = expected.RenderForDisplay(new MerchantTribeApplication(new RequestContext(), true), null);
            string actualRender   = actual.RenderForDisplay(new MerchantTribeApplication(new RequestContext(), true), null);

            Assert.AreEqual(expectedRender, actualRender);
        }
Пример #2
0
        public void CanSerializeRootColumnToXmlString()
        {
            RootColumn      target = new RootColumn();
            ColumnContainer cols   = new ColumnContainer(target);

            target.AddPart(cols);
            cols.SetColumns("2,10");
            cols.Columns[0].AddPart(new Html()
            {
                Id = "test1", RawHtml = "sidebar"
            });
            cols.Columns[1].AddPart(new Html()
            {
                Id = "test2", RawHtml = "<h1>hello, world!</h1>"
            });
            cols.Columns[1].AddPart(new Html()
            {
                Id = "test3", RawHtml = "<p>Lorem Ipsum</p>"
            });

            ColumnContainer cols2 = new ColumnContainer(cols.Columns[1]);

            cols2.SetColumns("4w,6");
            cols2.Columns[0].AddPart(new Html()
            {
                Id = "test4", RawHtml = "inside"
            });
            cols2.Columns[1].AddPart(new Html()
            {
                Id = "test5", RawHtml = "outside"
            });
            cols.Columns[1].AddPart(cols2);


            string expected = "<rootcolumn>";

            expected += "<id>" + target.Id + "</id>";
            expected += "<parts>";

            expected += "<part><id>" + cols.Id + "</id><typecode>columncontainer</typecode>";
            expected += "<spacerabove>true</spacerabove>";
            expected += "<columns>";

            expected += "<part><id>" + cols.Columns[0].Id + "</id><typecode>column</typecode>";
            expected += "<size>Size2</size><nogutter>false</nogutter>";
            expected += "<parts>";
            expected += "<part><id>test1</id><typecode>htmlpart</typecode><rawhtml>sidebar</rawhtml></part>";
            expected += "</parts>";
            expected += "</part>";

            expected += "<part><id>" + cols.Columns[1].Id + "</id><typecode>column</typecode>";
            expected += "<size>Size10</size><nogutter>false</nogutter>";
            expected += "<parts>";
            expected += "<part><id>test2</id><typecode>htmlpart</typecode><rawhtml>&lt;h1&gt;hello, world!&lt;/h1&gt;</rawhtml></part>";
            expected += "<part><id>test3</id><typecode>htmlpart</typecode><rawhtml>&lt;p&gt;Lorem Ipsum&lt;/p&gt;</rawhtml></part>";
            expected += "<part><id>" + cols2.Id + "</id><typecode>columncontainer</typecode>";
            expected += "<spacerabove>true</spacerabove>";
            expected += "<columns>";

            expected += "<part><id>" + cols2.Columns[0].Id + "</id><typecode>column</typecode>";
            expected += "<size>Size4</size><nogutter>true</nogutter>";
            expected += "<parts>";
            expected += "<part><id>test4</id><typecode>htmlpart</typecode><rawhtml>inside</rawhtml></part>";
            expected += "</parts>";
            expected += "</part>";
            expected += "<part><id>" + cols2.Columns[1].Id + "</id><typecode>column</typecode>";
            expected += "<size>Size6</size><nogutter>false</nogutter>";
            expected += "<parts>";
            expected += "<part><id>test5</id><typecode>htmlpart</typecode><rawhtml>outside</rawhtml></part>";
            expected += "</parts>";
            expected += "</part>";

            expected += "</columns>";
            expected += "</part>";

            expected += "</parts>";
            expected += "</part>";

            expected += "</columns>";
            expected += "</part>";

            expected += "</parts>";
            expected += "</rootcolumn>";

            string actual;

            actual = target.SerializeToString();
            Assert.AreEqual(expected, actual);
        }
Пример #3
0
        public RootColumn GetSampleContent()
        {
            RootColumn root = new RootColumn();

            Html part1 = new Html()
            {
                RawHtml = "Wide Area Here - Col 12"
            };

            root.Parts.Add(part1);

            // Sidebar + Main Column
            ColumnContainer col1 = new ColumnContainer(root);

            col1.SetColumns("3w,9");
            root.Parts.Add(col1);

            // First 3 in sidebar
            ColumnContainer colside1 = new ColumnContainer(col1.Columns[0]);

            colside1.SetColumns("1,1,1w");
            colside1.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "1"
            });
            colside1.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "1"
            });
            colside1.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "1w"
            });
            col1.Columns[0].Parts.Add(colside1);

            // Second group in side
            ColumnContainer colside2 = new ColumnContainer(col1.Columns[0]);

            colside2.SetColumns("2w,1w");
            colside2.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "2w"
            });
            colside2.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "1w"
            });
            col1.Columns[0].Parts.Add(colside2);

            // Third group in side
            ColumnContainer colside3 = new ColumnContainer(col1.Columns[0]);

            colside3.SetColumns("1,2");
            colside3.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "1"
            });
            colside3.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "2l"
            });
            col1.Columns[0].Parts.Add(colside3);

            // Html in bottom of sidebar
            col1.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "This is some content that will span the entire sidebar column and should be 3 columns wide."
            });



            // Start Grid 9 Area
            col1.Columns[1].AddPart(new Html()
            {
                RawHtml = "Grid 9 - should be bumped up against wide column"
            });


            // 4 column in 9
            ColumnContainer nine1 = new ColumnContainer(col1.Columns[1]);

            nine1.SetColumns("2,2,2,3");
            nine1.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "2"
            });
            nine1.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "2"
            });
            nine1.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "2"
            });
            nine1.Columns[3].Parts.Add(new Html()
            {
                RawHtml = "3l"
            });
            col1.Columns[1].Parts.Add(nine1);

            col1.Columns[1].AddPart(new Html()
            {
                RawHtml = "And Another Section"
            });


            // 5 column in 9
            ColumnContainer nine2 = new ColumnContainer(col1.Columns[1]);

            nine2.SetColumns("4,2,1,1,1");
            nine2.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "4"
            });
            nine2.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "2"
            });
            nine2.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "1"
            });
            nine2.Columns[3].Parts.Add(new Html()
            {
                RawHtml = "1"
            });
            nine2.Columns[4].Parts.Add(new Html()
            {
                RawHtml = "1l"
            });
            col1.Columns[1].Parts.Add(nine2);

            col1.Columns[1].AddPart(new Html()
            {
                RawHtml = "And Same Section (no gaps)"
            });

            // 5wide column in 9
            ColumnContainer nine3 = new ColumnContainer(col1.Columns[1]);

            nine3.SetColumns("4w,2w,1w,1w,1w");
            nine3.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "4w"
            });
            nine3.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "2w"
            });
            nine3.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "1w"
            });
            nine3.Columns[3].Parts.Add(new Html()
            {
                RawHtml = "1w"
            });
            nine3.Columns[4].Parts.Add(new Html()
            {
                RawHtml = "1l"
            });
            col1.Columns[1].Parts.Add(nine3);

            // 12 columns
            root.AddPart(new Html()
            {
                RawHtml = "After Others"
            });
            ColumnContainer r1 = new ColumnContainer(root);

            r1.SetColumns("1,1,1,1,1,1,1,1,1,1,1,1");
            for (int i = 0; i < 12; i++)
            {
                r1.Columns[i].Parts.Add(new Html()
                {
                    RawHtml = "1"
                });
            }
            root.AddPart(r1);


            // 12 columns
            root.AddPart(new Html()
            {
                RawHtml = "Smallest Columns (no gaps)"
            });
            ColumnContainer r2 = new ColumnContainer(root);

            r2.SetColumns("1w,1w,1w,1w,1w,1w,1w,1w,1w,1w,1w,1w");
            for (int i = 0; i < 12; i++)
            {
                r2.Columns[i].Parts.Add(new Html()
                {
                    RawHtml = "1"
                });
            }
            root.AddPart(r2);


            // 2 even columns
            root.AddPart(new Html()
            {
                RawHtml = "2 even columns"
            });
            ColumnContainer r3 = new ColumnContainer(root);

            r3.SetColumns("6,6");
            r3.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "6"
            });
            r3.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "6l"
            });
            root.AddPart(r3);

            // 3 even columns
            root.AddPart(new Html()
            {
                RawHtml = "3 even columns"
            });
            ColumnContainer r4 = new ColumnContainer(root);

            r4.SetColumns("4,4,4");
            r4.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "4"
            });
            r4.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "4"
            });
            r4.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "4l"
            });
            root.AddPart(r4);


            // 4 even columns
            root.AddPart(new Html()
            {
                RawHtml = "4 even columns"
            });
            ColumnContainer r4e = new ColumnContainer(root);

            r4e.SetColumns("3,3,3,3");
            r4e.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "3"
            });
            r4e.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "3"
            });
            r4e.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "3"
            });
            r4e.Columns[3].Parts.Add(new Html()
            {
                RawHtml = "3l"
            });
            root.AddPart(r4e);


            // 2 sides + middle
            root.AddPart(new Html()
            {
                RawHtml = "2 sides + middle"
            });
            ColumnContainer r5 = new ColumnContainer(root);

            r5.SetColumns("2,8,2");
            r5.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "2"
            });
            r5.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "8"
            });
            r5.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "2l"
            });
            root.AddPart(r5);

            // 2 sides wide + middle
            root.AddPart(new Html()
            {
                RawHtml = "2 sides wide + middle"
            });
            ColumnContainer r6 = new ColumnContainer(root);

            r6.SetColumns("3,6,3");
            r6.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "3"
            });
            r6.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "6"
            });
            r6.Columns[2].Parts.Add(new Html()
            {
                RawHtml = "3l"
            });
            root.AddPart(r6);

            // Side Left
            root.AddPart(new Html()
            {
                RawHtml = "Side Left"
            });
            ColumnContainer sl = new ColumnContainer(root);

            sl.SetColumns("3,9");
            sl.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "3"
            });
            sl.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "9l"
            });
            root.AddPart(sl);

            // Side Right
            root.AddPart(new Html()
            {
                RawHtml = "Side Right"
            });
            ColumnContainer sr = new ColumnContainer(root);

            sr.SetColumns("9,3");
            sr.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "9"
            });
            sr.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "3l"
            });
            root.AddPart(sr);


            // Off Balance Right
            root.AddPart(new Html()
            {
                RawHtml = "Off Balance Right"
            });
            ColumnContainer sr2 = new ColumnContainer(root);

            sr2.SetColumns("5,7");
            sr2.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "5"
            });
            sr2.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "7l"
            });
            root.AddPart(sr2);


            // Off Balance Left
            root.AddPart(new Html()
            {
                RawHtml = "Off Balance Left"
            });
            ColumnContainer sl2 = new ColumnContainer(root);

            sl2.SetColumns("7,5");
            sl2.Columns[0].Parts.Add(new Html()
            {
                RawHtml = "7"
            });
            sl2.Columns[1].Parts.Add(new Html()
            {
                RawHtml = "5l"
            });
            root.AddPart(sl2);

            root.AddPart(new Html()
            {
                RawHtml = "<p>End of Samples</p>"
            });


            return(root);
        }