public async Task TestIfApplyFiltersFromUrlAppliesFiltersWithNull()
        {
            var context        = PCHUBDbContextInMemoryInitializer.InitializeContext();
            var productService = new ProductServices(context);

            await Assert.ThrowsAsync <NullReferenceException>(async() =>
            {
                await productService.ApplyFiltersFromUrlAsync(null, null);
            });
        }
        public async Task TestIfApplyFiltersFromUrlAppliesFilters()
        {
            var context        = PCHUBDbContextInMemoryInitializer.InitializeContext();
            var productService = new ProductServices(context);

            var filterCategory = new List <FilterCategoryViewModel>();

            var filtersPrice = new List <FilterViewModel>();


            filtersPrice.Add(new FilterViewModel
            {
                Name = "MinPrice",
            });

            filtersPrice.Add(new FilterViewModel
            {
                Name = "MaxPrice",
            });

            filterCategory.Add(new FilterCategoryViewModel
            {
                CategoryName        = "Laptops",
                ViewSubCategoryName = "Price",
                Filters             = filtersPrice
            });

            var filtersMake = new List <FilterViewModel>();

            filtersMake.Add(new FilterViewModel
            {
                Name  = "Make",
                Value = "Acer"
            });

            filterCategory.Add(new FilterCategoryViewModel
            {
                CategoryName        = "Laptops",
                ViewSubCategoryName = "Make",
                Filters             = filtersMake
            });

            var filtersOrderBy = new List <FilterViewModel>();

            filtersOrderBy.Add(new FilterViewModel
            {
                Name  = "Order By",
                Value = "Default"
            });

            filterCategory.Add(new FilterCategoryViewModel
            {
                CategoryName        = "Laptops",
                ViewSubCategoryName = "OrderBy",
                Filters             = filtersOrderBy
            });

            var urlFilters = new ProductFiltersUrlModel();

            urlFilters.Page     = 1;
            urlFilters.MinPrice = "300";
            urlFilters.MaxPrice = "600";
            urlFilters.Make     = new string[]
            {
                "Acer",
            };

            urlFilters.OrderBy = "Descending";


            await productService.ApplyFiltersFromUrlAsync(filterCategory, urlFilters);


            var result =
                filterCategory.FirstOrDefault(x => x.CategoryName == "Laptops" && x.ViewSubCategoryName == "Price");

            Assert.True(result.Filters.Any(x => x.Name == "MinPrice" && x.Value == "300"));

            Assert.True(result.Filters.Any(x => x.Name == "MaxPrice" && x.Value == "600"));

            var makeResult =
                filterCategory.FirstOrDefault(x => x.CategoryName == "Laptops" && x.ViewSubCategoryName == "Make");

            Assert.NotNull(makeResult);

            Assert.True(makeResult.Filters.Any(x => x.IsChecked == true));
        }