//support WebPages inline helpers public static IGridColumn <T> RenderValueAs <T>(this IGridColumn <T> column, Func <T, Func <object, HelperResult> > constraint) { Func <T, string> valueContraint = a => constraint(a)(null).ToHtmlString(); return(column.RenderValueAs(valueContraint)); }
private IGridColumn <TModel> SubstituteColumn <TModel>() { IGridColumn <TModel> column = Substitute.For <IGridColumn <TModel> >(); column.RenderValueAs(Arg.Any <Func <TModel, String> >()).Returns(column); column.Sanitized(Arg.Any <Boolean>()).Returns(column); column.Encoded(Arg.Any <Boolean>()).Returns(column); column.Format(Arg.Any <String>()).Returns(column); column.Titled(Arg.Any <String>()).Returns(column); column.Css(Arg.Any <String>()).Returns(column); return(column); }
//support IHtmlString in RenderValueAs method public static IGridColumn <T> RenderValueAs <T>(this IGridColumn <T> column, Func <T, IHtmlContent> constraint) { Func <T, string> valueContraint = a => { using (var sw = new StringWriter()) { constraint(a).WriteTo(sw, HtmlEncoder.Default); return(sw.ToString()); } }; return(column.RenderValueAs(valueContraint)); }
public void AddActionLink_RendersAuthorizedActionLink() { Authorization.Provider.IsAuthorizedFor(Arg.Any <String>(), Arg.Any <String>(), Arg.Any <String>(), Arg.Any <String>()).Returns(false); Authorization.Provider.IsAuthorizedFor(Arg.Any <String>(), Arg.Any <String>(), Arg.Any <String>(), "Details").Returns(true); AllTypesView view = new AllTypesView(); Authorization.Provider = null; String actionLink = ""; column .RenderValueAs(Arg.Any <Func <AllTypesView, String> >()).Returns(column) .AndDoes(info => { actionLink = info.Arg <Func <AllTypesView, String> >().Invoke(view); }); columns.AddActionLink("Details", "fa fa-info"); String actual = actionLink; String expected = String.Format( "<a class=\"details-action\" href=\"{0}\">" + "<i class=\"fa fa-info\"></i>" + "</a>", urlHelper.Action("Details", new { id = view.Id })); Assert.AreEqual(expected, actual); }
public void AddActionLink_RendersDetailsLinkAction() { Func <AllTypesView, String> detailsFunc = null; AllTypesView view = new AllTypesView(); column .RenderValueAs(Arg.Any <Func <AllTypesView, String> >()) .Returns(column) .AndDoes(info => { detailsFunc = info.Arg <Func <AllTypesView, String> >(); }); columns.AddActionLink(LinkAction.Details); String actual = detailsFunc.Invoke(view); String expected = String.Format( "<a class=\"details-action\" href=\"{0}\">" + "<i class=\"fa fa-info\"></i>" + "</a>", urlHelper.Action("Details", new { id = view.Id })); Assert.AreEqual(expected, actual); }
public void AddActionLink_OnModelWihoutKeyPropertyThrows() { Func <Object, String> deleteFunc = null; IGridColumn <Object> objectColumn = SubstituteColumn <Object>(); IGridColumnCollection <Object> objectColumns = SubstituteColumns <Object, String>(objectColumn); objectColumn .RenderValueAs(Arg.Any <Func <Object, String> >()) .Returns(objectColumn) .AndDoes(info => { deleteFunc = info.Arg <Func <Object, String> >(); }); objectColumns.AddActionLink(LinkAction.Delete); Exception expected = Assert.Throws <Exception>(() => deleteFunc.Invoke(new Object())); Assert.AreEqual(expected.Message, "Object type does not have a key property."); }
public void AddActionLink_OnModelWihoutKeyPropertyThrows() { Func <Object, String> renderer = null; IGridColumn <Object> objectColumn = SubstituteColumn <Object>(); IGridColumnCollection <Object> objectColumns = SubstituteColumns <Object, String>(objectColumn); objectColumn .RenderValueAs(Arg.Any <Func <Object, String> >()) .Returns(objectColumn) .AndDoes(info => { renderer = info.Arg <Func <Object, String> >(); }); objectColumns.AddActionLink("Delete", "fa fa-times"); String actual = Assert.Throws <Exception>(() => renderer.Invoke(new Object())).Message; String expected = "Object type does not have a key property."; Assert.AreEqual(expected, actual); }
//support IHtmlString in RenderValueAs method public static IGridColumn <T> RenderValueAs <T>(this IGridColumn <T> column, Func <T, IHtmlString> constraint) { Func <T, string> valueContraint = a => constraint(a).ToHtmlString(); return(column.RenderValueAs(valueContraint)); }