Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
 public void PASS_Serialize()
 {
     FieldSort sort = new FieldSort("field");
     string json = JsonConvert.SerializeObject(sort);
     Assert.IsNotNull(json);
     string expectedJson = "\"field\"";
     Assert.AreEqual(expectedJson, json);
 }
Ejemplo n.º 3
0
 public void FAIL_CreateSort_NestedPath()
 {
     try
     {
         FieldSort sort = new FieldSort("field", (string)null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("nestedPath", ex.ParamName);
     }
 }
Ejemplo n.º 4
0
 public void FAIL_CreateSort_Field()
 {
     try
     {
         FieldSort sort = new FieldSort(null);
         Assert.Fail();
     }
     catch (ArgumentNullException ex)
     {
         Assert.AreEqual("field", ex.ParamName);
     }
 }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 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);
 }