217 lines
5.1 KiB
Rust
217 lines
5.1 KiB
Rust
use sea_orm::entity::*;
|
|
use sea_orm::QueryFilter;
|
|
|
|
pub mod common;
|
|
pub use common::{bakery_chain::*, setup::*, TestContext};
|
|
|
|
// Run the test locally:
|
|
// DATABASE_URL="mysql://root:@localhost" cargo test --features sqlx-mysql,runtime-async-std --test query_tests
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_one_with_no_result() {
|
|
let ctx = TestContext::new("find_one_with_no_result").await;
|
|
|
|
let bakery = Bakery::find().one(&ctx.db).await.unwrap();
|
|
assert_eq!(bakery, None);
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_one_with_result() {
|
|
let ctx = TestContext::new("find_one_with_result").await;
|
|
|
|
let bakery = bakery::ActiveModel {
|
|
name: Set("SeaSide Bakery".to_owned()),
|
|
profit_margin: Set(10.4),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let result = Bakery::find().one(&ctx.db).await.unwrap().unwrap();
|
|
|
|
assert_eq!(result.id, bakery.id.unwrap());
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_by_id_with_no_result() {
|
|
let ctx = TestContext::new("find_by_id_with_no_result").await;
|
|
|
|
let bakery = Bakery::find_by_id(999).one(&ctx.db).await.unwrap();
|
|
assert_eq!(bakery, None);
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_by_id_with_result() {
|
|
let ctx = TestContext::new("find_by_id_with_result").await;
|
|
|
|
let bakery = bakery::ActiveModel {
|
|
name: Set("SeaSide Bakery".to_owned()),
|
|
profit_margin: Set(10.4),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let result = Bakery::find_by_id(bakery.id.clone().unwrap())
|
|
.one(&ctx.db)
|
|
.await
|
|
.unwrap()
|
|
.unwrap();
|
|
|
|
assert_eq!(result.id, bakery.id.unwrap());
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_all_with_no_result() {
|
|
let ctx = TestContext::new("find_all_with_no_result").await;
|
|
|
|
let bakeries = Bakery::find().all(&ctx.db).await.unwrap();
|
|
assert_eq!(bakeries.len(), 0);
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_all_with_result() {
|
|
let ctx = TestContext::new("find_all_with_result").await;
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("SeaSide Bakery".to_owned()),
|
|
profit_margin: Set(10.4),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("Top Bakery".to_owned()),
|
|
profit_margin: Set(15.0),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let bakeries = Bakery::find().all(&ctx.db).await.unwrap();
|
|
|
|
assert_eq!(bakeries.len(), 2);
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_all_filter_no_result() {
|
|
let ctx = TestContext::new("find_all_filter_no_result").await;
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("SeaSide Bakery".to_owned()),
|
|
profit_margin: Set(10.4),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("Top Bakery".to_owned()),
|
|
profit_margin: Set(15.0),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let bakeries = Bakery::find()
|
|
.filter(bakery::Column::Name.contains("Good"))
|
|
.all(&ctx.db)
|
|
.await
|
|
.unwrap();
|
|
|
|
assert_eq!(bakeries.len(), 0);
|
|
|
|
ctx.delete().await;
|
|
}
|
|
|
|
#[sea_orm_macros::test]
|
|
#[cfg(any(
|
|
feature = "sqlx-mysql",
|
|
feature = "sqlx-sqlite",
|
|
feature = "sqlx-postgres"
|
|
))]
|
|
pub async fn find_all_filter_with_results() {
|
|
let ctx = TestContext::new("find_all_filter_with_results").await;
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("SeaSide Bakery".to_owned()),
|
|
profit_margin: Set(10.4),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let _ = bakery::ActiveModel {
|
|
name: Set("Top Bakery".to_owned()),
|
|
profit_margin: Set(15.0),
|
|
..Default::default()
|
|
}
|
|
.save(&ctx.db)
|
|
.await
|
|
.expect("could not insert bakery");
|
|
|
|
let bakeries = Bakery::find()
|
|
.filter(bakery::Column::Name.contains("Bakery"))
|
|
.all(&ctx.db)
|
|
.await
|
|
.unwrap();
|
|
|
|
assert_eq!(bakeries.len(), 2);
|
|
|
|
ctx.delete().await;
|
|
}
|