private Mock <IMediator> BuildValidMockMediator(UnlinkedRequestViewModel model) { var mediator = new Mock <IMediator>(); mediator.Setup(x => x.SendAsync(It.Is <UnlinkedRequestListQuery>(y => y.OrganizationId == OrganizationId))) .ReturnsAsync(model); mediator.Setup(x => x.SendAsync(It.Is <EventSummaryQuery>(y => y.EventId == EventId))) .ReturnsAsync(new EventSummaryViewModel() { OrganizationId = OrganizationId }); return(mediator); }
public List <KeyValuePair <string, string> > Validate(UnlinkedRequestViewModel model) { var result = new List <KeyValuePair <string, string> >(); if (model.EventId < 1) { result.Add(new KeyValuePair <string, string>(nameof(model.EventId), "You must select an event")); } if (!model.Requests.Any(req => req.IsSelected)) { result.Add(new KeyValuePair <string, string>(nameof(model.Requests), "You must select at least one request")); } return(result); }
public async void AddReqeustsReturnModelContainsExpectedData_WhenModelHasValidationErrors() { var model = new UnlinkedRequestViewModel { EventId = EventId }; var mediator = BuildValidMockMediator(model); var expectedEvents = new List <SelectListItem>() { new SelectListItem { Text = "testItem", Value = "testValue", Selected = true } }; var expectedRequests = new List <RequestSelectViewModel>() { new RequestSelectViewModel { Name = "testRequest", Id = Guid.NewGuid() } }; mediator.Setup(x => x.SendAsync(It.Is <UnlinkedRequestListQuery>(y => y.OrganizationId == 1001))) .ReturnsAsync(new UnlinkedRequestViewModel() { Events = expectedEvents, Requests = expectedRequests }); var validator = new Mock <IUnlinkedRequestViewModelValidator>(); validator.Setup(mock => mock.Validate(It.IsAny <UnlinkedRequestViewModel>())) .Returns(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("test", "error") }); var sut = new UnlinkedRequestController(mediator.Object, validator.Object); sut.MakeUserAnOrgAdmin(OrganizationId.ToString()); var result = (ViewResult)await sut.AddRequests(model); var returnedModel = (UnlinkedRequestViewModel)result.Model; Assert.Equal(returnedModel.Requests, expectedRequests); Assert.Equal(returnedModel.Events, expectedEvents); Assert.Equal(returnedModel.EventId, EventId); }
public async Task <IActionResult> AddRequests(UnlinkedRequestViewModel model) { var organizationId = User.GetOrganizationId(); if (!organizationId.HasValue || !User.IsOrganizationAdmin(organizationId.Value)) { return(Unauthorized()); } var errors = _modelValidator.Validate(model); errors.ToList().ForEach(e => ModelState.AddModelError(e.Key, e.Value)); if (ModelState.IsValid) { var eventSummary = await _mediator.SendAsync(new EventSummaryQuery() { EventId = model.EventId }); if (eventSummary == null || eventSummary.OrganizationId != organizationId.Value) { return(Unauthorized()); } await _mediator.SendAsync(new AddRequestsToEventCommand { EventId = model.EventId, SelectedRequestIds = model.Requests.Where(req => req.IsSelected).Select(req => req.Id).ToList() }); return(RedirectToAction(nameof(List))); } var orgId = User.GetOrganizationId(); var queryResponse = await _mediator.SendAsync(new UnlinkedRequestListQuery() { OrganizationId = orgId.GetValueOrDefault() }); model.Requests = queryResponse.Requests; model.Events = queryResponse.Events; return(View(nameof(List), model)); }
public async void AddReqeustsCallsQueryHandlerWithExpectedOrgId_WhenModelHasValidationErrors() { var errorList = new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("test", "error") }; var model = new UnlinkedRequestViewModel() { EventId = EventId, }; var mediator = BuildValidMockMediator(model); var validator = new Mock <IUnlinkedRequestViewModelValidator>(); validator.Setup(mock => mock.Validate(It.IsAny <UnlinkedRequestViewModel>())) .Returns(errorList); var sut = new UnlinkedRequestController(mediator.Object, validator.Object); sut.MakeUserAnOrgAdmin(OrganizationId.ToString()); await sut.AddRequests(model); mediator.Verify(x => x.SendAsync(It.Is <UnlinkedRequestListQuery>(y => y.OrganizationId == 1001)), Times.Once); }