public void OperatorWithTwoRowFiltersTest()
        {
            // Arrange
            var filter = new FilterGroup(new List<IFilter>
                                                      {
                                                          new RowFilter("last_name", "$eq", "Smith"),
                                                          new RowFilter("first_name", "$eq", "John")
                                                      });
            // Act
            var result = JsonConvert.SerializeObject(filter);

            // Assert
            Assert.AreEqual("{\"$and\":[{\"last_name\":{\"$eq\":\"Smith\"}},{\"first_name\":{\"$eq\":\"John\"}}]}", result);
        }
        public void ParametersWithConditionalOperators()
        {
            // Arrange
            var filter = new FilterGroup(new List<IFilter>
                                                              {
                                                                  new RowFilter("name", "$search", "McDonald's"),
                                                                  new RowFilter("category", "$bw", "Food & Beverage")
                                                              });

            // Act
            string result = Factual.Query("t/global", filter);
            dynamic json = JsonConvert.DeserializeObject(result);

            // Assert
            Assert.AreEqual("ok", (string)json.status);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Groups filters recently added to collection by operation, used with conditional operators.
        /// </summary>
        /// <param name="operation">Conditional operations</param>
        /// <param name="queries">Queries to group</param>
        public void PopRowFiltersIntoNewGroup(string operation, IQuery[] queries)
        {
            var filterCount = queries.Count();
            var filterGroup = new FilterGroup(operation);
            var filterList = GetRowFilterList();
            filterGroup.RowFilters = filterList.Skip(Math.Max(0, filterList.Count - filterCount)).Take(filterCount).ToList();

            if (filterCount > filterList.Count)
                filterCount = filterList.Count();

            filterList.RemoveRange(filterList.Count - filterCount, filterCount);

            Add(filterGroup);
        }