示例#1
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.Ids.ToString()))
                fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString());

            List<string> ids = JsonConvert.DeserializeObject<List<string>>(fieldDict.GetString(_IDS));
            IdsQuery query = new IdsQuery(ids);

            if (fieldDict.ContainsKey(_TYPE))
            {
                try
                {
                    List<string> types = JsonConvert.DeserializeObject<List<string>>(fieldDict[_TYPE].ToString());
                    query.DocumentTypes = types;
                }
                catch
                {
                    if(!string.IsNullOrWhiteSpace(fieldDict[_TYPE].ToString()))
                    {
                        query.DocumentTypes = new List<string>()
                        {
                            fieldDict[_TYPE].ToString()
                        };
                    }
                    
                }
            }

            query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME);

            return query;
        }
 public void FAIL_CreateQuery_Ids()
 {
     try
     {
         IdsQuery query = new IdsQuery(null);
         Assert.Fail();
     }
     catch (ArgumentNullException argEx)
     {
         Assert.AreEqual("documentIds", argEx.ParamName);
     }
 }
        public void PASS_Serialize()
        {
            IdsQuery query = new IdsQuery(new List<string>() { "1", "2", "3" }) 
            { 
                DocumentTypes = new List<string>() 
                { 
                    "type" 
                } 
            };

            string result = JsonConvert.SerializeObject(query);
            Assert.IsNotNull(result);

            string expectedJson = "{\"ids\":{\"type\":\"type\",\"values\":[\"1\",\"2\",\"3\"]}}";
            Assert.AreEqual(expectedJson, result);
        }
 public void PASS_CreateQuery()
 {
     IdsQuery query = new IdsQuery(new List<string>(){ "1", "2", "3" });
     Assert.IsNotNull(query);
     Assert.AreEqual(3, query.DocumentIds.Count());
 }