Beispiel #1
0
        public void Can_Generate_Page_Links()
        {
            // Организация - определение вспомогательного метода HTML - это необходимо
            // для применения расширяющего метода
            HtmlHelper myHelper = null;

            // Организация - создание объекта PagingInfo
            Paging_Info pagingInfo = new Paging_Info
            {
                CurrentPage  = 2,
                TotalItems   = 28,
                ItemsPerPage = 10
            };

            // Организация - настройка делегата с помощью лямбда-выражения
            Func <int, string> pageUrlDelegate = i => "Page" + i;

            // Действие
            MvcHtmlString result = myHelper.PageLinks(pagingInfo, pageUrlDelegate);

            // Утверждение
            Assert.AreEqual(@"<a class=""btn btn-default"" href=""Page1"">1</a>"
                            + @"<a class=""btn btn-default btn-primary selected"" href=""Page2"">2</a>"
                            + @"<a class=""btn btn-default"" href=""Page3"">3</a>",
                            result.ToString());
        }
        public static MvcHtmlString PageLinks(this HtmlHelper html,
                                              Paging_Info Paging_Info,
                                              Func <int, string> pageUrl)
        {
            StringBuilder result = new StringBuilder();

            for (int i = 1; i <= Paging_Info.TotalPages; i++)
            {
                TagBuilder tag = new TagBuilder("a");
                tag.MergeAttribute("href", pageUrl(i));
                tag.InnerHtml = i.ToString();
                if (i == Paging_Info.CurrentPage)
                {
                    tag.AddCssClass("selected");
                    tag.AddCssClass("btn-primary");
                }
                tag.AddCssClass("btn btn-default");
                result.Append(tag.ToString());
            }
            return(MvcHtmlString.Create(result.ToString()));
        }
Beispiel #3
0
        public void Can_Send_Pagination_View_Model()
        {
            // Организация (arrange)
            Mock <ITechRepository> mock = new Mock <ITechRepository>();

            mock.Setup(m => m.Teches).Returns(new List <Tech>
            {
                new Tech {
                    TechID = 1, Name = "Tech1"
                },
                new Tech {
                    TechID = 2, Name = "Tech2"
                },
                new Tech {
                    TechID = 3, Name = "Tech3"
                },
                new Tech {
                    TechID = 4, Name = "Tech4"
                },
                new Tech {
                    TechID = 5, Name = "Tech5"
                }
            });
            TechController controller = new TechController(mock.Object);

            controller.pageSize = 3;

            // Act
            TechListViewModel result
                = (TechListViewModel)controller.List(null, 2).Model;

            // Assert
            Paging_Info pageInfo = result.Paging_Info;

            Assert.AreEqual(pageInfo.CurrentPage, 2);
            Assert.AreEqual(pageInfo.ItemsPerPage, 3);
            Assert.AreEqual(pageInfo.TotalItems, 5);
            Assert.AreEqual(pageInfo.TotalPages, 2);
        }