Inheritance: Remotion.Linq.SqlBackend.SqlPreparation.SqlPreparationQueryModelVisitor
        public void VisitQueryModel_ConstantExpressionCollection_VisitResultOperatorsIsCalled()
        {
            var handlerMock = MockRepository.GenerateStrictMock <IResultOperatorHandler>();
            var registry    = new ResultOperatorHandlerRegistry();

            registry.Register(typeof(TestChoiceResultOperator), handlerMock);
            var queryModelVisitor = new TestableSqlPreparationQueryModelVisitor(_context, _stageMock, _generator, registry);

            var constantExpression = Expression.Constant(new[] { "t1", "t2" });

            _queryModel.MainFromClause.FromExpression = constantExpression;
            var resultOperator = new TestChoiceResultOperator(false);

            _queryModel.ResultOperators.Add(resultOperator);
            var sqlStatementBuilder = queryModelVisitor.SqlStatementBuilder;

            handlerMock.Expect(
                mock =>
                mock.HandleResultOperator(
                    Arg <ResultOperatorBase> .Matches(o => o == resultOperator),
                    Arg <SqlStatementBuilder> .Matches(sb => sb == sqlStatementBuilder),
                    Arg <UniqueIdentifierGenerator> .Matches(g => g == _generator),
                    Arg <ISqlPreparationStage> .Matches(s => s == _stageMock),
                    Arg <ISqlPreparationContext> .Matches(c => c != _context)));
            handlerMock.Replay();

            queryModelVisitor.VisitQueryModel(_queryModel);

            handlerMock.VerifyAllExpectations();
        }
        public void VisitResultOperator_HandlesResultOperator()
        {
            var resultOperator = new TestChoiceResultOperator(false);

            var handlerMock = MockRepository.GenerateMock <IResultOperatorHandler>();

            var registry = new ResultOperatorHandlerRegistry();

            registry.Register(typeof(TestChoiceResultOperator), handlerMock);
            var queryModelVisitor   = new TestableSqlPreparationQueryModelVisitor(_context, _stageMock, _generator, registry);
            var sqlStatementBuilder = queryModelVisitor.SqlStatementBuilder;

            handlerMock.Expect(
                mock =>
                mock.HandleResultOperator(
                    Arg <ResultOperatorBase> .Matches(o => o == resultOperator),
                    Arg <SqlStatementBuilder> .Matches(sb => sb == sqlStatementBuilder),
                    Arg <UniqueIdentifierGenerator> .Matches(g => g == _generator),
                    Arg <ISqlPreparationStage> .Matches(s => s == _stageMock),
                    Arg <ISqlPreparationContext> .Matches(c => c != _context)));
            handlerMock.Replay();

            queryModelVisitor.VisitResultOperator(resultOperator, _queryModel, 0);

            handlerMock.VerifyAllExpectations();
        }
        public void VisitResultOperator_NoHandlerFound()
        {
            var resultOperator    = new TestChoiceResultOperator(false);
            var registry          = new ResultOperatorHandlerRegistry();
            var queryModelVisitor = new TestableSqlPreparationQueryModelVisitor(_context, _stageMock, _generator, registry);

            queryModelVisitor.VisitResultOperator(resultOperator, _queryModel, 0);
        }
        public void SetUp()
        {
            _generator    = new UniqueIdentifierGenerator();
            _context      = SqlStatementModelObjectMother.CreateSqlPreparationContext();
            _defaultStage = new DefaultSqlPreparationStage(
                CompoundMethodCallTransformerProvider.CreateDefault(), ResultOperatorHandlerRegistry.CreateDefault(), _generator);

            _mainFromClause = ExpressionHelper.CreateMainFromClause <Cook>();
            _selectClause   = ExpressionHelper.CreateSelectClause(_mainFromClause);
            _orderByClause  = ExpressionHelper.CreateOrderByClause();
            _queryModel     = new QueryModel(_mainFromClause, _selectClause);

            _stageMock          = MockRepository.GenerateStrictMock <ISqlPreparationStage>();
            _visitor            = new TestableSqlPreparationQueryModelVisitor(_context, _stageMock);
            _visitorPartialMock = MockRepository.GeneratePartialMock <TestableSqlPreparationQueryModelVisitor> (_context, _stageMock);
        }
    public void SetUp ()
    {
      _generator = new UniqueIdentifierGenerator();
      _context = SqlStatementModelObjectMother.CreateSqlPreparationContext();
      _defaultStage = new DefaultSqlPreparationStage (
          CompoundMethodCallTransformerProvider.CreateDefault(), ResultOperatorHandlerRegistry.CreateDefault(), _generator);

      _mainFromClause = ExpressionHelper.CreateMainFromClause<Cook>();
      _selectClause = ExpressionHelper.CreateSelectClause (_mainFromClause);
      _orderByClause = ExpressionHelper.CreateOrderByClause();
      _queryModel = new QueryModel (_mainFromClause, _selectClause);

      _stageMock = MockRepository.GenerateStrictMock<ISqlPreparationStage>();
      _visitor = new TestableSqlPreparationQueryModelVisitor (_context, _stageMock);
      _visitorPartialMock = MockRepository.GeneratePartialMock<TestableSqlPreparationQueryModelVisitor> (_context, _stageMock);
    }
    public void VisitResultOperator_NoHandlerFound ()
    {
      var resultOperator = new TestChoiceResultOperator (false);
      var registry = new ResultOperatorHandlerRegistry ();
      var queryModelVisitor = new TestableSqlPreparationQueryModelVisitor (_context, _stageMock, _generator, registry);

      queryModelVisitor.VisitResultOperator (resultOperator, _queryModel, 0);
    }
    public void VisitResultOperator_HandlesResultOperator ()
    {
      var resultOperator = new TestChoiceResultOperator (false);

      var handlerMock = MockRepository.GenerateMock<IResultOperatorHandler>();
      
      var registry = new ResultOperatorHandlerRegistry();
      registry.Register (typeof (TestChoiceResultOperator), handlerMock);
      var queryModelVisitor = new TestableSqlPreparationQueryModelVisitor (_context, _stageMock, _generator, registry);
      var sqlStatementBuilder = queryModelVisitor.SqlStatementBuilder;

      handlerMock.Expect (
          mock =>
          mock.HandleResultOperator (
              Arg<ResultOperatorBase>.Matches (o => o == resultOperator),
              Arg<SqlStatementBuilder>.Matches (sb => sb == sqlStatementBuilder),
              Arg<UniqueIdentifierGenerator>.Matches (g => g == _generator),
              Arg<ISqlPreparationStage>.Matches (s => s == _stageMock),
              Arg<ISqlPreparationContext>.Matches (c => c != _context)));
      handlerMock.Replay();

      queryModelVisitor.VisitResultOperator (resultOperator, _queryModel, 0);

      handlerMock.VerifyAllExpectations();
    }
    public void VisitQueryModel_ConstantExpressionCollection_VisitResultOperatorsIsCalled ()
    {
      var handlerMock = MockRepository.GenerateStrictMock<IResultOperatorHandler>();
      var registry = new ResultOperatorHandlerRegistry();
      registry.Register (typeof (TestChoiceResultOperator), handlerMock);
      var queryModelVisitor = new TestableSqlPreparationQueryModelVisitor (_context, _stageMock, _generator, registry);

      var constantExpression = Expression.Constant (new[] { "t1", "t2" });
      _queryModel.MainFromClause.FromExpression = constantExpression;
      var resultOperator = new TestChoiceResultOperator (false);
      _queryModel.ResultOperators.Add (resultOperator);
      var sqlStatementBuilder = queryModelVisitor.SqlStatementBuilder;

      handlerMock.Expect (
          mock =>
          mock.HandleResultOperator (
              Arg<ResultOperatorBase>.Matches (o => o == resultOperator),
              Arg<SqlStatementBuilder>.Matches (sb => sb == sqlStatementBuilder),
              Arg<UniqueIdentifierGenerator>.Matches (g => g == _generator),
              Arg<ISqlPreparationStage>.Matches (s => s == _stageMock),
              Arg<ISqlPreparationContext>.Matches (c => c != _context)));
      handlerMock.Replay();

      queryModelVisitor.VisitQueryModel (_queryModel);

      handlerMock.VerifyAllExpectations();
    }