public static MvcHtmlString PaginacaoLinks(this HtmlHelper html, Paginacao paginacao, Func<int,string> paginaUrl ) { StringBuilder resultado = new StringBuilder(); for (int i = 1; i <= paginacao.TotalPaginas; i++) { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", paginaUrl(i)); tag.InnerHtml = i.ToString(); if (i == paginacao.PaginaAtual) { //se for a página atual, adiciona classes do bootstrap tag.AddCssClass("selected"); tag.AddCssClass("btn-primary"); } tag.AddCssClass("btn btn-default"); resultado.Append(tag); } return MvcHtmlString.Create(resultado.ToString()); }
public void TestePaginacaoGeradaCorretamente() { //Testando com AAA (arrange, Act, Assert) //Arrange (preparação) HtmlHelper html = null; Paginacao paginacao = new Paginacao { PaginaAtual = 2, ItensPorPagina = 10, ItensTotal = 28 }; Func<int, string> paginaUrl = i => "Pagina" + i; //Act (estimular sistema sendo testado) MvcHtmlString resultado = html.PaginacaoLinks(paginacao, paginaUrl); //Assert (verificar se resultados obtidos = resultados esperados) Assert.AreEqual( @"<a class=""btn btn-default"" href=""Pagina1"">1</a>" + @"<a class=""btn btn-default btn-primary selected"" href=""Pagina2"">2</a>" + @"<a class=""btn btn-default"" href=""Pagina3"">3</a>" , resultado.ToString()); }