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();
        }
        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 ()
 {
   _handler = new TestableResultOperatorHandler();
   _resultOperator = new TestChoiceResultOperator (false);
   _statementBuilder = new SqlStatementBuilder();
   _statementBuilder.SelectProjection = Expression.Constant ("select");
   _statementBuilder.DataInfo = new StreamedSequenceInfo (typeof (Cook[]), Expression.Constant (new Cook()));
   _generator = new UniqueIdentifierGenerator();
   _stageMock = MockRepository.GenerateMock<ISqlPreparationStage>();
   _context = SqlStatementModelObjectMother.CreateSqlPreparationContext ();
 }
 public void SetUp ()
 {
   _resultOperatorWithDefaultWhenEmpty = new TestChoiceResultOperator (true);
   _resultOperatorNoDefaultWhenEmpty = new TestChoiceResultOperator (false);
 }
    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();
    }