public void ProcessOnePageTest() { var mg = MockHtmlGenerator(); var viewContext = GetViewContext(); var Routes = new Dictionary <string, string>(); mg.Setup(x => x.GenerateActionLink(viewContext, It.IsAny <string>(), null, null, null, null, null, It.IsAny <Dictionary <string, string> >(), It.IsAny <Object>())) .Returns((ViewContext v, string text, string a, string c, string p, string h, string pr, Dictionary <string, string> routes, object attr) => { var tag = new TagBuilder("div"); tag.InnerHtml.Append(text); return(tag); }); var options = new CoreGridFSPOptions(); options.PaginationOptions.Count = 5; var p = new PaginationTagHelper(mg.Object); p.Options = options; p.ViewContext = viewContext; var output = GetTagHelperOutput(); p.Process(GetTagHelperContext(), output); Assert.IsNotNull(output); var expected = "<ul class=\"pagination flex-wrap\"><li class=\"disabled page-item\"><div aria-label=\"First\" class=\"page-link\"><span aria-hidden=\"true\">|<</span><span class=\"sr-only\">First</span></div></li><li class=\"disabled page-item\"><div aria-label=\"Next\" class=\"page-link\"><span aria-hidden=\"true\"><</span><span class=\"sr-only\">Next</span></div></li><li class=\"active page-item\"><div class=\"page-link\">1</div></li><li class=\"disabled page-item\"><div aria-label=\"Previous\" class=\"page-link\"><span aria-hidden=\"true\">></span><span class=\"sr-only\">Previous</span></div></li><li class=\"disabled page-item\"><div aria-label=\"Last\" class=\"page-link\"><span aria-hidden=\"true\">>|</span><span class=\"sr-only\">Last</span></div></li><li class=\"page-item\"><button class=\"btn-outline-secondary btn\" type=\"button\">Page Size 10</button><button aria-expanded=\"false\" aria-haspopup=\"true\" class=\"dropdown-toggle-split dropdown-toggle btn-outline-secondary btn\" data-toggle=\"dropdown\" type=\"button\"><span class=\"sr-only\">Toggle Dropdown</span></button><div class=\"dropdown-menu\"><div aria-label=\"All\" class=\"page-link dropdown-item\">All</div><div aria-label=\"5\" class=\"page-link dropdown-item\">5</div><div aria-label=\"10\" class=\"page-link dropdown-item\">10</div><div aria-label=\"20\" class=\"page-link dropdown-item\">20</div><div aria-label=\"50\" class=\"page-link dropdown-item\">50</div><div aria-label=\"100\" class=\"page-link dropdown-item\">100</div></div></li></ul>"; Assert.AreEqual(expected, output.Content.GetContent()); }
public void Process_OnFirstPage_GeneratesExpectedOutput() { // Arrange var pth = new PaginationTagHelper(); pth.Page = 1; pth.PageSize = 10; pth.TotalItems = 50; pth.Url = "/home/pager"; var query = QueryHelpers.ParseQuery($"page={pth.Page}&pageSize={pth.PageSize}"); request.Setup(x => x.Query).Returns(new QueryCollection(query)); context.Setup(x => x.HttpContext.Request).Returns(request.Object); viewContext.HttpContext = context.Object.HttpContext; pth.ViewContext = viewContext; var tagHelperContext = new TagHelperContext( new TagHelperAttributeList(), new Dictionary <object, object>(), Guid.NewGuid().ToString("N")); var tagHelperOutput = new TagHelperOutput("pagination", new TagHelperAttributeList(), (result, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetHtmlContent(string.Empty); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); // Act pth.Process(tagHelperContext, tagHelperOutput); // Assert var expectedHtml = $"<ul class=\"pagination\">" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.FirstPageAriaLabel}\">{pth.FirstPageLinkText}</a></li>" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.PreviousPageAriaLabel}\">{pth.PreviousLinkText}</a></li>" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.SkipBackAriaLabel.Replace("{0}", "1")}\">{pth.SkipBackPageLink}</a></li>" + $"<li class=\"page-item active\"><a class=\"page-link\" aria-current=\"true\" aria-label=\"{pth.CurrentPageAriaLabel} 1\" href=\"/home/pager?page=1&pageSize={pth.PageSize}\">1</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 2\" href=\"/home/pager?page=2&pageSize={pth.PageSize}\">2</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 3\" href=\"/home/pager?page=3&pageSize={pth.PageSize}\">3</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 4\" href=\"/home/pager?page=4&pageSize={pth.PageSize}\">4</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 5\" href=\"/home/pager?page=5&pageSize={pth.PageSize}\">5</a></li>" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.SkipForwardAriaLabel.Replace("{0}", "5")}\">{pth.SkipForwardPageLink}</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.NextPageAriaLabel}\" href=\"/home/pager?page=2&pageSize={pth.PageSize}\">{pth.NextLinkText}</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.LastPageAriaLabel}\" href=\"/home/pager?page=5&pageSize={pth.PageSize}\">{pth.LastPageLinkText}</a></li>" + $"</ul>"; var actualHtml = tagHelperOutput.Content.GetContent(); Assert.Equal(expectedHtml, actualHtml); }
public void PaginationTagHelperTest() { var mg = MockHtmlGenerator(); var p = new PaginationTagHelper(mg.Object); p.Options = new CoreGridFSPOptions(); Assert.IsNotNull(p.Options); Assert.IsTrue(p.Options.PaginationOptions.AllowAllPageSize); Assert.AreEqual(5, p.Options.PaginationOptions.AllowedPageSizes.Length); Assert.AreEqual(0, p.Options.PaginationOptions.Count); Assert.AreEqual(10, p.Options.PaginationOptions.PageSize); }
public void Process_NoPageResults_GeneratesExpectedOutput() { // Arrange var pth = new PaginationTagHelper(); pth.Page = 1; pth.PageSize = 10; pth.TotalItems = 0; pth.Url = "/home/pager"; var query = QueryHelpers.ParseQuery($"page={pth.Page}&pageSize={pth.PageSize}"); request.Setup(x => x.Query).Returns(new QueryCollection(query)); context.Setup(x => x.HttpContext.Request).Returns(request.Object); viewContext.HttpContext = context.Object.HttpContext; pth.ViewContext = viewContext; var tagHelperContext = new TagHelperContext( new TagHelperAttributeList(), new Dictionary <object, object>(), Guid.NewGuid().ToString("N")); var tagHelperOutput = new TagHelperOutput("pagination", new TagHelperAttributeList(), (result, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetHtmlContent(string.Empty); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); // Act pth.Process(tagHelperContext, tagHelperOutput); // Assert var expectedHtml = ""; var actualHtml = tagHelperOutput.Content.GetContent(); Assert.Equal(expectedHtml, actualHtml); }
public static void SetPaginationContext(this TagHelperContext context, PaginationTagHelper tagHelper) { if (context.Items.ContainsKey(PaginationContext)) context.Items[PaginationContext] = tagHelper; else context.Items.Add(PaginationContext, tagHelper); }
public void Process_AjaxRequest_GeneratesExpectedOutput() { // Arrange var ajaxOptionsTagHelper = new AjaxOptionsTagHelper(); ajaxOptionsTagHelper.UpdateTargetId = "pagedContent"; ajaxOptionsTagHelper.OnBegin = "showAjaxLoader()"; ajaxOptionsTagHelper.OnComplete = "hideAjaxLoader()"; var pth = new PaginationTagHelper(); pth.Page = 1; pth.PageSize = 5; pth.TotalItems = 50; pth.Url = "/home/ajaxpager"; pth.AjaxOptions = ajaxOptionsTagHelper; var query = QueryHelpers.ParseQuery($"page={pth.Page}&pageSize={pth.PageSize}"); request.Setup(x => x.Query).Returns(new QueryCollection(query)); context.Setup(x => x.HttpContext.Request).Returns(request.Object); viewContext.HttpContext = context.Object.HttpContext; pth.ViewContext = viewContext; var tagHelperContext = new TagHelperContext( new TagHelperAttributeList(), new Dictionary <object, object>(), Guid.NewGuid().ToString("N")); var tagHelperOutput = new TagHelperOutput("pagination", new TagHelperAttributeList(), (result, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetHtmlContent(string.Empty); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); // Act pth.Process(tagHelperContext, tagHelperOutput); // Assert var expectedHtml = $"<ul class=\"pagination\">" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.FirstPageAriaLabel}\">«</a></li>" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.PreviousPageAriaLabel}\">‹ Previous</a></li>" + $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.SkipBackAriaLabel.Replace("{0}", "1")}\">..</a></li>" + $"<li class=\"page-item active\"><a class=\"page-link\" aria-current=\"true\" aria-label=\"{pth.CurrentPageAriaLabel} 1\" href=\"/home/ajaxpager?page=1&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">1</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 2\" href=\"/home/ajaxpager?page=2&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">2</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 3\" href=\"/home/ajaxpager?page=3&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">3</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 4\" href=\"/home/ajaxpager?page=4&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">4</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 5\" href=\"/home/ajaxpager?page=5&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">5</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.SkipForwardAriaLabel.Replace("{0}", "6")}\" href=\"/home/ajaxpager?page=6&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">..</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.NextPageAriaLabel}\" href=\"/home/ajaxpager?page=2&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">Next ›</a></li>" + $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.LastPageAriaLabel}\" href=\"/home/ajaxpager?page=10&pageSize={pth.PageSize}\" data-ajax=\"true\" data-ajax-method=\"Post\" data-ajax-begin=\"{pth.AjaxOptions.OnBegin}\" data-ajax-complete=\"{pth.AjaxOptions.OnComplete}\" data-ajax-update=\"#{pth.AjaxOptions.UpdateTargetId}\" data-ajax-mode=\"replace\">»</a></li>" + $"</ul>"; var actualHtml = tagHelperOutput.Content.GetContent(); Assert.Equal(expectedHtml, actualHtml); }