use super::*;
use anyhow::Result;
use easy_sql_macros::query;
#[tokio::test]
async fn test_order_by_with_output_column_qualified_syntax() -> Result<()> {
let db = Database::setup_for_testing::<ExprTestTable>().await?;
let mut conn = db.transaction().await?;
insert_multiple_test_data(
&mut conn,
vec![
expr_test_data(10, "a", false, None),
expr_test_data(30, "c", true, None),
expr_test_data(20, "b", false, None),
],
)
.await?;
let results: Vec<ExprTestData> = query!(&mut conn,
SELECT Vec<ExprTestData> FROM ExprTestTable ORDER BY ExprTestData.int_field ASC
)
.await?;
assert_eq!(results.len(), 3);
assert_eq!(results[0].int_field, 10);
assert_eq!(results[1].int_field, 20);
assert_eq!(results[2].int_field, 30);
let results_desc: Vec<ExprTestData> = query!(&mut conn,
SELECT Vec<ExprTestData> FROM ExprTestTable ORDER BY ExprTestData.int_field DESC
)
.await?;
assert_eq!(results_desc.len(), 3);
assert_eq!(results_desc[0].int_field, 30);
assert_eq!(results_desc[1].int_field, 20);
assert_eq!(results_desc[2].int_field, 10);
conn.rollback().await?;
Ok(())
}
#[cfg(feature = "use_output_columns")]
#[tokio::test]
async fn test_order_by_with_bare_output_column() -> Result<()> {
let db = Database::setup_for_testing::<ExprTestTable>().await?;
let mut conn = db.transaction().await?;
insert_multiple_test_data(
&mut conn,
vec![
expr_test_data(10, "a", false, None),
expr_test_data(30, "c", true, None),
expr_test_data(20, "b", false, None),
],
)
.await?;
let results: Vec<ExprTestData> = query!(&mut conn,
SELECT Vec<ExprTestData> FROM ExprTestTable ORDER BY ExprTestData.int_field ASC
)
.await?;
assert_eq!(results.len(), 3);
assert_eq!(results[0].int_field, 10);
let results2: Vec<ExprTestData> = query!(&mut conn,
SELECT Vec<ExprTestData> FROM ExprTestTable ORDER BY ExprTestTable.int_field ASC
)
.await?;
assert_eq!(results2.len(), 3);
assert_eq!(results2[0].int_field, 10);
conn.rollback().await?;
Ok(())
}
#[tokio::test]
async fn test_order_by_with_table_column_qualified_syntax() -> Result<()> {
let db = Database::setup_for_testing::<ExprTestTable>().await?;
let mut conn = db.transaction().await?;
insert_multiple_test_data(
&mut conn,
vec![
expr_test_data(10, "a", false, None),
expr_test_data(30, "c", true, None),
expr_test_data(20, "b", false, None),
],
)
.await?;
let results: Vec<ExprTestData> = query!(&mut conn,
SELECT Vec<ExprTestData> FROM ExprTestTable ORDER BY ExprTestTable.int_field ASC
)
.await?;
assert_eq!(results.len(), 3);
assert_eq!(results[0].int_field, 10);
assert_eq!(results[1].int_field, 20);
assert_eq!(results[2].int_field, 30);
conn.rollback().await?;
Ok(())
}