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