public void LaunchpadFilter_InitializedLists_WhenConstructed()
        {
            var filter = new LaunchpadFilter();

            Assert.IsNotNull(filter.LaunchpadIds);
            Assert.IsNotNull(filter.LaunchpadNames);
        }
 private void Given_A_Launchpad_Filter_Request_On_PageSize()
 {
     filter = new LaunchpadFilter()
     {
         PageSize   = 1,
         PageNumber = 1
     };
 }
        public async Task FilterLaunchpads_ReturnsOkRequest_WithValidFilter()
        {
            var filter = new LaunchpadFilter();

            var response = await this.controller.FilterLaunchpads(filter);

            Assert.IsInstanceOf <OkObjectResult>(response);
        }
        public void FilterLaunchpads_ReturnInternalServerError_WhenExceptionIsThrown()
        {
            var filter = new LaunchpadFilter();

            launchpadServiceMock.Setup(x => x.FilterLaunchPads(It.IsAny <LaunchpadFilter>())).ThrowsAsync(new Exception());

            Assert.ThrowsAsync <Exception>(async() => await this.controller.FilterLaunchpads(filter));
        }
        private void Given_A_Launchpad_Filter_Request_On_Status()
        {
            var launchpadStatus = launchpads[3].Status;

            filter = new LaunchpadFilter()
            {
                LaunchpadStatus = launchpadStatus
            };
        }
        public void IsValid_RertunsFalse_WhenPageSizeIsLessThan1()
        {
            var filter = new LaunchpadFilter()
            {
                PageNumber = 1,
                PageSize   = 0
            };

            Assert.IsFalse(filter.IsValid());
        }
        public static string ToQueryString(this LaunchpadFilter filter)
        {
            var result = new List <string>();

            result.AddRange(filter.LaunchpadIds.Select(x => $"LaunchpadIds={x}"));
            result.AddRange(filter.LaunchpadNames.Select(x => $"LaunchpadNames={x}"));
            result.Add($"LaunchpadStatus={filter.LaunchpadStatus}");
            result.Add($"PageSize={filter.PageSize}");
            result.Add($"PageNumber={filter.PageNumber}");

            return(string.Join("&", result.ToArray()));
        }
        public static bool HasBeenAppliedTo(this LaunchpadFilter filter, IEnumerable <LaunchpadDto> dtos)
        {
            bool idsValidated = filter.LaunchpadIds.Any() ? dtos.All(x => filter.LaunchpadIds.Contains(x.Id)) : true;

            bool namesValidated = filter.LaunchpadNames.Any() ? dtos.All(x => filter.LaunchpadNames.Contains(x.Name)) : true;

            bool statusValidated = !String.IsNullOrWhiteSpace(filter.LaunchpadStatus) ? dtos.All(x => x.Status.Equals(filter.LaunchpadStatus)) : true;

            bool pageSizeValidated = filter.PageSize != null?dtos.Count() == filter.PageSize : true;

            return(idsValidated && namesValidated && statusValidated && pageSizeValidated);
        }
        public void ApplyFilter_AppliesFilter_ToLaunchpadList()
        {
            var filter = new LaunchpadFilter()
            {
                LaunchpadIds = new List <string>()
                {
                    this.dtoList[0].Id
                }
            };

            Assert.AreEqual(1, dtoList.ApplyFilter(filter).Count());
        }
        public void IsValie_ReturnsFalse_WhenAllNamesAreNull()
        {
            var filter = new LaunchpadFilter()
            {
                LaunchpadNames = new List <string>()
                {
                    null
                }
            };

            Assert.IsFalse(filter.IsValid());
        }
        private void Given_A_Launchpad_Filter_Request_On_Two_Names()
        {
            var launchpadName1 = launchpads[0].Name;
            var launchpadName2 = launchpads[1].Name;

            filter = new LaunchpadFilter()
            {
                LaunchpadNames = new List <string>()
                {
                    launchpadName1, launchpadName2
                }
            };
        }
        private void Given_A_Launchpad_Filter_Request_On_Two_Ids()
        {
            var launchpadId1 = launchpads[0].Id;
            var launchpadId2 = launchpads[1].Id;

            filter = new LaunchpadFilter()
            {
                LaunchpadIds = new List <string>()
                {
                    launchpadId1, launchpadId2
                }
            };
        }
        public async Task <IEnumerable <LaunchpadDto> > FilterLaunchpads(LaunchpadFilter filter)
        {
            using (var client = new HttpClient())
            {
                var response = await client.GetAsync(this.launchPadBaseUri);

                var responseBody = await response.Content.ReadAsStringAsync();

                var launchPadList = JsonConvert.DeserializeObject <List <ResponseLaunchpad> >(responseBody);

                var launchPadDtoList = launchPadList.Select(x => x.ConvertToLaunchpadDto());

                return(launchPadDtoList.ApplyFilter(filter));
            }
        }
        public void ApplyFilter_AppliesCombinationFilter_ToLaunchpadList()
        {
            var filter = new LaunchpadFilter()
            {
                LaunchpadIds = new List <string>()
                {
                    this.dtoList[0].Id
                },
                LaunchpadNames = new List <string>()
                {
                    this.dtoList[1].Name
                }
            };

            Assert.AreEqual(0, dtoList.ApplyFilter(filter).Count());
        }
Exemple #15
0
        public async Task <IActionResult> FilterLaunchpads(LaunchpadFilter filter)
        {
            filter = filter ?? new LaunchpadFilter();
            try
            {
                if (!filter.IsValid())
                {
                    return(BadRequest());
                }

                var launchPads = await this.launchpadService.FilterLaunchPads(filter);

                return(Ok(launchPads));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Unhandled error thrown while retrieving launchpad information with filter {filter}");
                throw;
            }
        }
        public static IEnumerable <LaunchpadDto> ApplyFilter(this IEnumerable <LaunchpadDto> dtos, LaunchpadFilter filter)
        {
            var filteredDtos = dtos;

            if (filter.LaunchpadIds.Any())
            {
                filteredDtos = filteredDtos.Where(x => filter.LaunchpadIds.Contains(x.Id));
            }

            if (filter.LaunchpadNames.Any())
            {
                filteredDtos = filteredDtos.Where(x => filter.LaunchpadNames.Contains(x.Name));
            }

            if (!String.IsNullOrWhiteSpace(filter.LaunchpadStatus))
            {
                filteredDtos = filteredDtos.Where(x => x.Status.Equals(filter.LaunchpadStatus));
            }

            if (filter.PageSize != null && filter.PageNumber != null)
            {
                var skip = (filter.PageNumber.Value - 1) * filter.PageSize.Value;
                filteredDtos = filteredDtos.Skip(skip).Take(filter.PageSize.Value);
            }

            return(filteredDtos);
        }
        public void IsValid_ReturnsTrue_WhenFilterIsEmpty()
        {
            var filter = new LaunchpadFilter();

            Assert.IsTrue(filter.IsValid());
        }
 private void Given_An_Http_Get_Request()
 {
     filter = null;
 }