public void StringStaticNotEqualsNullMethodGeneratesMissingCriteria()
        {
            var where = Robots.Where(e => !String.Equals(e.Name, null));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <ExistsCriteria>(criteria);
            var existsCriteria = (ExistsCriteria)criteria;

            Assert.Equal("exists", existsCriteria.Name);
            Assert.Equal("prefix.name", existsCriteria.Field);
        }
        static void TestProjectionWithKeyAndCount(Expression query)
        {
            var searchRequest = ElasticQueryTranslator.Translate(CouchMapping, query).SearchRequest;

            var facet       = Assert.Single(searchRequest.Facets);
            var filterFacet = Assert.IsType <FilterFacet>(facet);

            Assert.Equal("GroupKey", filterFacet.Name);
            Assert.Same(MatchAllCriteria.Instance, filterFacet.Filter);
            Assert.IsType <ExistsCriteria>(searchRequest.Filter);
        }
        public void MinScoreCreatesRequestWithMinScore()
        {
            const double expectedScore = 123.4;

            var query = Robots.Where(q => q.Name.Contains("a")).MinScore(expectedScore);

            var request = ElasticQueryTranslator.Translate(Mapping, query.Expression).SearchRequest;

            Assert.NotNull(request.Query);
            Assert.Equal(expectedScore, request.MinScore);
        }
        public void NullableIntNotHasValuePropertyGeneratesMissingCriteria()
        {
            var where = Robots.Where(e => !e.Zone.HasValue);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <MissingCriteria>(criteria);
            var missingCriteria = (MissingCriteria)criteria;

            Assert.Equal("missing", missingCriteria.Name);
            Assert.Equal("prefix.zone", missingCriteria.Field);
        }
        public void StringEqualsNullGeneratesMissingCriteria()
        {
            var where = Robots.Where(e => e.Name == null);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <MissingCriteria>(criteria);
            var missingCriteria = (MissingCriteria)criteria;

            Assert.Equal("missing", missingCriteria.Name);
            Assert.Equal("prefix.name", missingCriteria.Field);
        }
        public void QueryAndWhereGeneratesQueryAndFilterCriteria()
        {
            var query = Robots
                        .Query(r => ElasticMethods.Regexp(r.Name, "r.*bot"))
                        .Where(r => r.Zone.HasValue);

            var searchRequest = ElasticQueryTranslator.Translate(Mapping, "prefix", query.Expression).SearchRequest;

            Assert.IsType <RegexpCriteria>(searchRequest.Query);
            Assert.IsType <ExistsCriteria>(searchRequest.Filter);
        }
Exemplo n.º 7
0
        public void AnyTranslatesToSizeOfOneAndExistFilter()
        {
            var first = MakeQueryableExpression("Any", Robots);

            var request = ElasticQueryTranslator.Translate(CouchMapping, first).SearchRequest;

            Assert.Equal(1, request.Size);
            var existsCriteria = Assert.IsType <ExistsCriteria>(request.Query);

            Assert.Equal("doc.id", existsCriteria.Field);
        }
        public void NullableIntNotEqualsNullGeneratesExistsCriteria()
        {
            var where = Robots.Where(e => e.Zone != null);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <ExistsCriteria>(criteria);
            var existsCriteria = (ExistsCriteria)criteria;

            Assert.Equal("exists", existsCriteria.Name);
            Assert.Equal("prefix.zone", existsCriteria.Field);
        }
Exemplo n.º 9
0
        public void TypeExistsCriteriaIsAppliedWhenFilterIsOrCriteria()
        {
            var query       = Robots.Where(r => r.Name == "a" || r.Cost > 1);
            var translation = ElasticQueryTranslator.Translate(CouchMapping, "prefix", query.Expression);

            var andCriteria = Assert.IsType <AndCriteria>(translation.SearchRequest.Filter);

            Assert.Equal(2, andCriteria.Criteria.Count);
            Assert.Single(andCriteria.Criteria, c => c is OrCriteria);
            Assert.Single(andCriteria.Criteria, c => c is ExistsCriteria);
        }
        public void OrderByWithThenByTwiceTranslatesToThreeSorts()
        {
            var ordered     = Robots.OrderBy(e => e.Id).ThenByScore().ThenBy(e => e.Cost);
            var sortOptions = ElasticQueryTranslator.Translate(Mapping, "prefix", ordered.Expression).SearchRequest.SortOptions;

            Assert.NotNull(sortOptions);
            Assert.True(sortOptions[0].Ascending && sortOptions[0].Name == "prefix.id");
            Assert.True(sortOptions[1].Ascending && sortOptions[1].Name == "_score");
            Assert.True(sortOptions[2].Ascending && sortOptions[2].Name == "prefix.cost");
            Assert.Equal(3, sortOptions.Count);
        }
        public void DecimalEqualsOperatorGeneratesTermCriteria()
        {
            const decimal expectedConstant = 710.956m;

            var where = Robots.Where(e => e.Cost == expectedConstant);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.cost", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void DateTimeStaticEqualsMethodGeneratesTermCriteria()
        {
            var expectedConstant = DateTime.Now;

            var where = Robots.Where(e => DateTime.Equals(e.Started, expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.started", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void Int32StaticEqualsMethodGeneratesTermCriteria()
        {
            const Int32 expectedConstant = 98004;

            var where = Robots.Where(e => int.Equals(e.Id, expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.id", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void DoubleStaticEqualsMethodGeneratesTermCriteria()
        {
            const double expectedConstant = 710.956;

            var where = Robots.Where(e => double.Equals(e.EnergyUse, expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.energyUse", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void StringArrayExistingContainsGeneratesTermCriteria()
        {
            var expectedConstant = "Robbie";

            var where = Robots.Where(e => e.Aliases.Contains(expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.aliases", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void StringStaticEqualsMethodReversedArgumentsGeneratesTermCriteria()
        {
            const string expectedConstant = "IG-88";

            var where = Robots.Where(e => String.Equals(expectedConstant, e.Name));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.name", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
Exemplo n.º 17
0
        public void Init()
        {
            mockLogger  = new Mock <ILogger <ElasticQueryTranslator> >();
            mockVisitor = new Mock <IVisitor>();

            mockVisitor.Setup(visitor => visitor.Visit(It.IsNotNull <ElasticSearchDSL>()))
            .Callback <ElasticSearchDSL>((dsl) => dsl.KustoQL = "some kql from mock visitor");

            elasticQueryTranslator = new ElasticQueryTranslator(
                mockVisitor.Object,
                mockLogger.Object);
        }
        public void SelectNewObjectWithMemberInitializersTranslatesToFields()
        {
            var selected = Robots.Select(r => new Robot {
                Id = r.Id, Started = r.Started
            });
            var fields = ElasticQueryTranslator.Translate(Mapping, selected.Expression).SearchRequest.Fields;

            Assert.NotNull(fields);
            Assert.Contains("id", fields);
            Assert.Contains("started", fields);
            Assert.Equal(2, fields.Count);
        }
        public void StringNotEqualsNullNegatedGeneratesMissingCriteria()
        {
            // ReSharper disable once NegativeEqualityExpression
            var where = Robots.Where(e => !(e.Name != null));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <MissingCriteria>(criteria);
            var missingCriteria = (MissingCriteria)criteria;

            Assert.Equal("missing", missingCriteria.Name);
            Assert.Equal("prefix.name", missingCriteria.Field);
        }
Exemplo n.º 20
0
        public void StringEndsWithGeneratesQueryStringCriteria()
        {
            const string expectedConstant = "Kryten";

            var where = Robots.Query(e => e.Name.EndsWith(expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Query;

            var queryStringCriteria = Assert.IsType <QueryStringCriteria>(criteria);

            Assert.Equal("prefix.name", queryStringCriteria.Fields.Single());
            Assert.Equal(String.Format("*{0}", expectedConstant), queryStringCriteria.Value);
        }
        public void SelectAnonymousProjectionTranslatesToNestedField()
        {
            var RobotsWithOs = new ElasticQuery <RobotWithOs>(SharedProvider);

            var selected      = RobotsWithOs.Select(r => new { r.OperatingSystem.Name });
            var searchRequest = ElasticQueryTranslator.Translate(Mapping, selected.Expression).SearchRequest;

            Assert.Equal("robotwithos", searchRequest.IndexType);
            Assert.NotNull(searchRequest.Fields);
            Assert.Contains("operatingSystem.name", searchRequest.Fields);
            Assert.Equal(1, searchRequest.Fields.Count);
        }
Exemplo n.º 22
0
        public void QueryGeneratesQueryCriteria()
        {
            var where = Robots.Query(r => r.Name == "IG-88" && r.Cost > 1);
            var request = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest;

            var boolCriteria = Assert.IsType <BoolCriteria>(request.Query);

            Assert.Null(request.Filter);
            Assert.Single(boolCriteria.Must, f => f.Name == "term");
            Assert.Single(boolCriteria.Must, f => f.Name == "range");
            Assert.Equal(2, boolCriteria.Must.Count);
        }
        public void StringEqualsMethodFromConstantGeneratesTermCriteria()
        {
            const string expectedConstant = "Marvin";

            var where = Robots.Where(e => expectedConstant.Equals(e.Name));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.name", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void PrefixElasticMethodCreatesPrefixWhereCriteria()
        {
            var where = Robots.Where(r => ElasticMethods.Prefix(r.Name, "robot"));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <PrefixCriteria>(criteria);
            var regexpCriteria = (PrefixCriteria)criteria;

            Assert.Equal("prefix", regexpCriteria.Name);
            Assert.Equal("prefix.name", regexpCriteria.Field);
            Assert.Equal("robot", regexpCriteria.Prefix);
        }
Exemplo n.º 25
0
        public void QueryStringGeneratesQueryStringCriteria()
        {
            const string expectedQueryStringValue = "Data";

            var where = Robots.QueryString(expectedQueryStringValue);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest;

            Assert.Null(criteria.Filter);
            Assert.NotNull(criteria.Query);
            var queryStringCriteria = Assert.IsType <QueryStringCriteria>(criteria.Query);

            Assert.Equal(expectedQueryStringValue, queryStringCriteria.Value);
        }
        public void LongCountTranslatesToFacetWhenGroupBy()
        {
            var first = Robots.GroupBy(g => 1).Select(a => a.LongCount());

            var request = ElasticQueryTranslator.Translate(CouchMapping, "prefix", first.Expression).SearchRequest;

            Assert.Equal("count", request.SearchType);
            Assert.IsType <ExistsCriteria>(request.Filter);

            var facet = Assert.Single(request.Facets);

            Assert.IsType <FilterFacet>(facet);
        }
        public void DoubleEqualsOperatorGeneratesTermCriteria()
        {
            const double expectedConstant = 710.956;

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            var where = Robots.Where(e => e.EnergyUse == expectedConstant);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.energyUse", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void AndOperatorGeneratesAndCriteria()
        {
            var where = Robots.Where(r => r.Name == "IG-88" && r.Cost > 1);
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <AndCriteria>(criteria);
            var orCriteria = (AndCriteria)criteria;

            Assert.Equal("and", orCriteria.Name);
            Assert.Single(orCriteria.Criteria, f => f.Name == "term");
            Assert.Single(orCriteria.Criteria, f => f.Name == "range");
            Assert.Equal(2, orCriteria.Criteria.Count);
        }
        public void ObjectStaticEqualsMethodGeneratesTermCriteria()
        {
            const string expectedConstant = "Marvin";

            // ReSharper disable once RedundantNameQualifier
            var where = Robots.Where(e => Object.Equals(e.Name, expectedConstant));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            var termCriteria = Assert.IsType <TermCriteria>(criteria);

            Assert.Equal("prefix.name", termCriteria.Field);
            Assert.Equal(expectedConstant, termCriteria.Value);
        }
        public void NullableIntStaticNotEqualsNullMethodGeneratesExistsCriteria()
        {
            // ReSharper disable once AccessToStaticMemberViaDerivedType
            // ReSharper disable once RedundantNameQualifier
            var where = Robots.Where(e => !Nullable <int> .Equals(e.Zone, null));
            var criteria = ElasticQueryTranslator.Translate(Mapping, "prefix", where.Expression).SearchRequest.Filter;

            Assert.IsType <ExistsCriteria>(criteria);
            var existsCriteria = (ExistsCriteria)criteria;

            Assert.Equal("exists", existsCriteria.Name);
            Assert.Equal("prefix.zone", existsCriteria.Field);
        }