#![allow(unused_imports, dead_code)]
pub mod common;
pub use common::{TestContext, bakery_chain::*, setup::*};
pub use sea_orm::entity::*;
pub use sea_orm::{ConnectionTrait, QueryFilter, QueryOrder, QuerySelect, SelectExt};
#[sea_orm_macros::test]
pub fn exists_with_no_result() {
let ctx = TestContext::new("exists_with_no_result");
create_bakery_table(&ctx.db).unwrap();
let exists = Bakery::find().exists(&ctx.db).unwrap();
assert_eq!(exists, false);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_result() {
let ctx = TestContext::new("exists_with_result");
create_bakery_table(&ctx.db).unwrap();
let _bakery = bakery::ActiveModel {
name: Set("SeaSide Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let exists = Bakery::find().exists(&ctx.db).unwrap();
assert_eq!(exists, true);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_filter_no_result() {
let ctx = TestContext::new("exists_with_filter_no_result");
create_bakery_table(&ctx.db).unwrap();
let _bakery = bakery::ActiveModel {
name: Set("SeaSide Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let exists = Bakery::find()
.filter(bakery::Column::Name.contains("Nonexistent"))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, false);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_filter_has_result() {
let ctx = TestContext::new("exists_with_filter_has_result");
create_bakery_table(&ctx.db).unwrap();
let _bakery1 = bakery::ActiveModel {
name: Set("SeaSide Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let _bakery2 = bakery::ActiveModel {
name: Set("Top Bakery".to_owned()),
profit_margin: Set(15.0),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let exists = Bakery::find()
.filter(bakery::Column::Name.contains("SeaSide"))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, true);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_complex_query() {
let ctx = TestContext::new("exists_with_complex_query");
create_bakery_table(&ctx.db).unwrap();
let _bakery1 = bakery::ActiveModel {
name: Set("SeaSide Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let _bakery2 = bakery::ActiveModel {
name: Set("Top Bakery".to_owned()),
profit_margin: Set(15.0),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let _bakery3 = bakery::ActiveModel {
name: Set("Low Profit Bakery".to_owned()),
profit_margin: Set(5.0),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let exists = Bakery::find()
.filter(bakery::Column::ProfitMargin.gt(12.0))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, true);
let exists = Bakery::find()
.filter(bakery::Column::ProfitMargin.gt(20.0))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, false);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_joins() {
let ctx = TestContext::new("exists_with_joins");
create_bakery_table(&ctx.db).unwrap();
create_cake_table(&ctx.db).unwrap();
let bakery = bakery::ActiveModel {
name: Set("SeaSide Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let _cake = cake::ActiveModel {
name: Set("Chocolate Cake".to_owned()),
price: Set(rust_dec(12.50)), bakery_id: Set(Some(bakery.id.unwrap())),
gluten_free: Set(false),
serial: Set(uuid::Uuid::new_v4()),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert cake");
let exists = Cake::find()
.inner_join(Bakery)
.filter(bakery::Column::Name.eq("SeaSide Bakery"))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, true);
let exists = Cake::find()
.inner_join(Bakery)
.filter(bakery::Column::Name.eq("Non-existent Bakery"))
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, false);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_ordering() {
let ctx = TestContext::new("exists_with_ordering");
create_bakery_table(&ctx.db).unwrap();
let _bakery1 = bakery::ActiveModel {
name: Set("A Bakery".to_owned()),
profit_margin: Set(10.4),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let _bakery2 = bakery::ActiveModel {
name: Set("Z Bakery".to_owned()),
profit_margin: Set(15.0),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
let exists = Bakery::find()
.order_by_asc(bakery::Column::Name)
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, true);
ctx.delete();
}
#[sea_orm_macros::test]
pub fn exists_with_limit_offset() {
let ctx = TestContext::new("exists_with_limit_offset");
create_bakery_table(&ctx.db).unwrap();
for i in 1..=5 {
let _bakery = bakery::ActiveModel {
name: Set(format!("Bakery {}", i)),
profit_margin: Set(10.0 + (i as f64)),
..Default::default()
}
.save(&ctx.db)
.expect("could not insert bakery");
}
let exists = Bakery::find().limit(2).exists(&ctx.db).unwrap();
assert_eq!(exists, true);
let exists = Bakery::find().offset(3).exists(&ctx.db).unwrap();
assert_eq!(exists, true);
let exists = Bakery::find()
.offset(10) .limit(1)
.exists(&ctx.db)
.unwrap();
assert_eq!(exists, true);
ctx.delete();
}