public void BuildSelectStringWithForeignTableSqlServer()
            {
                // arrange
                var table = new Table("Hello", "Kitty", "hk");
                var column = new NormalColumn("Test", table);

                var foreignColumn = new ForeignColumn("Sample");
                var joinedTable = new JoinedTable("Something", "Somewhere", "ss", table, column, foreignColumn);

                var builder = new SelectStatementBuilder(
                    new List<ISqlConstituent> { column, foreignColumn },
                    table,
                    new List<ISqlConstituent> { joinedTable });

                // act
                var selectStatement = builder.Build();

                // assert
                const string ExpectedResult = @"SELECT
                [hk].[Test],
                [ss].[Sample]
                FROM [Hello].[Kitty] hk
                LEFT OUTER JOIN [Something].[Somewhere] ss
                ON [hk].[Test] = [ss].[Sample]";

                AssertSameCharactersWithoutSpaces(ExpectedResult, selectStatement);
            }
            public void BuildSelectStringWithForeignTableOracle()
            {
                // arrange
                var table = new Table("Hello", "Kitty", "hk", SqlType.Oracle);
                var column = new NormalColumn("Test", table, SqlType.Oracle);

                var foreignColumn = new ForeignColumn("Sample", SqlType.Oracle);
                var joinedTable = new JoinedTable("Something", "Somewhere", "ss", table, column, foreignColumn, sqlType: SqlType.Oracle);

                var builder = new SelectStatementBuilder(
                    new List<ISqlConstituent> { column, foreignColumn },
                    table,
                    new List<ISqlConstituent> { joinedTable });

                // act
                var selectStatement = builder.Build();

                // assert
                const string ExpectedResult = @"SELECT
                hk.Test,
                ss.Sample
                FROM Hello.Kitty hk
                LEFT OUTER JOIN Something.Somewhere ss
                ON hk.Test = ss.Sample";

                AssertSameCharactersWithoutSpaces(ExpectedResult, selectStatement);
            }
        public static ICursor Select(this IRequest request, Action <ISelectStatementBuilder> select)
        {
            var selectBuilder = new SelectStatementBuilder();

            select(selectBuilder);

            return(request.Select((SelectStatement)selectBuilder.Build().First()));
        }
            public void BuildSelectStringWithNoForeignTableOracle()
            {
                // arrange
                var table = new Table("Hello", "Kitty", "hk", SqlType.Oracle);
                var column = new NormalColumn("Test", table, SqlType.Oracle);

                var builder = new SelectStatementBuilder(
                    new List<ISqlConstituent> { column },
                    table,
                    new List<ISqlConstituent>());

                // act
                var selectStatement = builder.Build();

                // assert
                const string ExpectedResult = @"SELECT
                hk.Test
                FROM Hello.Kitty hk";

                AssertSameCharactersWithoutSpaces(ExpectedResult, selectStatement);
            }