public void AddActionLink_RendersAuthorizedActionLink() { String actionLink = ""; AllTypesView view = new AllTypesView(); Authorization.Provider = Substitute.For <IAuthorizationProvider>(); columns.Grid.HttpContext = HttpContextFactory.CreateHttpContextBase(); UrlHelper urlHelper = new UrlHelper(columns.Grid.HttpContext.Request.RequestContext); Authorization.Provider.IsAuthorizedFor(Arg.Any <String>(), Arg.Any <String>(), Arg.Any <String>(), "Details").Returns(true); columns .Add(Arg.Any <Expression <Func <AllTypesView, String> > >()) .Returns(column) .AndDoes(info => { actionLink = info.Arg <Expression <Func <AllTypesView, String> > >().Compile().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.Equal(expected, actual); }
public static IGridColumn <T> AddProperty <T, TProperty>(this IGridColumns <T> columns, Expression <Func <T, TProperty> > expression) { return(columns .Add(expression) .Css(GetCssClassFor <TProperty>()) .Titled(ResourceProvider.GetPropertyTitle(expression))); }
public static IGridColumn <T> AddActionLink <T>(this IGridColumns <T> columns, String action, String iconClass) where T : class { if (!IsAuthorizedToView(columns.Grid, action)) { return(new GridColumn <T, String>(columns.Grid, model => "")); } return(columns .Add(model => GetLink(columns.Grid, model, action, iconClass)) .Css("action-cell") .Encoded(false)); }
private IGridColumns <TModel> SubstituteColumns <TModel, TProperty>(IGridColumn <TModel> column) { IGridColumns <TModel> columns = Substitute.For <IGridColumns <TModel> >(); columns.Add(Arg.Any <Expression <Func <TModel, String> > >()).Returns(column); columns.Add(Arg.Any <Expression <Func <TModel, Boolean> > >()).Returns(column); columns.Add(Arg.Any <Expression <Func <TModel, Boolean?> > >()).Returns(column); columns.Add(Arg.Any <Expression <Func <TModel, DateTime> > >()).Returns(column); columns.Add(Arg.Any <Expression <Func <TModel, DateTime?> > >()).Returns(column); columns.Add(Arg.Any <Expression <Func <TModel, TProperty> > >()).Returns(column); return(columns); }
public void AddActionLink_OnModelWihoutKeyPropertyThrows() { Func <Object, String> renderer = null; IGridColumn <Object> column = SubstituteColumn <Object>(); IGridColumns <Object> columns = SubstituteColumns <Object, String>(column); columns .Add(Arg.Any <Expression <Func <Object, String> > >()) .Returns(column) .AndDoes(info => { renderer = info.Arg <Expression <Func <Object, String> > >().Compile(); }); columns.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.Equal(expected, actual); }