public async Task EditPost_SendsValidatePhoneNumberRequestWithCorrectData_WhenModelStateIsValid_AndEventIsNotNull_AndUserIsOrgAdmin()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = true, PhoneNumberE164 = model.Phone
            });

            var sut = new RequestController(mediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            await sut.Edit(model);

            mediator.Verify(x => x.SendAsync(It.Is <ValidatePhoneNumberRequestCommand>(y => y.PhoneNumber == model.Phone && y.ValidateType)), Times.Once);
        }
Beispiel #2
0
        public async Task EditPost_ReturnsCorrectViewAndViewModel_WhenPhoneNumberValidationFails()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = false
            });
            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(model) as ViewResult;

            Assert.Equal(result.ViewName, "Edit");
            Assert.IsType <EditRequestViewModel>(result.Model);
        }
Beispiel #3
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);
        }
        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);
        }
Beispiel #5
0
        public async Task EditPost_AddsCorrectErrorToModelState_WhenPhoneNumberValidationFails()
        {
            const int eventId = 1;
            const int orgId   = 1;
            var       model   = new EditRequestViewModel {
                EventId = eventId, Phone = "111-111-1111"
            };

            var mediator = new Mock <IMediator>();

            mediator.Setup(mock => mock.SendAsync(It.IsAny <EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel {
                Id = eventId, OrganizationId = orgId
            });
            mediator.Setup(mock => mock.SendAsync(It.IsAny <ValidatePhoneNumberRequestCommand>())).ReturnsAsync(new ValidatePhoneNumberResult {
                IsValid = false
            });
            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(model) as ViewResult;

            Assert.Equal(result.ViewData.ModelState.ErrorCount, 1);
            Assert.Equal(result.ViewData.ModelState[nameof(model.Phone)].ValidationState, ModelValidationState.Invalid);
            Assert.Equal(result.ViewData.ModelState[nameof(model.Phone)].Errors.Single().ErrorMessage, "Unable to validate phone number");
        }
        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");
        }
Beispiel #7
0
        public async Task EditGet_SendsEditRequestQuery_WithCorrectArguments()
        {
            var eventId  = Guid.NewGuid();
            var mediator = new Mock <IMediator>();

            var sut = new RequestController(mediator.Object);
            await sut.Edit(eventId);

            mediator.Verify(x => x.SendAsync(It.Is <EditRequestQuery>(y => y.Id == eventId)));
        }
Beispiel #8
0
        public async Task EditGet_ReturnsNotFound_WhenEditRequestQueryReturnsNull()
        {
            var eventId = Guid.NewGuid();

            var mediator = new Mock <IMediator>();
            var sut      = new RequestController(mediator.Object);

            var result = await sut.Edit(eventId);

            Assert.IsType <NotFoundResult>(result);
        }
Beispiel #9
0
        public async Task EditPost_ReturnsBadRequest_WhenEventSummaryQueryReturnsNull()
        {
            var mediator = new Mock <IMediator>();

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

            var sut    = new RequestController(mediator.Object);
            var result = await sut.Edit(new EditRequestViewModel { EventId = 1 });

            Assert.IsType <BadRequestObjectResult>(result);
        }
Beispiel #10
0
        public async Task EditPost_SendsEventSummaryQuery_WithCorrectArguments()
        {
            var viewModel = new EditRequestViewModel {
                EventId = 1
            };
            var mediator = new Mock <IMediator>();
            var sut      = new RequestController(mediator.Object);
            await sut.Edit(viewModel);

            mediator.Verify(x => x.SendAsync(It.Is <EventSummaryQuery>(y => y.EventId == viewModel.EventId)));
        }
Beispiel #11
0
        public async Task EditGet_ReturnsForbidResult_WhenUserIsNotAuthorized()
        {
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(new EditRequestViewModel());
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(false, false, false, false));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Edit(Guid.NewGuid());

            Assert.IsType <ForbidResult>(result);
        }
        public async Task EditPost_ReturnsBadRequest_WhenEventSummaryQueryReturnsNull()
        {
            var mockMediator = new Mock <IMediator>();

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

            var sut    = new RequestController(mockMediator.Object);
            var result = await sut.Edit(new EditRequestViewModel { EventId = 1 });

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

            objResult.StatusCode.ShouldNotBeNull();
            objResult.StatusCode.Value.ShouldBe(StatusCodes.Status400BadRequest);
        }
        public async Task EditGet_ReturnsHttpUnauthorizedResult_WhenUserIsNotOrgAdmin()
        {
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(new EditRequestViewModel());

            var sut = new RequestController(mediator.Object);

            sut.MakeUserNotAnOrgAdmin();

            var result = await sut.Edit(Guid.NewGuid());

            Assert.IsType <UnauthorizedResult>(result);
        }
        public async Task EditPost_ReturnsHttpUnauthorizedResult_WhenUserIsNotOrgAdmin()
        {
            var mediator = new Mock <IMediator>();

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

            var sut = new RequestController(mediator.Object);

            sut.MakeUserNotAnOrgAdmin();

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

            Assert.IsType <UnauthorizedResult>(result);
        }
Beispiel #15
0
        public async Task EditGet_ReturnsViewResult_WhenRequestIsFoundAndUserIsAuthorized()
        {
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(new EditRequestViewModel {
                Name = "test"
            });
            mediator.Setup(x => x.SendAsync(It.IsAny <AuthorizableRequestQuery>())).ReturnsAsync(new FakeAuthorizableRequest(true, false, false, false));

            var sut = new RequestController(mediator.Object);

            var result = await sut.Edit(Guid.NewGuid()) as ViewResult;

            result.ViewName.ShouldBe("Edit");
            result.ViewData["Title"].ShouldBe("Edit test");
        }
        public async Task EditGet_ReturnsNotFound_WhenEditRequestQueryReturnsNull()
        {
            var eventId = Guid.NewGuid();

            EditRequestQuery eventSummaryQuery = null; // will be assigned from the Moq callback
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(null).Callback <EditRequestQuery>(cmd => eventSummaryQuery = cmd).Verifiable();

            var sut = new RequestController(mockMediator.Object);

            var result = await sut.Edit(eventId);

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

            objResult.StatusCode.ShouldBe(StatusCodes.Status404NotFound);
        }
        public async Task EditGet_SendsEditRequestQueryQuery_WithCorrectArguments()
        {
            var eventId = Guid.NewGuid();

            EditRequestQuery eventSummaryQuery = null; // will be assigned from the Moq callback
            var mockMediator = new Mock <IMediator>();

            mockMediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(null).Callback <EditRequestQuery>(cmd => eventSummaryQuery = cmd).Verifiable();

            var sut = new RequestController(mockMediator.Object);

            await sut.Edit(eventId);

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

            eventSummaryQuery.Id.ShouldBe(eventId);
        }
        public async Task EditGet_ReturnsViewResult_WhenRequestIsFoundAndUserIsOrgAdmin()
        {
            const int orgId = 1;

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.SendAsync(It.IsAny <EditRequestQuery>())).ReturnsAsync(new EditRequestViewModel {
                OrganizationId = orgId, Name = "test"
            });

            var sut = new RequestController(mediator.Object);

            sut.MakeUserAnOrgAdmin(orgId.ToString());

            var result = await sut.Edit(Guid.NewGuid()) as ViewResult;

            result.ViewName.ShouldBe("Edit");
            result.ViewData["Title"].ShouldBe("Edit test");
        }
Beispiel #19
0
        public void CanApproveDraftRequest()
        {
            //Act
            _requestController.ApproveRequest(1);
            var noCommdodityOrBeneficiary = _requestController.CheckBeneficiaryNoAndCommodity(1);

            // var reqStatus = regionalRequests[0].Status;
            var resut = (ViewResult)_requestController.Edit(1);

            //Assert

            Assert.IsInstanceOf <RegionalRequest>(resut.Model);
            Assert.IsFalse(noCommdodityOrBeneficiary);
            //Assert.AreEqual((int)RegionalRequestStatus.Approved, ((RegionalRequest)resut.Model).Status);
        }
Beispiel #20
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");
        }
        public void ReviewControllerAcceptReturnsView_ExpectedSuccess()
        {
            // Arrange
            Request request = new Request
            {
                RequestId       = 7,
                RequestStatusId = 4,
                PassengerId     = 3,
                PostId          = 10
            };

            var _mock = new Mock <IRequestLogic>();

            _mock.Setup(x => x.GetSingleRequest(It.IsAny <Int32>())).ReturnsAsync(GetRequest());
            var controllerUnderTest = new RequestController(_context, _mock.Object);

            // Act
            var result = controllerUnderTest.Edit(1, request);

            // Assert
            var viewResult = Assert.IsType <Task <IActionResult> >(result);
        }
Beispiel #22
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");
        }