use ormer::Model;
use ormer::abstract_layer::Database;
#[derive(Model, Debug, Clone)]
#[table = "simple_users"]
struct SimpleUser {
#[primary]
id: Option<i64>,
name: String,
}
#[tokio::test]
async fn test_simple_transaction_commit() {
let db = Database::connect(ormer::DbType::Turso, ":memory:")
.await
.expect("Failed to connect");
db.create_table::<SimpleUser>()
.await
.expect("Failed to create table");
let mut txn = db.begin().await.expect("Failed to begin");
let user = SimpleUser {
id: None,
name: "Test User".to_string(),
};
txn.insert(&user).await.expect("Failed to insert");
txn.commit().await.expect("Failed to commit");
let users: Vec<SimpleUser> = db
.select::<SimpleUser>()
.collect::<Vec<SimpleUser>>()
.await
.expect("Failed to query");
assert_eq!(users.len(), 1);
assert_eq!(users[0].name, "Test User");
println!("✓ Transaction commit test passed");
}
#[tokio::test]
async fn test_simple_transaction_rollback() {
let db = Database::connect(ormer::DbType::Turso, ":memory:")
.await
.expect("Failed to connect");
db.create_table::<SimpleUser>()
.await
.expect("Failed to create table");
let initial = SimpleUser {
id: None,
name: "Initial".to_string(),
};
db.insert(&initial).await.expect("Failed to insert initial");
let mut txn = db.begin().await.expect("Failed to begin");
let user = SimpleUser {
id: None,
name: "Should Rollback".to_string(),
};
txn.insert(&user).await.expect("Failed to insert");
txn.rollback().await.expect("Failed to rollback");
let users: Vec<SimpleUser> = db
.select::<SimpleUser>()
.collect::<Vec<SimpleUser>>()
.await
.expect("Failed to query");
assert_eq!(users.len(), 1);
assert_eq!(users[0].name, "Initial");
println!("✓ Transaction rollback test passed");
}