public async Task EditPostReturnsCorrectViewAndViewModelWhenValidatorReturnsError() { var model = new EditViewModel(); var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(It.IsAny <EditViewModel>())) .ReturnsAsync(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("key", "value") }); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(Mock.Of <IMediator>(), validator.Object) { Url = urlHelper.Object }; var result = await sut.Edit(model) as ViewResult; var modelResult = result.ViewData.Model as EditViewModel; Assert.IsType <ViewResult>(result); Assert.Equal(modelResult, model); }
public async Task EditPostRedirectsToCorrectAction_WhenUpdatingTask() { var model = new EditViewModel { Id = 1 }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskCommand>())).ReturnsAsync(1); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(false, true, false, false)); var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(It.IsAny <EditViewModel>())).ReturnsAsync(new List <KeyValuePair <string, string> >()); var sut = new VolunteerTaskController(mediator.Object, validator.Object); var result = await sut.Edit(model) as RedirectToActionResult; var routeValues = new Dictionary <string, object> { ["id"] = model.Id }; Assert.Equal("VolunteerTask", result.ControllerName); Assert.Equal(nameof(VolunteerTaskController.Details), result.ActionName); Assert.Equal(result.RouteValues, routeValues); }
public async Task EditPostInvokesValidateOnTaskSummaryModelValidatorWithCorrectParameters() { var model = new EditViewModel { EndDateTime = DateTimeOffset.Now.AddDays(-1), StartDateTime = DateTimeOffset.Now.AddDays(1), EventId = 1 }; var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(model)).ReturnsAsync(new List <KeyValuePair <string, string> >()).Verifiable(); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(null, validator.Object) { Url = urlHelper.Object }; sut.AddModelStateError(); await sut.Edit(model); validator.Verify(); }
public async Task EditPostAddsCorrectModelStateErrorWhenValidatorReturnsError() { const string errorKey = "ErrorKey"; const string errorValue = "ErrorValue"; var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(It.IsAny <EditViewModel>())) .ReturnsAsync(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>(errorKey, errorValue) }); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(null, validator.Object) { Url = urlHelper.Object }; await sut.Edit(new EditViewModel() { EventId = 1, Id = 1 }); var modelStateErrorCollection = sut.ModelState.GetErrorMessagesByKey(errorKey); Assert.Equal(modelStateErrorCollection.Single().ErrorMessage, errorValue); }
public async Task EditGetReturnsCorrectViewModelAndView() { var editViewModel = new EditViewModel { }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskQuery>())).ReturnsAsync(editViewModel); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(true, false, false, false)); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(mediator.Object, null) { Url = urlHelper.Object }; var result = await sut.Edit(It.IsAny <int>()) as ViewResult; var modelResult = result.ViewData.Model as EditViewModel; Assert.IsType <ViewResult>(result); Assert.IsType <EditViewModel>(modelResult); Assert.Equal(modelResult, editViewModel); }
public async Task EditGetAssignsCancelUrlToModel() { const string cancelUrl = "url"; var model = new EditViewModel { EventId = 1 }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskQuery>())).ReturnsAsync(model); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(true, false, false, false)); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(cancelUrl); var sut = new VolunteerTaskController(mediator.Object, null) { Url = urlHelper.Object }; var result = await sut.Edit(It.IsAny <int>()) as ViewResult; var modelResult = result.Model as EditViewModel; Assert.Equal(modelResult.CancelUrl, cancelUrl); }
public async Task EditGetReturnsForbidResultWhenUserIsNotAuthorized() { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskQuery>())).ReturnsAsync(new EditViewModel()); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(false, false, false, false)); var sut = new VolunteerTaskController(mediator.Object, null); sut.SetDefaultHttpContext(); var result = await sut.Edit(It.IsAny <int>()); Assert.IsType <ForbidResult>(result); }
public async Task EditPostReturnsForbidResultWhenModelStateIsValidAndUserIsNotAuthorized() { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <AllReady.Areas.Admin.Features.Events.AuthorizableEventQuery>())) .ReturnsAsync(new FakeAuthorizableEvent(false, false, false, false)); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(false, false, false, false)); var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(It.IsAny <EditViewModel>())).ReturnsAsync(new List <KeyValuePair <string, string> >()); var sut = new VolunteerTaskController(mediator.Object, validator.Object); sut.SetDefaultHttpContext(); var result = await sut.Edit(new EditViewModel()); Assert.IsType <ForbidResult>(result); }
public async Task EditPostSendsEditTaskCommandWithCorrectModel_WhenModelStateIsValidAndUserIsAuthorized() { var model = new EditViewModel { }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskCommand>())).ReturnsAsync(1); mediator.Setup(x => x.SendAsync(It.IsAny <AllReady.Areas.Admin.Features.Events.AuthorizableEventQuery>())) .ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true)); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(false, true, false, false)); var validator = new Mock <IValidateVolunteerTaskEditViewModelValidator>(); validator.Setup(x => x.Validate(It.IsAny <EditViewModel>())).ReturnsAsync(new List <KeyValuePair <string, string> >()); var sut = new VolunteerTaskController(mediator.Object, validator.Object); await sut.Edit(model); mediator.Verify(x => x.SendAsync(It.Is <EditVolunteerTaskCommand>(y => y.VolunteerTask == model))); }
public async Task EditGetSendsEditTaskQueryWithCorrectTaskId() { const int volunteerTaskId = 1; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskQuery>())).ReturnsAsync(new EditViewModel { }); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(true, false, false, false)); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(mediator.Object, null) { Url = urlHelper.Object }; await sut.Edit(volunteerTaskId); mediator.Verify(x => x.SendAsync(It.Is <EditVolunteerTaskQuery>(y => y.VolunteerTaskId == volunteerTaskId)), Times.Once); }
public async Task EditGetPopulatesCorrectTitleOnViewBag() { var model = new EditViewModel { EventId = 1 }; var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny <EditVolunteerTaskQuery>())).ReturnsAsync(model); mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableTaskQuery>())).ReturnsAsync(new FakeAuthorizableTask(true, false, false, false)); var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(x => x.Action(It.IsAny <UrlActionContext>())).Returns(It.IsAny <string>()); var sut = new VolunteerTaskController(mediator.Object, null) { Url = urlHelper.Object }; await sut.Edit(It.IsAny <int>()); Assert.Equal(sut.ViewBag.Title, "Edit Task"); }