Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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)));
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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");
        }