Ejemplo n.º 1
0
        public void FilterAnimals_Invoke_Animals_GetAll()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            // Act
            var actionResult = controller.FilterAnimals(filter) as IHttpActionResult;

            // Assert
            mockAnimal.Verify(m => m.GetAll());
        }
Ejemplo n.º 2
0
        public void FilterAnimals_Return_NotNullResult()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            // Act
            var actionResult = controller.FilterAnimals(filter) as IHttpActionResult;

            // Assert
            Assert.IsNotNull(actionResult);
        }
Ejemplo n.º 3
0
        //
        //-----------------------------------     Tests for FilterAnimals()   ----------------------------------------
        //
        #region Tests for FilterAnimals()

        AnimalsFilter GetFilter()
        {
            AnimalsFilter filter = new AnimalsFilter()
            {
                KindId = kinds[0].Id,  // 1
                SkinId = skins[3].Id,  // 4
                RegIds = new int[] { regions[2].Id, regions[3].Id, regions[4].Id }  //  3, 4, 5
            };

            return(filter);
        }
Ejemplo n.º 4
0
        public void FilterAnimals_Return_CorrectDomainModel()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            // Act
            var actionResult  = controller.FilterAnimals(filter) as IHttpActionResult;
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <AnimalLight> >;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
        }
Ejemplo n.º 5
0
        public void FilterAnimals_FilteredBy_SkinAndKind()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            filter.RegIds = new[] { 0 }; // new[] { 1 };

            // Act
            var actionResult  = controller.FilterAnimals(filter) as IHttpActionResult;
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <AnimalLight> >;

            // Assert
            var filtered = animals.Where(a => a.KindId == filter.KindId && a.SkinId == filter.SkinId);

            Assert.AreEqual(filtered.Count(), contentResult.Content.Count());
        }
Ejemplo n.º 6
0
        public void FilterAnimals_FilteredBy_NoFilter()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            filter.KindId = 0;
            filter.SkinId = 0;
            filter.RegIds = new[] { 0 };

            // Act
            var actionResult  = controller.FilterAnimals(filter) as IHttpActionResult;
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <AnimalLight> >;

            // Assert
            Assert.AreEqual(animals.Count, contentResult.Content.Count());
        }
Ejemplo n.º 7
0
        public void FilterAnimals_FilteredBy_KindAndManyRegions()
        {
            // Arrange
            AnimalsFilter filter = GetFilter();

            filter.SkinId = 0;
            filter.RegIds = new[] { regions[1].Id, regions[4].Id }; // new[] { 0 };

            // Act
            var actionResult  = controller.FilterAnimals(filter) as IHttpActionResult;
            var contentResult = actionResult as OkNegotiatedContentResult <IEnumerable <AnimalLight> >;

            // Assert
            var filtered = animals.Where(a => a.KindId == filter.KindId && a.Regions.Any(m => filter.RegIds.Contains(m.Id)));

            Assert.AreEqual(filtered.Count(), contentResult.Content.Count());
        }
Ejemplo n.º 8
0
        public IHttpActionResult FilterAnimals([FromBody] AnimalsFilter filter)
        {
            Trace.WriteLine("--- FilterAnimals() ---");

            if (filter == null)
            {
                return(BadRequest());
            }

            var animals = _repoFactory.CreateAnimalRepository().GetAll().Include(a => a.Skin).Include(a => a.Kind).Include(a => a.Regions);

            if (filter.SkinId > 0)
            {
                animals = animals.Where(a => a.SkinId == filter.SkinId);
            }
            if (filter.KindId > 0)
            {
                animals = animals.Where(a => a.KindId == filter.KindId);
            }

            if (filter.RegIds.Count(c => c > 0) > 0)
            {
                animals = animals.SelectMany(a => a.Regions, (a, r) => new { An = a, Re = r })
                          .Where(a => filter.RegIds.Contains(a.Re.Id))
                          .Select(a => a.An);
            }
            var animalsFiltered = animals.Include(a => a.Regions).Distinct().OrderBy(a => a.AnimalName).ToList();

            try
            {
                // сопоставление
                var animalsLight = Mapper.Map <List <Animal>, IEnumerable <AnimalLight> >(animalsFiltered);
                return(Ok(animalsLight));
            }
            catch (Exception x)
            {
                Trace.WriteLine("FilterAnimals() Exception: " + x.Message);

                ModelState.AddModelError("animal", x.Message);
                return(BadRequest(ModelState));
            }
        }
Ejemplo n.º 9
0
        public async Task <ICollection <Animal> > GetAllAsync(
            AnimalsFilter filter        = null,
            PaginationFilter pagination = null)
        {
            if (pagination != null && filter != null)
            {
                return(await _repositoryWrapper.AnimalRepository.GetAsync(filter : Filter(filter), include : Include(),
                                                                          pageNumber : pagination.PageNumber, pageSize : pagination.PageSize));
            }

            if (filter != null)
            {
                return(await _repositoryWrapper.AnimalRepository.GetAsync(filter : Filter(filter), include : Include()));
            }

            if (pagination != null)
            {
                return(await _repositoryWrapper.AnimalRepository.GetAsync(include : Include(),
                                                                          pageNumber : pagination.PageNumber, pageSize : pagination.PageSize));
            }

            return(await _repositoryWrapper.AnimalRepository.GetAsync(include : Include()));
        }
Ejemplo n.º 10
0
        private static Expression <Func <Animal, bool> > Filter(AnimalsFilter filter)
        {
            var expressionsList = new List <Expression <Func <Animal, bool> > >();

            if (filter.ClientId != null)
            {
                Expression <Func <Animal, bool> > statusFilter = a => a.ClientId == filter.ClientId;
                expressionsList.Add(statusFilter);
            }

            if (filter.AnimalTypeId != null)
            {
                Expression <Func <Animal, bool> > serviceFilter = a => a.AnimalTypeId == filter.AnimalTypeId;
                expressionsList.Add(serviceFilter);
            }

            if (filter.IsDeleted != null)
            {
                Expression <Func <Animal, bool> > userFilter = a => a.IsDeleted == filter.IsDeleted.Value;
                expressionsList.Add(userFilter);
            }

            if (filter.IsDeleted == null)
            {
                Expression <Func <Animal, bool> > userFilter = a => !a.IsDeleted;
                expressionsList.Add(userFilter);
            }

            Expression <Func <Animal, bool> > expression = animal => true;

            foreach (var exp in expressionsList)
            {
                expression = expression.AndAlso(exp);
            }

            return(expression);
        }