public void PASS_Serialize_Order() { FieldSort sort = new FieldSort("field") { SortOrder = SortOrderEnum.Descending }; string json = JsonConvert.SerializeObject(sort); Assert.IsNotNull(json); string expectedJson = "{\"field\":\"desc\"}"; Assert.AreEqual(expectedJson, json); }
public void PASS_Serialize() { FieldSort sort = new FieldSort("field"); string json = JsonConvert.SerializeObject(sort); Assert.IsNotNull(json); string expectedJson = "\"field\""; Assert.AreEqual(expectedJson, json); }
public void FAIL_CreateSort_NestedPath() { try { FieldSort sort = new FieldSort("field", (string)null); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("nestedPath", ex.ParamName); } }
public void FAIL_CreateSort_Field() { try { FieldSort sort = new FieldSort(null); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.AreEqual("field", ex.ParamName); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.ValueType == typeof(string)) return new FieldSort(reader.Value.ToString()); Dictionary<string, object> fieldDict = serializer.Deserialize<Dictionary<string, object>>(reader); KeyValuePair<string, object> fieldKvp = fieldDict.First(); string fieldName = fieldKvp.Key; try { fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(fieldKvp.Value.ToString()); } catch { SortOrderEnum order = SortOrderEnum.Ascending; order = SortOrderEnum.Find(fieldKvp.Value.ToString()); return new FieldSort(fieldName) { SortOrder = order }; } FieldSort sort = null; if(fieldDict.ContainsKey(_NESTED_FILTER)) { IFilter nestedFilter = JsonConvert.DeserializeObject<IFilter>(fieldDict.GetString(_NESTED_FILTER)); sort = new FieldSort(fieldName, nestedFilter); } else if (fieldDict.ContainsKey(_NESTED_PATH)) { sort = new FieldSort(fieldName, fieldDict.GetString(_NESTED_PATH)); } if(fieldDict.ContainsKey(_MODE)) { SortModeEnum mode = SortModeEnum.Average; mode = SortModeEnum.Find(fieldDict.GetString(_MODE)); sort.SortMode = mode; } sort.SortOrder = SortOrderEnum.Find(fieldDict.GetString(SortClauseSerializer._ORDER, SortClauseSerializer._ORDER_DEFAULT.ToString())); sort.Reverse = fieldDict.GetBoolOrDefault(SortClauseSerializer._REVERSE); sort.IgnoreUnmappedField = fieldDict.GetBool(_IGNORE_UNMAPPED, _IGNORE_UNMAPPED_DEFAULT); if (fieldDict.ContainsKey(_MISSING)) { sort.Missing = JsonConvert.DeserializeObject<MissingValue>(fieldDict.GetString(_MISSING)); } return sort; }
public void PASS_Serialize_NestedFilter() { FieldSort sort = new FieldSort("field", new TermFilter("field", "value")){ SortMode = SortModeEnum.Maximum }; string json = JsonConvert.SerializeObject(sort); Assert.IsNotNull(json); string expectedJson = "{\"field\":{\"mode\":\"max\",\"nested_filter\":{\"term\":{\"field\":\"value\"}}}}"; Assert.AreEqual(expectedJson, json); }
public void PASS_Serialize_NestedPath() { FieldSort sort = new FieldSort("field", "object") { IgnoreUnmappedField = true, Reverse = true }; string json = JsonConvert.SerializeObject(sort); Assert.IsNotNull(json); string expectedJson = "{\"field\":{\"ignore_unmapped\":true,\"reverse\":true,\"nested_path\":\"object\"}}"; Assert.AreEqual(expectedJson, json); }