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