public async void AddStudent_ReturnsOkResult()
        {
            //Setup
            var sampleJediStudent = new JediStudent();

            sampleJediStudent.Id      = 1;
            sampleJediStudent.Name    = "Luke Skywalker";
            sampleJediStudent.Height  = "172";
            sampleJediStudent.Mass    = "77";
            sampleJediStudent.Species = "0";
            sampleJediStudent.Planet  = "0";

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <AddStudent.CreateRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (true, sampleJediStudent, null));

            // Initiate
            var controller = new IndividualsController(mediator.Object);
            var request    = new AddStudent.CreateRequest();

            // Result
            var resultObj = await controller.CreateStudent(request);

            var okResult = resultObj.Result as OkObjectResult;

            // Test
            Assert.NotNull(okResult);
            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal(sampleJediStudent, okResult.Value);
        }
        public async Task <ActionResult <JediStudent> > CreateStudent(AddStudent.CreateRequest request)
        {
            var(isSuccess, jediStudent, message) = await _mediator.Send(request);

            if (isSuccess)
            {
                return(Ok(jediStudent));
            }
            return(jediStudent != null?
                   NotFound(message) :
                       StatusCode(500, message));
        }
        public async void AddStudent_ReturnsErrorResult()
        {
            // Setup
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <AddStudent.CreateRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (false, null, "Database error"));

            // Initiate
            var controller = new IndividualsController(mediator.Object);
            var request    = new AddStudent.CreateRequest();

            // Result
            var resultObj = await controller.CreateStudent(request);

            var errorResult = resultObj.Result as ObjectResult;

            // Test
            Assert.NotNull(errorResult);
            Assert.Equal(500, errorResult.StatusCode);
            Assert.Equal("Database error", errorResult.Value);
        }