Skip to content

Commit

Permalink
Test case
Browse files Browse the repository at this point in the history
  • Loading branch information
tyt2y3 committed Oct 8, 2021
1 parent a2ec6cd commit eb87b7c
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
43 changes: 38 additions & 5 deletions src/database/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,7 @@ impl MockDatabaseTrait for MockDatabase {
fn commit(&mut self) {
if self.transaction.is_some() {
let transaction = self.transaction.take().unwrap();
self.transaction_log
.push(transaction.into_transaction());
self.transaction_log.push(transaction.into_transaction());
} else {
panic!("There is no open transaction to commit");
}
Expand Down Expand Up @@ -238,15 +237,15 @@ impl OpenTransaction {
#[cfg(feature = "mock")]
mod tests {
use crate::{
entity::*, tests_cfg::*, ConnectionTrait, DbBackend, DbErr, MockDatabase, Transaction,
Statement,
entity::*, tests_cfg::*, ConnectionTrait, DbBackend, DbErr, MockDatabase, Statement,
Transaction, TransactionError,
};

#[smol_potat::test]
async fn test_transaction_1() {
let db = MockDatabase::new(DbBackend::Postgres).into_connection();

db.transaction::<_, _, DbErr>(|txn| {
db.transaction::<_, (), DbErr>(|txn| {
Box::pin(async move {
let _1 = cake::Entity::find().one(txn).await;
let _2 = fruit::Entity::find().all(txn).await;
Expand Down Expand Up @@ -282,4 +281,38 @@ mod tests {
]
);
}

#[smol_potat::test]
async fn test_transaction_2() {
let db = MockDatabase::new(DbBackend::Postgres).into_connection();

#[derive(Debug, PartialEq)]
pub struct MyErr(String);

impl std::error::Error for MyErr {}

impl std::fmt::Display for MyErr {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.0.as_str())
}
}

let result = db
.transaction::<_, (), MyErr>(|txn| {
Box::pin(async move {
let _ = cake::Entity::find().one(txn).await;
Err(MyErr("test".to_owned()))
})
})
.await;

match result {
Err(TransactionError::Transaction(err)) => {
assert_eq!(err, MyErr("test".to_owned()))
}
_ => panic!(),
}

assert_eq!(db.into_transaction_log(), vec![]);
}
}
4 changes: 2 additions & 2 deletions src/driver/mock.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{
debug_print, error::*, DatabaseConnection, DbBackend, ExecResult, MockDatabase,
Transaction, QueryResult, Statement,
debug_print, error::*, DatabaseConnection, DbBackend, ExecResult, MockDatabase, QueryResult,
Statement, Transaction,
};
use futures::Stream;
use std::{
Expand Down

0 comments on commit eb87b7c

Please sign in to comment.