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);
        }