public void PASS_Serialize()
        {
            TopChildrenQuery query = new TopChildrenQuery("child", new TermQuery("field", "value"));
            string json = JsonConvert.SerializeObject(query);
            Assert.IsNotNull(json);

            string expectedJson = "{\"top_children\":{\"type\":\"child\",\"query\":{\"term\":{\"field\":\"value\"}}}}";
            Assert.AreEqual(expectedJson, json);
        }
 public void FAIL_CreateQuery_Query()
 {
     try
     {
         TopChildrenQuery query = new TopChildrenQuery("child", null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("query", ex.ParamName);
     }
 }
 public void FAIL_CreateQuery_DocumentType()
 {
     try
     {
         TopChildrenQuery query = new TopChildrenQuery(null, null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("documentType", ex.ParamName);
     }
 }
 public void PASS_CreateQuery()
 {
     TopChildrenQuery query = new TopChildrenQuery("child", new TermQuery("field", "value"));
     Assert.IsNotNull(query);
     Assert.AreEqual("child", query.DocumentType);
     Assert.IsTrue(query.Query is TermQuery);
     TermQuery termQuery = query.Query as TermQuery;
     Assert.AreEqual("field", termQuery.Field);
     Assert.AreEqual("value", termQuery.Value);
     Assert.AreEqual(ScoreTypeEnum.Maximum, query.Score);
     Assert.IsNull(query.Scope);
     Assert.AreEqual(5, query.Factor);
     Assert.AreEqual(2, query.IncrementalFactor);
 }
예제 #5
0
        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(QueryTypeEnum.TopChildren.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            TopChildrenQuery query = new TopChildrenQuery(
                fieldDict.GetString(_TYPE),
                JsonConvert.DeserializeObject<IQuery>(fieldDict.GetString(_QUERY)));

            query.Factor = fieldDict.GetInt32(_FACTOR, _FACTOR_DEFAULT);
            query.IncrementalFactor = fieldDict.GetInt32(_INCREMENTAL_FACTOR, _INCREMENTAL_FACTOR_DEFAULT);
            query.Scope = fieldDict.GetStringOrDefault(_SCOPE);
            query.Score = ScoreTypeEnum.Find(fieldDict.GetString(_SCORE, _SCORE_DEFAULT.ToString()));
            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }