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); }
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); }
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); }
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); }
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); }
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); }
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); }