public void FilterAnimals_Invoke_Animals_GetAll() { // Arrange AnimalsFilter filter = GetFilter(); // Act var actionResult = controller.FilterAnimals(filter) as IHttpActionResult; // Assert mockAnimal.Verify(m => m.GetAll()); }
public void FilterAnimals_Return_NotNullResult() { // Arrange AnimalsFilter filter = GetFilter(); // Act var actionResult = controller.FilterAnimals(filter) as IHttpActionResult; // Assert Assert.IsNotNull(actionResult); }
// //----------------------------------- 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); }
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); }
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()); }
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()); }
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()); }
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)); } }
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())); }
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); }