public Expression GetSearchExpression() { var subQueries = new List <Function>(); subQueries.Add(new CtsElementRangeQuery(OfferConstants.TotalCost, "'<='", new XsDouble(_searchModel.MaxCost).Query)); subQueries.Add(new CtsElementRangeQuery(OfferConstants.Rooms, "'>='", new XsInteger(_searchModel.NumberOfRooms).Query)); subQueries.Add(new CtsNotQuery(new CtsElementValueQuery(OfferConstants.OfferType, OfferTypeConstants.Outdated))); subQueries.Add(new CtsCollectionQuery(OfferConstants.CollectionName)); var result = new CtsAndQuery(subQueries); return(result); }
public void GetSearchExpression_returns_correct_query_for_simple_search() { var searchModel = new SearchModel { MaxCost = "1000", NumberOfRooms = "1" }; var sut = new SimpleSearchQueryProvider(searchModel); var expected = new CtsAndQuery( new CtsElementRangeQuery(OfferConstants.TotalCost, "'<='", new XsDouble(searchModel.MaxCost).Query), new CtsElementRangeQuery(OfferConstants.Rooms, "'>='", new XsInteger(searchModel.NumberOfRooms).Query), new CtsNotQuery(new CtsElementValueQuery(OfferConstants.OfferType, OfferTypeConstants.Outdated)), new CtsCollectionQuery(OfferConstants.CollectionName)).Query; var result = sut.GetSearchExpression().Query; Assert.AreEqual(expected, result); }