Example #1
0
        public void From_WithNullSubquery_ThrowsArgument()
        {
            var select   = Sql.Select("Id", "Name");
            var subquery = new SqlSubquery(Sql.Select("Id", "Name").From("User").Go());

            Assert.Throws <ArgumentException>(() => select.From(subquery));
        }
        public void Ctor_WithQueryAndAlias_SetsQueryProperty()
        {
            var query    = Sql.Select("Id", "Name").From("Users").Go();
            var subquery = new SqlSubquery(query, "u");

            Assert.NotNull(subquery.Query);
            Assert.Same(query, subquery.Query);
        }
        public void Ctor_WithQueryAndAlias_SetsQueryProperty()
        {
            var query = Sql.Select("Id", "Name").From("Users").Go();
            var subquery = new SqlSubquery(query, "u");

            Assert.NotNull(subquery.Query);
            Assert.Same(query, subquery.Query);
        }
Example #4
0
        public void In_WithColumnAndSubquery_ReturnsCorrectExpression()
        {
            var subquery   = new SqlSubquery(Sql.Select("Age").From("Profile"), "a");
            var expression = SqlExpression.In("Id", subquery);

            Assert.IsType <SqlColumn>(expression.Left);
            Assert.Equal("Id", ((SqlColumn)expression.Left).ColumnName);

            Assert.Equal(SqlBinaryOperator.In, expression.Operator);

            Assert.IsType <SqlSubquery>(expression.Right);
            Assert.Same(subquery, expression.Right);
        }
        public void ToSql_WithSqlSelectWithInUsingSubQuery_ReturnsSql()
        {
            const string expected = "SELECT [Id], [FirstName], [LastName], [Age] FROM [Profile] WHERE [FirstName] IN (SELECT [FirstName] FROM [Profile] WHERE [Age] >= 18)";
            var          subquery = new SqlSubquery(Sql
                                                    .Select("FirstName")
                                                    .From("Profile")
                                                    .Where(SqlExpression.GreaterThanOrEqual("Age", 18))
                                                    .Go());
            var actual = Sql
                         .Select("Id", "FirstName", "LastName", "Age")
                         .From("Profile")
                         .Where(SqlExpression.In("FirstName", subquery))
                         .Go()
                         .ToSql();

            Assert.Equal(expected, actual);
        }
Example #6
0
        public void ToSql_WithMySqlDialect_WithSqlSelectWithInUsingSubQuery_ReturnsSql()
        {
            const string expected = "SELECT `Id`, `FirstName`, `LastName`, `Age` FROM `Profile` WHERE `FirstName` IN (SELECT `FirstName` FROM `Profile` WHERE `Age` >= 18)";
            var          subquery = new SqlSubquery(Sql
                                                    .Select("FirstName")
                                                    .From("Profile")
                                                    .Where(SqlExpression.GreaterThanOrEqual("Age", 18))
                                                    .Go());
            var actual = Sql
                         .Select("Id", "FirstName", "LastName", "Age")
                         .From("Profile")
                         .Where(SqlExpression.In("FirstName", subquery))
                         .Go()
                         .ToSql(new MySqlDialect());

            Assert.Equal(expected, actual);
        }
Example #7
0
 /// <summary>
 /// Visits the specified <see cref="SqlSubquery"/>.
 /// </summary>
 /// <param name="expression">
 /// The expression to visit.
 /// </param>
 public virtual void Visit(SqlSubquery expression)
 {
 }
        public void ToSql_WithMySqlDialect_WithSqlSelectWithInUsingSubQuery_ReturnsSql()
        {
            const string expected = "SELECT `Id`, `FirstName`, `LastName`, `Age` FROM `Profile` WHERE `FirstName` IN (SELECT `FirstName` FROM `Profile` WHERE `Age` >= 18)";
            var subquery = new SqlSubquery(Sql
                .Select("FirstName")
                .From("Profile")
                .Where(SqlExpression.GreaterThanOrEqual("Age", 18))
                .Go());
            var actual = Sql
                .Select("Id", "FirstName", "LastName", "Age")
                .From("Profile")
                .Where(SqlExpression.In("FirstName", subquery))
                .Go()
                .ToSql(new MySqlDialect());

            Assert.Equal(expected, actual);
        }
        public void In_WithColumnAndSubquery_ReturnsCorrectExpression()
        {
            var subquery = new SqlSubquery(Sql.Select("Age").From("Profile"), "a");
            var expression = SqlExpression.In("Id", subquery);

            Assert.IsType<SqlColumn>(expression.Left);
            Assert.Equal("Id", ((SqlColumn)expression.Left).ColumnName);

            Assert.Equal(SqlBinaryOperator.In, expression.Operator);

            Assert.IsType<SqlSubquery>(expression.Right);
            Assert.Same(subquery, expression.Right);
        }
        public void ToSql_WithSqlSelectWithInUsingSubQuery_ReturnsSql()
        {
            const string expected = "SELECT [Id], [FirstName], [LastName], [Age] FROM [Profile] WHERE [FirstName] IN (SELECT [FirstName] FROM [Profile] WHERE [Age] >= 18)";
            var subquery = new SqlSubquery(Sql
                .Select("FirstName")
                .From("Profile")
                .Where(SqlExpression.GreaterThanOrEqual("Age", 18))
                .Go());
            var actual = Sql
                .Select("Id", "FirstName", "LastName", "Age")
                .From("Profile")
                .Where(SqlExpression.In("FirstName", subquery))
                .Go()
                .ToSql();

            Assert.Equal(expected, actual);
        }
Example #11
0
 /// <summary>
 /// Visits the specified <see cref="SqlSubquery"/>.
 /// </summary>
 /// <param name="expression">
 /// The expression to visit.
 /// </param>
 public virtual void Visit(SqlSubquery expression)
 {
 }