public async Task Get_ReturnsAllValues()
        {
            // Arrange
            SpaceXLaunchPadFilter filter = new SpaceXLaunchPadFilter()
            {
                Limit  = "0",
                Status = "all"
            };
            var mockRepo = new Mock <ISpaceXLaunchPadData>();

            //mock the data returned by GetDataAsync
            mockRepo.Setup(rep => rep.GetDataAsync(filter))
            .ReturnsAsync(GetTestData());
            //mock the logger
            var            mock   = new Mock <ILoggerFactory>();
            ILoggerFactory logger = mock.Object;



            var controller = new SpaceXLaunchPadController(logger, mockRepo.Object);

            // Act
            IActionResult getresult = await controller.GetLPInfo(filter);

            // Assert
            Assert.NotNull(getresult);
            ObjectResult result = getresult as ObjectResult;

            Assert.NotNull(result);
            var resultlist = result.Value as List <SDCLaunchPadInfo>;

            Assert.NotNull(resultlist);
            Assert.Same("vafb_slc_3w", resultlist[0].Id);
            Assert.Same("ccafs_slc_40", resultlist[1].Id);
            Assert.Same("Vandenberg Air Force Base Space Launch Complex 3W", resultlist[0].Full_name);
            Assert.Same("Cape Canaveral Air Force Station Space Launch Complex 40", resultlist[1].Full_name);
            Assert.Same("retired", resultlist[0].Status);
            Assert.Same("active", resultlist[1].Status);
        }
        public async Task <List <SpaceXLaunchPad> > GetDataAsync(SpaceXLaunchPadFilter filter)
        {
            try
            {
                var jsonresponse = "";
                if (Int32.Parse(filter.Limit) != 0)
                {
                    jsonresponse = await _client.GetStringAsync("/v2/launchpads?limit=" + Int32.Parse(filter.Limit));
                }
                else
                {
                    jsonresponse = await _client.GetStringAsync("/v2/launchpads");
                }
                _logger.LogDebug("Http request successful");

                return(JsonConvert.DeserializeObject <List <SpaceXLaunchPad> >(jsonresponse));;
            }
            catch (Exception ex)
            {
                _logger.LogError("Http request failed: {errormessage}", ex.Message);
                return(null);
            }
        }
        public async Task <ActionResult> GetLPInfo([FromQuery] SpaceXLaunchPadFilter filter)
        {
            List <SpaceXLaunchPad> sxlp = new List <SpaceXLaunchPad>();

            sxlp = await _spacexlaunchpaddata.GetDataAsync(filter);

            //return require data to client
            List <SDCLaunchPadInfo> sdcobj = new List <SDCLaunchPadInfo>();

            foreach (var record in sxlp)
            {
                sdcobj.Add(new SDCLaunchPadInfo()
                {
                    Id = record.Id, Full_name = record.Full_name, Status = record.Status
                });
            }
            if (filter.Status != null && filter.Status != "all")
            {
                List <SDCLaunchPadInfo> filteredsdcobj = sdcobj.Where(p => p.Status == filter.Status).ToList();
                return(new ObjectResult(filteredsdcobj));
            }

            return(new ObjectResult(sdcobj));
        }