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 void GetStudents_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 jediStudents = new List <JediStudent>();

            jediStudents.Add(sampleJediStudent);

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <GetStudents.Query>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (true, jediStudents, null));

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

            // Result
            var resultObj = await controller.Get();

            var okResult = resultObj as OkObjectResult;

            // Test
            Assert.NotNull(okResult);
            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal(jediStudents, okResult.Value);
        }
        // Edited by CPang 2020-07-15 Challenge 2
        public async Task <(bool IsSuccess, JediStudent Result)> AddStudent(JediEnrollmentViewModel jediStudentEnrollmentModel)
        {
            var jediStudent = new JediStudent
            {
                Name    = jediStudentEnrollmentModel.Name,
                Height  = jediStudentEnrollmentModel.Height,
                Mass    = jediStudentEnrollmentModel.Mass,
                Species = jediStudentEnrollmentModel.SelectedSpecies,
                // Edited by CPang 2020-07-17 Challenge 3
                Planet = jediStudentEnrollmentModel.SelectedPlanet
            };

            try
            {
                var client        = _httpClientFactory.CreateClient("Individuals");
                var stringContent = new StringContent(JsonSerializer.Serialize(jediStudent), Encoding.UTF8, "application/json");
                var response      = await client.PostAsync("", stringContent);

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsByteArrayAsync();

                    var options = new JsonSerializerOptions()
                    {
                        PropertyNameCaseInsensitive = true
                    };
                    var result = JsonSerializer.Deserialize <JediStudent>(content, options);
                    return(true, result);
                }

                return(false, null);
            }
            catch (Exception e)
            {
                _logger?.LogError(e.ToString());
                return(false, null);
            }
        }