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); }
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)); }
protected override IQuery <Vote> ApplyWhereClause(IQuery <Vote> query, VoteFilterDto filter) { return(filter.ImageId == Guid.Empty && filter.UserId == Guid.Empty ? query : query.Where(CreateCompositePredicateFromFilter(filter))); }