GenerateTextForOuterSqlStatement() public method

public GenerateTextForOuterSqlStatement ( ISqlCommandBuilder commandBuilder, SqlStatement sqlStatement ) : void
commandBuilder ISqlCommandBuilder
sqlStatement Remotion.Linq.SqlBackend.SqlStatementModel.SqlStatement
return void
    public void GenerateTextForOuterSqlStatement ()
    {
      var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatement (
          _entityExpression, new[] { new SqlTable (new ResolvedSimpleTableInfo (typeof (int), "Table", "t"), JoinSemantics.Inner) });

      var stage = new DefaultSqlGenerationStage();

      stage.GenerateTextForOuterSqlStatement (_commandBuilder, sqlStatement);

      Assert.That (_commandBuilder.GetCommandText (), Is.EqualTo ("SELECT [t].[ID],[t].[Name],[t].[City] FROM [Table] AS [t]"));

      var inMemoryProjection = _commandBuilder.GetInMemoryProjectionBody();
      Assert.That (inMemoryProjection, Is.AssignableTo (typeof (MethodCallExpression)));

      var methodCallExpression = (MethodCallExpression) inMemoryProjection;
      Assert.That (methodCallExpression.Method, Is.EqualTo ((typeof (IDatabaseResultRow).GetMethod ("GetEntity").MakeGenericMethod (sqlStatement.SelectProjection.Type))));
      Assert.That (methodCallExpression.Arguments.Count, Is.EqualTo (1));
      Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[0].ColumnName, Is.EqualTo ("ID"));
      Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[1].ColumnName, Is.EqualTo ("Name"));
      Assert.That (((ColumnID[]) ((ConstantExpression) methodCallExpression.Arguments[0]).Value)[2].ColumnName, Is.EqualTo ("City"));
    }