private static void RunSelectRequestsHappyPathTests(IActionResult view, ItineraryDetailsViewModel itinerary, IList<RequestListViewModel> returnedRequests) { Assert.IsType<ViewResult>(view); var result = (ViewResult)view; Assert.IsType<SelectItineraryRequestsViewModel>(result.Model); var model = (SelectItineraryRequestsViewModel)result.Model; Assert.Equal(itinerary.CampaignId, model.CampaignId); Assert.Equal(itinerary.CampaignName, model.CampaignName); Assert.Equal(itinerary.EventId, model.EventId); Assert.Equal(itinerary.EventName, model.EventName); Assert.Equal(itinerary.Name, model.ItineraryName); Assert.Equal(returnedRequests.Count, model.Requests.Count); foreach (var request in returnedRequests) { var requestModel = model.Requests.FirstOrDefault(x => x.Id == request.Id); Assert.Equal(request.Name, requestModel.Name); Assert.Equal(request.DateAdded, requestModel.DateAdded); Assert.Equal(request.City, requestModel.City); Assert.Equal(request.Address, requestModel.Address); Assert.Equal(request.Latitude, requestModel.Latitude); Assert.Equal(request.Longitude, requestModel.Longitude); Assert.Equal(request.Postcode, requestModel.Postcode); } }
public async Task DetailsReturnsCorrectViewAndViewModelWhenEventIsNotNullAndUserIsOrgAdmin() { const int orgId = 1; var viewModel = new ItineraryDetailsViewModel { OrganizationId = orgId }; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(viewModel); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); var result = await sut.Details(It.IsAny<int>()) as ViewResult; Assert.Equal(result.ViewName, "Details"); var resultViewModel = result.ViewData.Model; Assert.IsType<ItineraryDetailsViewModel>(resultViewModel); Assert.Equal(resultViewModel, viewModel); }
public async Task AddTeamMemberReturnsCorrectJsonWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin_AndIdOrSelectedTeamMemberIsNotZero() { const int itineraryId = 1; const int orgId = 1; const int teamMemberId = 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(orgId); mockMediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(itineraryDetailsViewModel); var sut = new ItineraryController(mockMediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); var jsonResult = await sut.AddTeamMember(itineraryId, teamMemberId) as JsonResult; var successStatus = jsonResult.GetValueForProperty<bool>("isSuccess"); var teamMembers = jsonResult.GetValueForProperty<IEnumerable<TeamListViewModel>>("teamMembers").ToList(); var potentialMembers = jsonResult.GetValueForProperty<IEnumerable<SelectListItem>>("potentialTeamMembers").ToList(); Assert.True(successStatus); Assert.NotNull(teamMembers); Assert.NotNull(potentialMembers); Assert.Equal(1, teamMembers.Count); Assert.Equal(volunteerEmail, teamMembers[0].VolunteerEmail); }
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); }
public async Task DetailsPost_ReturnsViewModelWithCorrectRequestListData() { const int orgId = 1; var fullList = new List<RequestListViewModel> {new RequestListViewModel {Id = Guid.NewGuid()}}; var filteredList = new List<RequestListViewModel> {new RequestListViewModel {Id = Guid.NewGuid()}}; var viewModel = new ItineraryDetailsViewModel { OrganizationId = orgId, Requests = fullList}; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(viewModel); mediator.Setup(x => x.SendAsync(It.IsAny<RequestListItemsQuery>())).ReturnsAsync(filteredList); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); var result = await sut.Details(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<RequestStatus?>()) as ViewResult; var model = (ItineraryDetailsViewModel) result.ViewData.Model; Assert.Equal(model.Requests, filteredList); }
public async Task DetailsPost_SendsRequestListQueryWithCorrectData() { const int orgId = 1; const int itineraryId = 2; const string keywords = "search"; const RequestStatus status = RequestStatus.Assigned; var viewModel = new ItineraryDetailsViewModel { OrganizationId = orgId, Id = 2 }; var requestList = new List<RequestListViewModel>(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(viewModel); mediator.Setup(x => x.SendAsync(It.IsAny<RequestListItemsQuery>())).ReturnsAsync(requestList); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); await sut.Details(itineraryId, keywords, status); mediator.Verify(x => x.SendAsync(It.Is<RequestListItemsQuery>( y => y.Criteria.ItineraryId == itineraryId && y.Criteria.Keywords == keywords && y.Criteria.Status == status)), Times.Once); }