Exemplo n.º 1
0
        public async Task EditPost_ReturnsRedirectToAction_WhenEventIsNotNullAndUserIsOrgAdmin()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);

            mockMediator.Setup(x => x.SendAsync(It.IsAny <EditRequestCommand>())).ReturnsAsync(Guid.NewGuid());

            var sut = new RequestController(mockMediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            var result = await sut.Edit(new EditRequestViewModel { EventId = eventId });

            var objResult = Assert.IsType <RedirectToActionResult>(result);

            objResult.ActionName.ShouldBe("Requests");
            objResult.ControllerName.ShouldBe("Event");
        }
Exemplo n.º 2
0
        public async Task Create_ReturnsCorrectViewAndViewModel_WhenEventIsNotNullAndUserIsOrgAdmin()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);

            var sut = new RequestController(mockMediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            var result = await sut.Create(It.IsAny <int>());

            var objResult = Assert.IsType <ViewResult>(result);

            objResult.ViewName.ShouldBe("Edit");

            var resultViewModel = Assert.IsType <EditRequestViewModel>(objResult.ViewData.Model);

            resultViewModel.EventId.ShouldBe(viewModel.Id);
            resultViewModel.OrganizationId.ShouldBe(viewModel.OrganizationId);

            var viewBagTitle = objResult.ViewData["Title"];

            viewBagTitle.ShouldNotBeNull();
            viewBagTitle.ShouldBe(RequestController.CreateRequestTitle);
        }
Exemplo n.º 3
0
        public async Task EditPost_SendsEditRequestCommand_WhenEventIsNotNullAndUserIsOrgAdmin()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);

            EditRequestCommand editRequestCommand = null; // will be assigned from the Moq callback

            mockMediator.Setup(x => x.SendAsync(It.IsAny <EditRequestCommand>())).ReturnsAsync(Guid.NewGuid()).Callback <EditRequestCommand>(cmd => editRequestCommand = cmd).Verifiable();

            var sut = new RequestController(mockMediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            await sut.Edit(new EditRequestViewModel { EventId = eventId });

            mockMediator.Verify(x => x.SendAsync(It.IsAny <EditRequestCommand>()), Times.Once);

            editRequestCommand.RequestModel.EventId.ShouldBe(eventId);
        }
Exemplo n.º 4
0
        public async Task EditPost_SendsEditRequestCommandWithCorrrectModel_WhenModelStateIsValid_AndEventIsNotNull_AndUserIsAuthorized_AndPhoneNumberIsValid()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, true, false, false));

            var sut = new RequestController(mediator.Object);

            var model = new EditRequestViewModel {
                EventId = eventId
            };

            await sut.Edit(model);

            mediator.Verify(x => x.SendAsync(It.Is <EditRequestCommand>(y => y.RequestModel == model)), Times.Once);
        }
Exemplo n.º 5
0
        public async Task Create_ReturnsCorrectViewAndViewModel_WhenEventIsNotNullAndUserIsAuthorized()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Create(It.IsAny <int>()) as ViewResult;

            result.ViewName.ShouldBe("Edit");

            var resultViewModel = result.ViewData.Model as EditRequestViewModel;

            resultViewModel.EventId.ShouldBe(viewModel.Id);
            resultViewModel.OrganizationId.ShouldBe(viewModel.OrganizationId);

            var viewBagTitle = result.ViewData["Title"];

            viewBagTitle.ShouldBe(RequestController.CreateRequestTitle);
        }
Exemplo n.º 6
0
        public async Task CreateCallsValidatorWithCorrectItineraryEditModelAndEventSummaryModel()
        {
            var model = new ItineraryEditViewModel
            {
                EventId = 1,
                Name    = "Test",
                Date    = new DateTime(2016, 06, 01)
            };

            var mediator = new Mock <IMediator>();

            var eventSummaryModel = new EventSummaryViewModel
            {
                Id = 1, Name = "Event", OrganizationId = 1, StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31))
            };

            mediator.Setup(x => x.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(eventSummaryModel);
            mediator.Setup(x => x.SendAsync(It.IsAny <EditItineraryCommand>())).ReturnsAsync(1);

            var mockValidator = new Mock <IItineraryEditModelValidator>();

            mockValidator.Setup(mock => mock.Validate(model, eventSummaryModel)).Returns(new List <KeyValuePair <string, string> >()).Verifiable();

            var sut = new ItineraryController(mediator.Object, mockValidator.Object);

            sut.SetClaims(new List <Claim>
            {
                new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()),
                new Claim(AllReady.Security.ClaimTypes.Organization, "1")
            });

            await sut.Create(model);

            mockValidator.Verify(x => x.Validate(model, eventSummaryModel), Times.Once);
        }
Exemplo n.º 7
0
        public async Task EditPost_ReturnsViewResult_WhenModelStateIsNotValid()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);

            var sut = new RequestController(mediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());
            sut.ModelState.AddModelError("test", "test error");

            var result = await sut.Edit(new EditRequestViewModel { EventId = eventId }) as ViewResult;

            result.ViewName.ShouldBe("Edit");
        }
Exemplo n.º 8
0
        public async Task EditPost_ReturnsRedirectToActionWithTheCorrectAcitonAndControllerName_WhenModelStateIsValid_AndEventIsNotNull_AndUserIsAuthorized_AndPhoneNumberIsValid()
        {
            const int eventId   = 1;
            const int orgId     = 1;
            var       viewModel = new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(viewModel);
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableEventQuery>())).ReturnsAsync(new FakeAuthorizableEvent(false, false, false, true));
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, true, false, false));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Edit(new EditRequestViewModel { EventId = eventId }) as RedirectToActionResult;

            result.ActionName.ShouldBe("Requests");
            result.ControllerName.ShouldBe("Event");
        }
Exemplo n.º 9
0
        public List <KeyValuePair <string, string> > Validate(ItineraryEditViewModel model, EventSummaryViewModel eventSummary)
        {
            var result = new List <KeyValuePair <string, string> >();

            var itineraryDateConverted = ConvertIntineraryDateToEventsTimeZone(model.Date, eventSummary.TimeZoneId);

            if (itineraryDateConverted.Date < eventSummary.StartDateTime.Date)
            {
                result.Add(new KeyValuePair <string, string>(nameof(model.Date), $"Date cannot be earlier than the event start date {eventSummary.StartDateTime.Date:d}"));
            }

            if (itineraryDateConverted.Date > eventSummary.EndDateTime.Date)
            {
                result.Add(new KeyValuePair <string, string>(nameof(model.Date), $"Date cannot be later than the event end date {eventSummary.EndDateTime.Date:d}"));
            }

            return(result);
        }
Exemplo n.º 10
0
        public List <KeyValuePair <string, string> > Validate(ItineraryEditViewModel model, EventSummaryViewModel eventSummary)
        {
            var result = new List <KeyValuePair <string, string> >();

            if (model.Date < eventSummary.StartDateTime.Date)
            {
                result.Add(new KeyValuePair <string, string>(nameof(model.Date), "Date cannot be earlier than the event start date " + eventSummary.StartDateTime.Date.ToString("d")));
            }

            if (model.Date > eventSummary.EndDateTime.Date)
            {
                result.Add(new KeyValuePair <string, string>(nameof(model.Date), "Date cannot be later than the event end date " + eventSummary.EndDateTime.Date.ToString("d")));
            }

            return(result);
        }