public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Dictionary<string, object> fieldDict = serializer.Deserialize<Dictionary<string, object>>(reader); if (fieldDict.ContainsKey(FilterTypeEnum.Not.ToString())) fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString()); NotFilter filter = null; if (fieldDict.ContainsKey(_FILTER)) { filter = new NotFilter(JsonConvert.DeserializeObject<IFilter>(fieldDict.GetString(_FILTER))); } else { KeyValuePair<string, object> queryKvp = fieldDict.FirstOrDefault(x => !_KnownFields.Contains(x.Key)); if (string.IsNullOrWhiteSpace(queryKvp.Key)) throw new RequiredPropertyMissingException("filter"); QueryTypeEnum queryType = QueryTypeEnum.Term; queryType = QueryTypeEnum.Find(queryKvp.Key); if (queryType == null) throw new Exception("Unable to find query type."); IQuery query = JsonConvert.DeserializeObject(fieldDict.First().Value.ToString(), queryType.ImplementationType) as IQuery; filter = new NotFilter(query); } FilterSerializer.DeserializeBaseValues(filter, _CACHE_DEFAULT, fieldDict); return filter; }
public void PASS_CreateFilter_Query() { NotFilter filter = new NotFilter(new TermQuery("field", "value")); Assert.IsNotNull(filter); Assert.AreEqual("field", (filter.Query as TermQuery).Field); Assert.AreEqual("value", (filter.Query as TermQuery).Value); }
public void PASS_Serialize_Query() { NotFilter filter = new NotFilter(new TermQuery("field", "value")); string json = JsonConvert.SerializeObject(filter); Assert.IsNotNull(json); string expectedJson = "{\"not\":{\"term\":{\"field\":\"value\"}}}"; Assert.AreEqual(expectedJson, json); }
public void FAIL_CreateFilter_Query() { try { NotFilter filter = new NotFilter((IQuery)null); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("query", ex.ParamName); } }