public void CreateSqlQuery() { var fakePreparationResult = CreateSqlStatement(); _preparationStageMock .Expect(mock => mock.PrepareSqlStatement(_queryModel, null)) .Return(fakePreparationResult); var fakeResolutionResult = CreateSqlStatement(); _resolutionStageMock .Expect(mock => mock.ResolveSqlStatement(Arg.Is(fakePreparationResult), Arg <MappingResolutionContext> .Is.TypeOf)) .Return(fakeResolutionResult); _generationStageMock .Expect(mock => mock.GenerateTextForOuterSqlStatement(Arg <SqlCommandBuilder> .Is.TypeOf, Arg.Is(fakeResolutionResult))) .WhenCalled(mi => { var sqlCommandBuilder = ((SqlCommandBuilder)mi.Arguments[0]); sqlCommandBuilder.Append("TestTest"); sqlCommandBuilder.SetInMemoryProjectionBody(Expression.Constant(null)); }); var result = _sqlQueryGenerator.CreateSqlQuery(_queryModel); _preparationStageMock.VerifyAllExpectations(); _resolutionStageMock.VerifyAllExpectations(); _generationStageMock.VerifyAllExpectations(); Assert.That(result.SqlCommand.CommandText, Is.EqualTo("TestTest")); }
public void VisitSqlSubStatementExpression() { var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatement_Resolved(typeof(Cook)); var subStatementExpression = new SqlSubStatementExpression(sqlStatement); _stageMock .Expect( mock => mock.GenerateTextForSqlStatement(_commandBuilder, sqlStatement)) .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("SELECT [t].[Name] FROM [Table] AS [t]")); _stageMock.Replay(); SqlGeneratingExpressionVisitor.GenerateSql(subStatementExpression, _commandBuilder, _stageMock); Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo("(SELECT [t].[Name] FROM [Table] AS [t])")); _stageMock.VerifyAllExpectations(); }
public void GenerateSql_ForJoinedTable() { var originalTable = new SqlTable(new ResolvedSimpleTableInfo(typeof(Kitchen), "KitchenTable", "t1"), JoinSemantics.Inner); var kitchenCookMember = typeof(Kitchen).GetProperty("Cook"); var joinedTable = originalTable.GetOrAddLeftJoin(CreateResolvedJoinInfo(typeof(Cook), "t1", "ID", "CookTable", "t2", "FK"), kitchenCookMember); joinedTable.JoinInfo = CreateResolvedJoinInfo(typeof(Cook), "t1", "ID", "CookTable", "t2", "FK"); _stageMock .Expect(mock => mock.GenerateTextForJoinCondition(_commandBuilder, ((ResolvedJoinInfo)joinedTable.JoinInfo).JoinCondition)) .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("([t1].[ID] = [t2].[FK])")); _stageMock.Replay(); SqlTableAndJoinTextGenerator.GenerateSql(originalTable, _commandBuilder, _stageMock, true); _stageMock.VerifyAllExpectations(); Assert.That( _commandBuilder.GetCommandText(), Is.EqualTo("[KitchenTable] AS [t1] LEFT OUTER JOIN [CookTable] AS [t2] ON ([t1].[ID] = [t2].[FK])")); }
public void BuildSelectPart_WithSelect() { var sqlStatement = CreateSqlStatement(); _stageMock.Expect( mock => mock.GenerateTextForSelectExpression(_commandBuilder, sqlStatement.SelectProjection)) .WhenCalled(mi => ((SqlCommandBuilder)mi.Arguments[0]).Append("[t].[ID],[t].[Name],[t].[City]")); _stageMock.Replay(); _generator.BuildSelectPart(sqlStatement, _commandBuilder, false); Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo("SELECT [t].[ID],[t].[Name],[t].[City]")); _stageMock.VerifyAllExpectations(); }