Пример #1
0
        public async Task IfHasNavigationAndColorBlack_ReturnsOneCars()
        {
            //Arrange
            var carQueryOptions = new CarQueryOptions
            {
                HasHeatedSeats = true,
                HasNavigation  = false
            };
            var mockICarRepo = new Mock <ICarRepository>();
            var mockReturn   = new List <Car>()
            {
                new Car()
                {
                    Color = "Red"
                },
            };

            mockICarRepo.Setup(repo => repo.GetCars(carQueryOptions))
            .Returns(Task.FromResult <IEnumerable <Car> >(mockReturn));
            var carController = new CarsController(mockICarRepo.Object);

            //Act
            var result = await carController.GetCars(carQueryOptions);

            //Assert
            Assert.Single(result);
        }
Пример #2
0
        public async Task IfHasNoOptionsSelected_ReturnsNineCars()
        {
            //Arrange
            var carQueryOptions = new CarQueryOptions
            {
                HasHeatedSeats = true,
                HasNavigation  = false
            };
            var mockICarRepo = new Mock <ICarRepository>();
            var mockReturn   = new List <Car>()
            {
                new Car(), new Car(), new Car(), new Car(), new Car(), new Car(),
                new Car(), new Car(), new Car()
            };

            mockICarRepo.Setup(repo => repo.GetCars(carQueryOptions))
            .Returns(Task.FromResult <IEnumerable <Car> >(mockReturn));
            var carController = new CarsController(mockICarRepo.Object);

            //Act
            var result = await carController.GetCars(carQueryOptions);

            //Assert
            Assert.Equal(9, result.Count <Car>());
        }
Пример #3
0
        public async Task <IEnumerable <Car> > GetCars(CarQueryOptions options)
        {
            IQueryable <Car> cars = _context.Cars;

            cars = ApplyFiltering(cars, options);

            return(await cars.ToListAsync());
        }
Пример #4
0
        private IQueryable <Car> ApplyFiltering(IQueryable <Car> cars, CarQueryOptions options)
        {
            if (!String.IsNullOrEmpty(options.Color))
            {
                cars = cars.Where(car => car.Color.Equals(options.Color));
            }

            if (options.HasSunroof)
            {
                cars = cars.Where(c => c.HasSunroof);
            }

            if (options.IsFourWheelDrive)
            {
                cars = cars.Where(c => c.IsFourWheelDrive);
            }

            if (options.HasLowMiles)
            {
                cars = cars.Where(c => c.HasLowMiles);
            }

            if (options.HasPowerWindows)
            {
                cars = cars.Where(c => c.HasPowerWindows);
            }

            if (options.HasNavigation)
            {
                cars = cars.Where(c => c.HasNavigation);
            }

            if (options.HasHeatedSeats)
            {
                cars = cars.Where(c => c.HasHeatedSeats);
            }

            return(cars);
        }
Пример #5
0
        public async Task <IEnumerable <Car> > GetCars(CarQueryOptions options)
        {
            var cars = await _repository.GetCars(options);

            return(cars);
        }