pub mod common; pub use common::{features::*, setup::*, TestContext}; use pretty_assertions::assert_eq; use sea_orm::{entity::prelude::*, entity::*, DatabaseConnection}; #[sea_orm_macros::test] #[cfg(any( feature = "sqlx-mysql", feature = "sqlx-sqlite", feature = "sqlx-postgres" ))] async fn main() -> Result<(), DbErr> { let ctx = TestContext::new("features_schema_string_primary_key_tests").await; create_tables(&ctx.db).await; create_and_update_repository(&ctx.db).await?; insert_repository(&ctx.db).await?; ctx.delete().await; Ok(()) } pub async fn insert_repository(db: &DatabaseConnection) -> Result<(), DbErr> { let repository = repository::Model { id: "unique-id-001".to_owned(), owner: "GC".to_owned(), name: "G.C.".to_owned(), description: None, } .into_active_model(); let result = repository.clone().insert(db).await?; assert_eq!(repository, result); Ok(()) } pub async fn create_and_update_repository(db: &DatabaseConnection) -> Result<(), DbErr> { let repository = repository::Model { id: "unique-id-002".to_owned(), owner: "GC".to_owned(), name: "G.C.".to_owned(), description: None, }; let res = Repository::insert(repository.clone().into_active_model()) .exec(db) .await?; assert_eq!(Repository::find().one(db).await?, Some(repository.clone())); assert_eq!(res.last_insert_id, repository.id); let updated_active_model = repository::ActiveModel { description: Set(Some("description...".to_owned())), ..repository.clone().into_active_model() }; let update_res = Repository::update(updated_active_model.clone()) .filter(repository::Column::Id.eq("not-exists-id".to_owned())) .exec(db) .await; assert_eq!( update_res, Err(DbErr::RecordNotFound( "None of the database rows are affected".to_owned() )) ); let update_res = Repository::update(updated_active_model.clone()) .filter(repository::Column::Id.eq("unique-id-002".to_owned())) .exec(db) .await?; assert_eq!(update_res, updated_active_model); let updated_active_model = repository::ActiveModel { description: Set(None), ..repository.clone().into_active_model() }; let update_res = Repository::update(updated_active_model.clone()) .filter(repository::Column::Id.eq("unique-id-002".to_owned())) .exec(db) .await?; assert_eq!(update_res, updated_active_model); Ok(()) }