Example #1
0
        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));
            }
        }
Example #2
0
        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;
                }
            }
        }