public void GetFieldValueReturnsDefaultObjectIfKeyNotFoundForValueType()
        {
            var dictionary = new Dictionary <string, JToken>();

            var actual = (int)ProjectionExpressionVisitor.GetFieldValue(dictionary, "Any", typeof(int));

            Assert.Equal(0, actual);
        }
        public void GetFieldValueReturnsNullIfKeyNotFoundForReferenceType()
        {
            var dictionary = new Dictionary <string, JToken>();

            var actual = (Sample)ProjectionExpressionVisitor.GetFieldValue(dictionary, "Any", typeof(Sample));

            Assert.Null(actual);
        }
        public void RebindCollectsSinglePropertyFieldName()
        {
            var source       = new FakeQuery <Sample>(new FakeQueryProvider()).Select(s => s.Name);
            var hitParameter = Expression.Parameter(typeof(Hit));
            var rebound      = ProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression);

            Assert.Contains("prefix.name", rebound.FieldNames);
            Assert.Equal(1, rebound.FieldNames.Count());
        }
        public void RebindCollectsTupleCreateProjectionPropertiesFieldNames()
        {
            var source       = new FakeQuery <Sample>(new FakeQueryProvider()).Select(s => Tuple.Create(s.Name, s.Id, ElasticFields.Score));
            var hitParameter = Expression.Parameter(typeof(Hit));
            var rebound      = ProjectionExpressionVisitor.Rebind(hitParameter, "prefix", validMapping, source.Expression);

            Assert.Contains("prefix.name", rebound.FieldNames);
            Assert.Contains("prefix.id", rebound.FieldNames);
            Assert.Contains("_score", rebound.FieldNames);
            Assert.Equal(3, rebound.FieldNames.Count());
        }
        public void GetFieldValueReturnsTokenFromDictionaryIfKeyFound()
        {
            var expected = new Sample {
                Id = "T-900", Name = "Cameron"
            };
            const string key        = "Summer";
            var          dictionary = new Dictionary <string, JToken> {
                { key, JToken.FromObject(expected) }
            };

            var actual = (Sample)ProjectionExpressionVisitor.GetFieldValue(dictionary, key, typeof(Sample));

            Assert.Equal(expected.Id, actual.Id);
            Assert.Equal(expected.Name, actual.Name);
        }
 public void Rebind_GuardClauses()
 {
     Assert.Throws <ArgumentNullException>(() => ProjectionExpressionVisitor.Rebind(null, "prefix", validMapping, Expression.Constant(1)));
     Assert.Throws <ArgumentNullException>(() => ProjectionExpressionVisitor.Rebind(validParameter, "prefix", null, Expression.Constant(1)));
     Assert.Throws <ArgumentNullException>(() => ProjectionExpressionVisitor.Rebind(validParameter, "prefix", validMapping, null));
 }