public async Task Create_SendsEventSummaryQuery_WithCorrectEventId()
        {
            const int id = 1;

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

            var sut = new RequestController(mockMediator.Object);
            await sut.Create(id);

            mockMediator.Verify(x => x.SendAsync(It.Is<EventSummaryQuery>(a => a.EventId == id)), Times.Once);
        }
        public async Task Create_ReturnsHttpUnauthorizedResult_WhenUserIsNotOrgAdmin()
        {
            var mockMediator = new Mock<IMediator>();
            mockMediator.Setup(mock => mock.SendAsync(It.IsAny<EventSummaryQuery>())).ReturnsAsync(new EventSummaryViewModel());

            var sut = new RequestController(mockMediator.Object);
            sut.MakeUserNotAnOrgAdmin();

            var result = await sut.Create(1);

            var objResult = Assert.IsType<UnauthorizedResult>(result);
            objResult.StatusCode.ShouldBe(StatusCodes.Status401Unauthorized);
        }
        public async Task Create_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.Create(1);

            var objResult = Assert.IsType<BadRequestObjectResult>(result);
            objResult.StatusCode.ShouldNotBeNull();
            objResult.StatusCode.Value.ShouldBe(StatusCodes.Status400BadRequest);
        }
        public async Task Create_ReturnsCorrectViewAndViewModel_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);

            var sut = new RequestController(mockMediator.Object);
            sut.MakeUserAnOrgAdmin(orgId.ToString());

            var result = await sut.Create(It.IsAny<int>());

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

            objResult.ViewName.ShouldBe("Edit");

            var resultViewModel = Assert.IsType<EditRequestViewModel>(objResult.ViewData.Model);
            resultViewModel.EventId.ShouldBe(viewModel.Id);
            resultViewModel.OrganizationId.ShouldBe(viewModel.OrganizationId);

            var viewBagTitle = objResult.ViewData["Title"];
            viewBagTitle.ShouldNotBeNull();
            viewBagTitle.ShouldBe(RequestController.CreateRequestTitle);
        }