public void ResolveTableInfo_JoinedGroupingTableInfo_SubStatementUnmodified()
        {
            var sqlJoinedGroupingTableInfo = SqlStatementModelObjectMother.CreateResolvedJoinedGroupingTableInfo(_sqlStatement);

            _stageMock
            .Expect(mock => mock.ResolveSqlStatement(_sqlStatement, _mappingResolutionContext))
            .Return(_sqlStatement);
            _resolverMock.Replay();

            var result = (ResolvedJoinedGroupingTableInfo)ResolvingTableInfoVisitor.ResolveTableInfo(sqlJoinedGroupingTableInfo, _resolverMock, _generator, _stageMock, _mappingResolutionContext);

            _stageMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(sqlJoinedGroupingTableInfo));
        }
        public void ApplyContext_ResolvedJoinedGroupingTableInfo_SameTableInfo()
        {
            var subStatement            = SqlStatementModelObjectMother.CreateSqlStatement_Resolved(typeof(Cook));
            var joinedGroupingTableInfo = SqlStatementModelObjectMother.CreateResolvedJoinedGroupingTableInfo(subStatement);

            _stageMock
            .Expect(mock => mock.ApplySelectionContext(subStatement, SqlExpressionContext.ValueRequired, _mappingresolutionContext))
            .Return(subStatement);
            _stageMock.Replay();

            var result = SqlContextTableInfoVisitor.ApplyContext(joinedGroupingTableInfo, SqlExpressionContext.ValueRequired, _stageMock, _mappingresolutionContext);

            Assert.That(result, Is.SameAs(joinedGroupingTableInfo));
            _stageMock.VerifyAllExpectations();
        }
        public void VisitResolvedJoinedGroupingTableInfo()
        {
            var sqlStatement = new SqlStatementBuilder(SqlStatementModelObjectMother.CreateSqlStatement_Resolved(typeof(Cook[])))
            {
                DataInfo = new StreamedSequenceInfo(typeof(IQueryable <Cook>), Expression.Constant(new Cook()))
            }.GetSqlStatement();
            var resolvedSubTableInfo = SqlStatementModelObjectMother.CreateResolvedJoinedGroupingTableInfo(sqlStatement);

            _stageMock
            .Expect(mock => mock.GenerateTextForSqlStatement(_commandBuilder, sqlStatement))
            .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("XXX"));
            _stageMock.Replay();

            _generator.VisitSubStatementTableInfo(resolvedSubTableInfo);

            _stageMock.VerifyAllExpectations();
            Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo("(XXX) AS [cook]"));
        }
        public void ResolveTableInfo_JoinedGroupingTableInfo_SubStatementModified()
        {
            var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatementWithCook();

            var sqlJoinedGroupingTableInfo = SqlStatementModelObjectMother.CreateResolvedJoinedGroupingTableInfo(sqlStatement);

            _stageMock
            .Expect(mock => mock.ResolveSqlStatement(sqlStatement, _mappingResolutionContext))
            .Return(_sqlStatement);
            _resolverMock.Replay();

            var result = (ResolvedJoinedGroupingTableInfo)ResolvingTableInfoVisitor.ResolveTableInfo(sqlJoinedGroupingTableInfo, _resolverMock, _generator, _stageMock, _mappingResolutionContext);

            _stageMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(sqlJoinedGroupingTableInfo));
            Assert.That(result.SqlStatement, Is.SameAs(_sqlStatement));
            Assert.That(result.TableAlias, Is.EqualTo(sqlJoinedGroupingTableInfo.TableAlias));
            Assert.That(result.AssociatedGroupingSelectExpression, Is.SameAs(sqlJoinedGroupingTableInfo.AssociatedGroupingSelectExpression));
            Assert.That(result.GroupSourceTableAlias, Is.EqualTo(sqlJoinedGroupingTableInfo.GroupSourceTableAlias));
        }
        public void ApplyContext_ResolvedJoinedGroupingTableInfo_NewTableInfo()
        {
            var subStatement = SqlStatementModelObjectMother.CreateSqlStatement_Resolved(typeof(Cook));

            var joinedGroupingTableInfo = SqlStatementModelObjectMother.CreateResolvedJoinedGroupingTableInfo(subStatement);
            var returnedStatement       = SqlStatementModelObjectMother.CreateSqlStatement_Resolved(typeof(Cook));

            _stageMock
            .Expect(mock => mock.ApplySelectionContext(subStatement, SqlExpressionContext.ValueRequired, _mappingresolutionContext))
            .Return(returnedStatement);
            _stageMock.Replay();

            var result = (ResolvedJoinedGroupingTableInfo)SqlContextTableInfoVisitor.ApplyContext(joinedGroupingTableInfo, SqlExpressionContext.ValueRequired, _stageMock, _mappingresolutionContext);

            _stageMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(joinedGroupingTableInfo));
            Assert.That(result.GroupSourceTableAlias, Is.EqualTo(joinedGroupingTableInfo.GroupSourceTableAlias));
            Assert.That(result.AssociatedGroupingSelectExpression, Is.SameAs(joinedGroupingTableInfo.AssociatedGroupingSelectExpression));
            Assert.That(result.SqlStatement, Is.SameAs(returnedStatement));
            Assert.That(result.TableAlias, Is.EqualTo(joinedGroupingTableInfo.TableAlias));
        }