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(SearchPieceTypeEnum.Highlighter.ToString())) fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldDict.First().Value.ToString()); List<FieldHighlighter> fieldHighlighters = new List<FieldHighlighter>(); foreach (KeyValuePair<string, object> fieldKvp in fieldDict.Where(x => !_KnownFields.Contains(x.Key, StringComparer.OrdinalIgnoreCase))) { Dictionary<string, object> internalDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldKvp.Value.ToString()); FieldHighlighter fieldHighlighter = new FieldHighlighter(fieldKvp.Key); DeserializeHighlighterOptions(fieldHighlighter, internalDict); if (internalDict.ContainsKey(_HIGHLIGHT_QUERY)) fieldHighlighter.HighlightQuery = JsonConvert.DeserializeObject<IQuery>(internalDict.GetString(_HIGHLIGHT_QUERY)); if (internalDict.ContainsKey(_MATCHED_FIELDS)) fieldHighlighter.MatchedFields = JsonConvert.DeserializeObject<IEnumerable<string>>(internalDict.GetString(_MATCHED_FIELDS)); fieldHighlighters.Add(fieldHighlighter); } if (!fieldHighlighters.Any()) throw new RequiredPropertyMissingException("highlight fields"); Highlighter highlighter = new Highlighter(fieldHighlighters); DeserializeHighlighterOptions(highlighter, fieldDict); return highlighter; }
public void PASS_Create() { Highlighter highlighter = new Highlighter(new List<FieldHighlighter>() { new FieldHighlighter("field") }); Assert.IsNotNull(highlighter); Assert.AreEqual("field", highlighter.FieldHighlighters.First().Field); }
public void PASS_Serializer() { Highlighter highlighter = new Highlighter(new List<FieldHighlighter>() { new FieldHighlighter("field") }); string json = JsonConvert.SerializeObject(highlighter); Assert.IsNotNull(json); string expectedJson = "{\"field\":{}}"; Assert.AreEqual(expectedJson, json); }
public void FAIL_Create_Fields() { try { Highlighter highlighter = new Highlighter(null); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("fieldHighlighters", ex.ParamName); } }