public void FAIL_CreateQuery_ChildType() { try { HasChildQuery query = new HasChildQuery(null, new TermQuery("field", "value")); Assert.Fail(); } catch (ArgumentNullException argEx) { Assert.AreEqual("childType", argEx.ParamName); } }
public void FAIL_CreateQuery_Query() { try { HasChildQuery query = new HasChildQuery("type", null); Assert.Fail(); } catch (ArgumentNullException argEx) { Assert.AreEqual("query", argEx.ParamName); } }
public void PASS_Serialize() { HasChildQuery query = new HasChildQuery("type", new TermQuery("field", "value")) { ScoreType = ScoreTypeEnum.Maximum }; string json = JsonConvert.SerializeObject(query); Assert.IsNotNull(json); string expectedJson = "{\"has_child\":{\"type\":\"type\",\"score_type\":\"max\",\"query\":{\"term\":{\"field\":\"value\"}}}}"; Assert.AreEqual(expectedJson, json); }
public void PASS_CreateQuery() { HasChildQuery query = new HasChildQuery("type", new TermQuery("field", "value")) { ScoreType = ScoreTypeEnum.Maximum }; Assert.IsNotNull(query); Assert.AreEqual("type", query.ChildType); Assert.AreEqual(ScoreTypeEnum.Maximum, query.ScoreType); Assert.IsTrue(query.Query is TermQuery); Assert.AreEqual("field", (query.Query as TermQuery).Field); Assert.AreEqual("value", (query.Query as TermQuery).Value); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Dictionary<string, object> queryDict = serializer.Deserialize<Dictionary<string, object>>(reader); if(queryDict.ContainsKey(QueryTypeEnum.HasChild.ToString())) queryDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(queryDict.First().Value.ToString()); string childType = queryDict.GetString(_CHILD_TYPE); IQuery query = JsonConvert.DeserializeObject<IQuery>(queryDict.GetString(_QUERY)); HasChildQuery childQuery = new HasChildQuery(childType, query); ScoreTypeEnum scoreType = ScoreTypeEnum.None; childQuery.ScoreType = ScoreTypeEnum.Find(queryDict.GetStringOrDefault(_SCORE_TYPE)); if (scoreType == null) throw new Exception(queryDict[_SCORE_TYPE].ToString() + " is not an allowed score type for the has child query."); childQuery.QueryName = queryDict.GetStringOrDefault(QuerySerializer._QUERY_NAME); return childQuery; }