public void RebindEntityToEntityIsUnchanged() { var source = new FakeQuery <Sample>(new FakeQueryProvider()).Select(f => f); var rebound = ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression); Assert.Same(source.Expression, rebound); }
public void RebindElasticFieldsToHitProperties() { var source = new FakeQuery <Sample>(new FakeQueryProvider()).Select(f => ElasticFields.Score); var rebound = ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression); var flattened = FlatteningExpressionVisitor.Flatten(rebound); Assert.Single(flattened.OfType <MemberExpression>(), e => e.Expression == hitParameter && e.Member.Name == "_score"); }
public void Rebind_GuardClauses() { Assert.Throws <ArgumentNullException>(() => ElasticFieldsProjectionExpressionVisitor.Rebind(null, "prefix", validMapping, Expression.Constant(1))); Assert.Throws <ArgumentNullException>(() => ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", null, Expression.Constant(1))); Assert.Throws <ArgumentNullException>(() => ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, null)); }
public void RebindWithNonElasticMemberIsUnchanged() { var source = new FakeQuery <Sample>(new FakeQueryProvider()).Select(f => f.Name); var rebound = ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression); var memberExpression = FlatteningExpressionVisitor.Flatten(rebound).OfType <MemberExpression>().FirstOrDefault(); Assert.NotNull(memberExpression); Assert.Equal(memberExpression.Member.Name, "Name"); Assert.IsAssignableFrom <ParameterExpression>(memberExpression.Expression); Assert.Equal("f", ((ParameterExpression)memberExpression.Expression).Name); }
public void RebindAnonymousProjectionEntityAndElasticFieldsToMaterializationAndHitProperty() { var source = new FakeQuery <Sample>(new FakeQueryProvider()).Select(f => new { f, ElasticFields.Score }); var rebound = ElasticFieldsProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression); var flattened = FlatteningExpressionVisitor.Flatten(rebound); Assert.Single(flattened.OfType <MemberExpression>(), m => m.Expression == hitParameter && m.Member.Name == "_score"); Assert.Contains(hitParameter, flattened); var entityParameter = flattened.OfType <ParameterExpression>().FirstOrDefault(p => p.Name == "f" && p.Type == typeof(Sample)); Assert.NotNull(entityParameter); Assert.Single(flattened.OfType <NewExpression>(), e => e.Arguments.Contains(entityParameter)); }