public async Task ApplyWhereClause_EmptyFilter_ReturnsNull()
        {
            var mockManager     = new QueryMockManager();
            var mapperMock      = mockManager.ConfigureMapperMock <Vote, VoteDto, VoteFilterDto>();
            var queryMock       = mockManager.ConfigureQueryMock <Vote>();
            var voteQueryObject = new VoteQueryObject(mapperMock.Object, queryMock.Object);

            var filter = new VoteFilterDto();
            var temp   = await voteQueryObject.ExecuteQuery(filter);

            Assert.AreEqual(null, mockManager.CapturedPredicate);
        }
        public async Task ApplyWhereClause_FilterByImageId_ReturnsCorrectSimplePredicate()
        {
            Guid filterImageId     = Guid.NewGuid();
            var  mockManager       = new QueryMockManager();
            var  expectedPredicate = new SimplePredicate(nameof(Vote.ImageId), ValueComparingOperator.Equal, filterImageId);
            var  mapperMock        = mockManager.ConfigureMapperMock <Vote, VoteDto, VoteFilterDto>();
            var  queryMock         = mockManager.ConfigureQueryMock <Vote>();
            var  voteQueryObject   = new VoteQueryObject(mapperMock.Object, queryMock.Object);

            var filter = new VoteFilterDto {
                ImageId = filterImageId
            };
            var temp = await voteQueryObject.ExecuteQuery(filter);

            Assert.AreEqual(expectedPredicate, mockManager.CapturedPredicate);
        }
Exemplo n.º 3
0
        private IPredicate CreateCompositePredicateFromFilter(VoteFilterDto filter)
        {
            // either one of UserId or ImageId
            if (filter.UserId != Guid.Empty && filter.ImageId == Guid.Empty)
            {
                return(new SimplePredicate(nameof(Vote.UserId), ValueComparingOperator.Equal, filter.UserId));
            }
            if (filter.ImageId != Guid.Empty && filter.UserId == Guid.Empty)
            {
                return(new SimplePredicate(nameof(Vote.ImageId), ValueComparingOperator.Equal, filter.ImageId));
            }
            // Or both
            var predicates = new List <IPredicate>
            {
                new SimplePredicate(nameof(Vote.ImageId), ValueComparingOperator.Equal, filter.ImageId),
                new SimplePredicate(nameof(Vote.UserId), ValueComparingOperator.Equal, filter.UserId)
            };

            return(new CompositePredicate(predicates, LogicalOperator.AND));
        }
Exemplo n.º 4
0
 protected override IQuery <Vote> ApplyWhereClause(IQuery <Vote> query, VoteFilterDto filter)
 {
     return(filter.ImageId == Guid.Empty && filter.UserId == Guid.Empty ? query : query.Where(CreateCompositePredicateFromFilter(filter)));
 }