public void Translate_NoVisitor_ThrowsArgumentNullException()
        {
            // Arrange

            var method     = typeof(N1QlFunctions).GetMethod("Key");
            var expression = Expression.Call(method,
                                             Expression.Constant("arg1"));

            var transformer = new KeyMethodCallTranslator();

            // Act/Assert

            var result = Assert.Throws <ArgumentNullException>(() => transformer.Translate(expression, null));

            Assert.AreEqual("expressionTreeVisitor", result.ParamName);
        }
        public void Translate_NoMethod_ThrowsArgumentNullException()
        {
            // Arrange

            var visitor = new Mock <N1QlExpressionTreeVisitor>(new N1QlQueryGenerationContext())
            {
                CallBase = true
            };

            var transformer = new KeyMethodCallTranslator();

            // Act/Assert

            var result = Assert.Throws <ArgumentNullException>(() => transformer.Translate(null, visitor.Object));

            Assert.AreEqual("methodCallExpression", result.ParamName);
        }
        public void Translate_OneParameter_RendersCorrectly()
        {
            // Arrange

            var visitor = new Mock <N1QlExpressionTreeVisitor>(new N1QlQueryGenerationContext())
            {
                CallBase = true
            };

            var method     = typeof(N1QlFunctions).GetMethod("Key");
            var expression = Expression.Call(method,
                                             Expression.Constant("arg1"));

            var transformer = new KeyMethodCallTranslator();

            // Act

            transformer.Translate(expression, visitor.Object);
            var result = visitor.Object.GetN1QlExpression();

            // Assert

            Assert.AreEqual("META('arg1').id", result);
        }