public void Queries_must_be_transformed_to_correct_outputs() { var tests = JsonArray.Parse(File.ReadAllText("test_query_transform.json")) .Select(e => e.Get <JsonObject>()) .ToArray(); foreach (var test in tests) { var jo = test.Property <JsonObject>("input"); var input = jo.ToQuery(); var aliases = FieldAliasesRepository.GetAliases(jo.Property <string>("field_aliases")); var expander = QueryExpanderRepository.GetQueryExpander(jo.Property <string>("query_expand")); jo = test.Property <JsonObject>("output"); var output = jo.ToQuery(); var query = input.Transform(aliases, expander); Assert.IsTrue(query.ToJson().ToString(false) == output.ToJson().ToString(false)); } }
public SearchTemplate(JsonObject jo) { Id = jo.Property <string>(ID); Name = jo.Property <string>(NAME); Description = jo.Property <string>(DESCRIPTION); Index = jo.Property <string>(INDEX); Type = jo.Property <string>(TYPE); var es = jo.Property(ES).Value; if (es != null) { if (es.Type == JsonType.String) { RequestBody = JsonObject.Parse(es.Get <string>()); } else { RequestBody = es.Get <JsonObject>(); } } var jp = jo.Property(FIELD_ALIASES); if (jp != null) { IDictionary <string, string[]> aliases = null; JsonObject values = null; if (jp.Value.Type == JsonType.String) { string value = jp.Value.Get <string>(); if (value.StartsWith("{")) { values = JsonObject.Parse(value); } else { aliases = FieldAliasesRepository.GetAliases(value); } } else if (jp.Value.Type == JsonType.Object) { values = jp.Value.Get <JsonObject>(); } if (values != null) { aliases = FieldAliasesRepository.GetAliases(values); jp = new JsonProperty(FIELD_ALIASES, values); } if (aliases != null) { FieldAliases = aliases; _aliases = jp; } } jp = jo.Property(QUERY_EXPAND); if (jp != null) { IQueryExpander qe = null; JsonObject values = null; if (jp.Value.Type == JsonType.String) { string value = jp.Value.Get <string>(); if (value.StartsWith("{")) { values = JsonObject.Parse(value); } else { qe = QueryExpanderRepository.GetQueryExpander(value); } } else if (jp.Value.Type == JsonType.Object) { values = jp.Value.Get <JsonObject>(); } if (values != null) { qe = QueryExpanderRepository.GetQueryExpander(values); jp = new JsonProperty(QUERY_EXPAND, values); } if (qe != null) { QueryExpander = qe; _qe = jp; } } }