public async Task ApplyWhereClause_SimpleFilterWithMinimalPrice_ReturnsCorrectSimplePredicate() { var mockManager = new QueryMockManager(); var expectedPredicate = new SimplePredicate(nameof(Song.Price), ValueComparingOperator.GreaterThanOrEqual, 1000m); var mapperMock = mockManager.ConfigureMapperMock <Song, ProductDto, ProductFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Song>(); var productQueryObject = new ProductQueryObject(mapperMock.Object, queryMock.Object); var unused = await productQueryObject.ExecuteQuery(new ProductFilterDto { MinimalPrice = 1000 }); Assert.AreEqual(mockManager.CapturedPredicate, expectedPredicate); }
public async Task ApplyWhereClause_ComplexFilterWithMinimalPriceAndCategoryId_ReturnsCorrectCompositePredicate() { var categoryIds = new[] { Guid.Parse("aa02dc64-5c07-40fe-a916-175165b9b90f") }; var mockManager = new QueryMockManager(); var expectedPredicate = new CompositePredicate(new List <IPredicate> { new CompositePredicate(new List <IPredicate> { new SimplePredicate(nameof(Song.CategoryId), ValueComparingOperator.Equal, categoryIds.First()) }, LogicalOperator.OR), new SimplePredicate(nameof(Song.Price), ValueComparingOperator.GreaterThanOrEqual, 7000m) }); var mapperMock = mockManager.ConfigureMapperMock <Song, ProductDto, ProductFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Song>(); var productQueryObject = new ProductQueryObject(mapperMock.Object, queryMock.Object); var unused = await productQueryObject.ExecuteQuery(new ProductFilterDto { MinimalPrice = 7000, CategoryIds = categoryIds }); Assert.AreEqual(mockManager.CapturedPredicate, expectedPredicate); }
public async Task ApplyWhereClause_ComplexFilterWithSeveralConditions_ReturnsCorrectCompositePredicate() { const string searchedName = "Samsung"; var categoryIds = new[] { Guid.Parse("aa02dc64-5c07-40fe-a916-175165b9b90f"), Guid.Parse("aa04dc64-5c07-40fe-a916-175165b9b90f") }; var mockManager = new QueryMockManager(); var expectedPredicate = new CompositePredicate(new List <IPredicate> { new CompositePredicate(new List <IPredicate> { new SimplePredicate(nameof(Song.CategoryId), ValueComparingOperator.Equal, categoryIds.First()), new SimplePredicate(nameof(Song.CategoryId), ValueComparingOperator.Equal, categoryIds.Last()) }, LogicalOperator.OR), new SimplePredicate(nameof(Song.Name), ValueComparingOperator.StringContains, searchedName), new CompositePredicate(new List <IPredicate> { new SimplePredicate(nameof(Song.Price), ValueComparingOperator.GreaterThanOrEqual, 1000m), new SimplePredicate(nameof(Song.Price), ValueComparingOperator.LessThanOrEqual, 3000m) }) }); var mapperMock = mockManager.ConfigureMapperMock <Song, ProductDto, ProductFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <Song>(); var productQueryObject = new ProductQueryObject(mapperMock.Object, queryMock.Object); var unused = await productQueryObject.ExecuteQuery(new ProductFilterDto { MinimalPrice = 1000, MaximalPrice = 3000, SearchedName = searchedName, CategoryIds = categoryIds }); Assert.AreEqual(mockManager.CapturedPredicate, expectedPredicate); }