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 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); }
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); }
/// <summary> /// Visits the specified <see cref="SqlSubquery"/>. /// </summary> /// <param name="expression"> /// The expression to visit. /// </param> public virtual void Visit(SqlSubquery expression) { }
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); }