private static ItineraryController GetItineraryControllerWithDetailsQuery(string userType, int organizationId) { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(new ItineraryDetailsModel { Id = 1, Name = "Itinerary", EventId = 1, EventName = "Event Name", OrganizationId = 1, Date = new DateTime(2016, 07, 01) }); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, userType), new Claim(AllReady.Security.ClaimTypes.Organization, organizationId.ToString()) }); return sut; }
private static ItineraryController GetItineraryControllerWithEventSummaryQuery(string userType, int organizationId) { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EventSummaryQuery>())).ReturnsAsync(new EventSummaryModel { 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<EditItineraryCommand>())).ReturnsAsync(1); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, userType), new Claim(AllReady.Security.ClaimTypes.Organization, organizationId.ToString()) }); return sut; }
public async Task MarkCompleteSendsRequestStatusChangeCommandWithCorrectTaskSignupIdWhenOrganizationIsNotZero_AndUserIsOrgAdmin() { var itineraryId = It.IsAny<int>(); var requestId = It.IsAny<Guid>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); await sut.MarkComplete(itineraryId, requestId); mockMediator.Verify(x => x.SendAsync(It.Is<RequestStatusChangeCommand>(y => y.RequestId == requestId)), Times.Once); }
public async Task RemoveTeamMemberRedirectsToCorrectActionWithCorrectRouteValuesWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin() { var itineraryId = It.IsAny<int>(); var taskSignupId = It.IsAny<int>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); await sut.RemoveTeamMember(itineraryId, taskSignupId); mockMediator.Verify(x => x.SendAsync(It.Is<RemoveTeamMemberCommand>(y => y.TaskSignupId == taskSignupId)), Times.Once); }
public async Task EditPost_SendsEditItineraryCommand_WithCorrectItineraryEditModel() { var model = new ItineraryEditViewModel { EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryCommand>())).ReturnsAsync(0).Verifiable(); var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(new List<KeyValuePair<string, string>>()); 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.Edit(model); mediator.Verify(x => x.SendAsync(It.Is<EditItineraryCommand>(y => y.Itinerary == model)), Times.Once); }
public async Task AddTeamMemberDoesNotCallAddTeamMemberCommand_WhenSelectedTeamMemberIsZero() { var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, null); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(1, 0); mockMediator.Verify(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>()), Times.Never); }
public async Task AddRequestsSendsAddRequestsCommandWhenThereAreSelecteRequests() { var itineraryId = It.IsAny<int>(); var selectedRequests = new[]{ "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); await sut.AddRequests(itineraryId, selectedRequests); mockMediator.Verify(x => x.SendAsync(It.Is<AddRequestsCommand>(y => y.ItineraryId == itineraryId)), Times.Once); }
public async Task EditGet_ReturnsViewResult_WhenUserIsSiteAdmin() { const int orgId = 1; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryQuery>())).ReturnsAsync(new ItineraryEditViewModel { OrganizationId = orgId, Id = 100, Name = "Test"}); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "0") }); // Assert var viewResult = Assert.IsType<ViewResult>(await sut.Edit(1)); var model = viewResult.Model as ItineraryEditViewModel; model.ShouldNotBeNull(); model.Name.ShouldBe("Test"); }
public async Task AddTeamMemberSendsAddTeamMemberCommandWithCorrectParameters() { const int itineraryId = 1; const int selectedTeamMember = 1; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(1, 1); mockMediator.Verify(x => x.SendAsync(It.Is<AddTeamMemberCommand>(y => y.ItineraryId == itineraryId && y.TaskSignupId == selectedTeamMember)), Times.Once); }
public async Task AddTeamMemberRedirectsToCorrectActionWithCorrectRouteValuesWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin_AndIdOrSelectedTeamMemberIsNotZero() { const int id = 1; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.AddTeamMember(id, 1) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(ItineraryController.Details)); Assert.Equal(result.RouteValues, new Dictionary<string, object> { ["id"] = id }); }
public async Task AddRequestsReturnsHttpUnauthorizedWhenUserIsNotOrgAdmin() { var itineraryId = It.IsAny<int>(); var selectedRequests = new[]{ "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.BasicUser.ToString()) }); Assert.IsType<UnauthorizedResult>(await sut.AddRequests(itineraryId, selectedRequests)); }
public async Task SelectRequestsWithSingleParameterSetsSelectItineraryRequestsModelWithTheCorrectData() { var organizationId = 4; var itineraryRequestsModel = new SelectItineraryRequestsModel(); var itinerary = GetItineraryForSelectRequestHappyPathTests(); var returnedRequests = GetRequestsForSelectRequestHappyPathTests(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<ItineraryDetailQuery>(y => y.ItineraryId == itinerary.Id))) .ReturnsAsync(itinerary); mediator.Setup(x => x.SendAsync(It.IsAny<RequestListItemsQuery>())) .ReturnsAsync(returnedRequests); mediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())) .ReturnsAsync(organizationId); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, organizationId.ToString()) }); var view = await sut.SelectRequests(itinerary.Id, itineraryRequestsModel); RunSelectRequestsHappyPathTests(view, itinerary, returnedRequests); }
public async Task MarkCompleteReturnsRedirectToAction_WithActionName_Details() { var itineraryId = It.IsAny<int>(); var requestId = It.IsAny<Guid>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.MarkComplete(itineraryId, requestId); var actionResult = (RedirectToActionResult)result; Assert.Equal("Details", actionResult.ActionName); }
public async Task CreateReturnsOkResultWhenUserIsSiteAdmin_AndModelIsValid_AndSuccessfulAdd() { const int orgId = 1; //var sut = GetItineraryControllerWithEventSummaryQuery(UserType.SiteAdmin.ToString(), 0); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel { OrganizationId = orgId }); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryCommand>())).ReturnsAsync(orgId); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "0") }); Assert.IsType<OkObjectResult>(await sut.Create(new ItineraryEditViewModel())); }
public async Task AddRequestsRedirectsToCorrectActionWithCorrectRouteValuesWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin_AndThereAreSelectedRequests() { var itineraryId = It.IsAny<int>(); var selectedRequests = new[]{ "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.AddRequests(itineraryId, selectedRequests) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(ItineraryController.Details)); Assert.Equal(result.RouteValues, new Dictionary<string, object> { ["id"] = itineraryId }); }
public async Task CreateReturnsHttpBadRequestResultWhenEditItineraryReturnsZero() { var model = new ItineraryEditViewModel { EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<EventSummaryQuery>())).ReturnsAsync(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<EditItineraryCommand>())).ReturnsAsync(0); var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).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") }); var result = await sut.Create(model); Assert.IsType<BadRequestResult>(result); }
public async Task ConfirmRemoveTeamMemberReturnsHttpNotFoundWhenTaskSignupSummaryModelIsNull() { var itineraryId = It.IsAny<int>(); var taskSignupId = It.IsAny<int>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); mockMediator.Setup(x => x.SendAsync(It.IsAny<TaskSignupSummaryQuery>())).ReturnsAsync(null); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); Assert.IsType<HttpNotFoundResult>(await sut.ConfirmRemoveTeamMember(itineraryId, taskSignupId)); }
public async Task EditPost_ReturnsViewWithModel_WhenValidatonFails() { var model = new ItineraryEditViewModel { EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); var validatorError = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("key", "value") }; var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(validatorError); 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") }); var result = await sut.Edit(model); var viewResult = Assert.IsType<ViewResult>(result); var resultViewModel = viewResult.ViewData.Model; Assert.IsType<ItineraryEditViewModel>(resultViewModel); Assert.Equal(resultViewModel, model); }
public async Task ConfirmRemoveTeamMemberReturnsTheCorrectViewAndViewModel() { var itineraryId = It.IsAny<int>(); var taskSignupId = It.IsAny<int>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); mockMediator.Setup(x => x.SendAsync(It.IsAny<TaskSignupSummaryQuery>())).ReturnsAsync(new TaskSignupSummaryModel { TaskSignupId = taskSignupId, VolunteerEmail = "*****@*****.**", VolunteerName = "Test McTesterson"}); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.OrgAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.ConfirmRemoveTeamMember(itineraryId, taskSignupId) as ViewResult; Assert.Equal(result.ViewName, "ConfirmRemoveTeamMember"); var resultViewModel = result.ViewData.Model; Assert.IsType<TaskSignupSummaryModel>(resultViewModel); }
public async Task EditPost_ReturnsRedirect_AfterCommandIsSent() { var model = new ItineraryEditViewModel { Id = 1, EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryCommand>())).ReturnsAsync(0); var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(new List<KeyValuePair<string, string>>()); 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") }); var result = await sut.Edit(model); var redirectResult = Assert.IsType<RedirectToActionResult>(result); redirectResult.ActionName.ShouldBe("Details"); var id = redirectResult.RouteValues["id"]; id.ShouldNotBeNull(); id.ShouldBe(model.Id); }
public async Task RemoveTeamMemberReturnsHttpUnauthorizedWhenUserIsNotOrgAdmin() { var itineraryId = It.IsAny<int>(); var taskSignupId = It.IsAny<int>(); var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, MockSuccessValidation().Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.BasicUser.ToString()) }); Assert.IsType<HttpUnauthorizedResult>(await sut.RemoveTeamMember(itineraryId, taskSignupId)); }
public async Task AddTeamMemberSendsOrganizationIdQueryWithCorrectItineraryId() { const int itineraryId = 1; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, null); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(itineraryId, 0); mockMediator.Verify(x => x.SendAsync(It.Is<OrganizationIdQuery>(y => y.ItineraryId == itineraryId)), Times.Once); }
public async Task AddTeamMemberSendsAddTeamMemberCommandWithCorrectParameters() { const int itineraryId = 1; const int selectedTeamMember = 1; string volunteerEmail = "*****@*****.**"; var mockMediator = new Mock<IMediator>(); var itineraryDetailsViewModel = new ItineraryDetailsViewModel { PotentialTeamMembers = new List<SelectListItem>(), TeamMembers = new List<TeamListViewModel> { new TeamListViewModel {VolunteerEmail = volunteerEmail} } }; mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); mockMediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(itineraryDetailsViewModel); var sut = new ItineraryController(mockMediator.Object, null); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(1, 1); mockMediator.Verify(x => x.SendAsync(It.Is<AddTeamMemberCommand>(y => y.ItineraryId == itineraryId && y.TaskSignupId == selectedTeamMember)), Times.Once); mockMediator.Verify(x => x.SendAsync(It.Is<ItineraryDetailQuery>(y => y.ItineraryId == itineraryId)), Times.Once); }