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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }