Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }