Merge branch 'master' into ss/test_suite

This commit is contained in:
Sam Samai 2021-07-15 09:05:49 +10:00
commit 6f6ef4bf95
12 changed files with 133 additions and 57 deletions

View File

@ -0,0 +1,3 @@
ignore = [
"tests/entity/*.rs",
]

View File

@ -15,7 +15,7 @@ impl EntityName for Entity {
pub struct Model { pub struct Model {
pub id: i32, pub id: i32,
pub name: String, pub name: String,
pub cake_id: Option<i32>, pub cake_id: Option<i32> ,
} }
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]

View File

@ -15,7 +15,7 @@ impl EntityName for Entity {
pub struct Model { pub struct Model {
pub id: i32, pub id: i32,
pub name: String, pub name: String,
pub fruit_id: Option<i32>, pub fruit_id: Option<i32> ,
} }
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]

View File

@ -2,7 +2,7 @@ mod entity;
use entity::*; use entity::*;
use sea_orm::{entity::*, error::*, MockDatabase, MockExecResult, Transaction}; use sea_orm::{entity::*, error::*, MockDatabase, MockExecResult, Syntax, Transaction};
#[async_std::test] #[async_std::test]
async fn test_insert() -> Result<(), DbErr> { async fn test_insert() -> Result<(), DbErr> {
@ -11,7 +11,7 @@ async fn test_insert() -> Result<(), DbErr> {
rows_affected: 1, rows_affected: 1,
}; };
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_exec_results(vec![exec_result.clone()]) .append_exec_results(vec![exec_result.clone()])
.into_connection(); .into_connection();
@ -27,6 +27,7 @@ async fn test_insert() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
db.into_transaction_log(), db.into_transaction_log(),
vec![Transaction::from_sql_and_values( vec![Transaction::from_sql_and_values(
Syntax::Postgres,
r#"INSERT INTO "cake" ("name") VALUES ($1)"#, r#"INSERT INTO "cake" ("name") VALUES ($1)"#,
vec!["Apple Pie".into()] vec!["Apple Pie".into()]
)] )]
@ -42,7 +43,7 @@ async fn test_select() -> Result<(), DbErr> {
filling_id: 3, filling_id: 3,
}]; }];
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_query_results(vec![query_results.clone()]) .append_query_results(vec![query_results.clone()])
.into_connection(); .into_connection();
@ -52,7 +53,9 @@ async fn test_select() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
db.into_transaction_log(), db.into_transaction_log(),
vec![Transaction::from_sql_and_values([ vec![Transaction::from_sql_and_values(
Syntax::Postgres,
[
r#"SELECT "cake_filling"."cake_id", "cake_filling"."filling_id" FROM "cake_filling""#, r#"SELECT "cake_filling"."cake_id", "cake_filling"."filling_id" FROM "cake_filling""#,
r#"WHERE "cake_filling"."cake_id" = $1 AND "cake_filling"."filling_id" = $2"#, r#"WHERE "cake_filling"."cake_id" = $1 AND "cake_filling"."filling_id" = $2"#,
].join(" ").as_str(), ].join(" ").as_str(),
@ -70,7 +73,7 @@ async fn test_update() -> Result<(), DbErr> {
rows_affected: 1, rows_affected: 1,
}; };
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_exec_results(vec![exec_result.clone()]) .append_exec_results(vec![exec_result.clone()])
.into_connection(); .into_connection();
@ -87,6 +90,7 @@ async fn test_update() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
db.into_transaction_log(), db.into_transaction_log(),
vec![Transaction::from_sql_and_values( vec![Transaction::from_sql_and_values(
Syntax::Postgres,
r#"UPDATE "fruit" SET "name" = $1 WHERE "fruit"."id" = $2"#, r#"UPDATE "fruit" SET "name" = $1 WHERE "fruit"."id" = $2"#,
vec!["Orange".into(), 1i32.into()] vec!["Orange".into(), 1i32.into()]
)] )]
@ -102,7 +106,7 @@ async fn test_delete() -> Result<(), DbErr> {
rows_affected: 1, rows_affected: 1,
}; };
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_exec_results(vec![exec_result.clone()]) .append_exec_results(vec![exec_result.clone()])
.into_connection(); .into_connection();
@ -118,6 +122,7 @@ async fn test_delete() -> Result<(), DbErr> {
assert_eq!( assert_eq!(
db.into_transaction_log(), db.into_transaction_log(),
vec![Transaction::from_sql_and_values( vec![Transaction::from_sql_and_values(
Syntax::Postgres,
r#"DELETE FROM "fruit" WHERE "fruit"."id" = $1"#, r#"DELETE FROM "fruit" WHERE "fruit"."id" = $1"#,
vec![3i32.into()] vec![3i32.into()]
)] )]

View File

@ -60,7 +60,7 @@ impl DatabaseConnection {
#[cfg(feature = "sqlx-sqlite")] #[cfg(feature = "sqlx-sqlite")]
DatabaseConnection::SqlxSqlitePoolConnection(_) => QueryBuilderBackend::Sqlite, DatabaseConnection::SqlxSqlitePoolConnection(_) => QueryBuilderBackend::Sqlite,
#[cfg(feature = "mock")] #[cfg(feature = "mock")]
DatabaseConnection::MockDatabaseConnection(_) => QueryBuilderBackend::Postgres, DatabaseConnection::MockDatabaseConnection(conn) => conn.get_query_builder_backend(),
DatabaseConnection::Disconnected => panic!("Disconnected"), DatabaseConnection::Disconnected => panic!("Disconnected"),
} }
} }
@ -72,7 +72,7 @@ impl DatabaseConnection {
#[cfg(feature = "sqlx-sqlite")] #[cfg(feature = "sqlx-sqlite")]
DatabaseConnection::SqlxSqlitePoolConnection(_) => SchemaBuilderBackend::Sqlite, DatabaseConnection::SqlxSqlitePoolConnection(_) => SchemaBuilderBackend::Sqlite,
#[cfg(feature = "mock")] #[cfg(feature = "mock")]
DatabaseConnection::MockDatabaseConnection(_) => SchemaBuilderBackend::Postgres, DatabaseConnection::MockDatabaseConnection(conn) => conn.get_schema_builder_backend(),
DatabaseConnection::Disconnected => panic!("Disconnected"), DatabaseConnection::Disconnected => panic!("Disconnected"),
} }
} }

View File

@ -1,13 +1,14 @@
use crate::{ use crate::{
error::*, DatabaseConnection, EntityTrait, ExecResult, ExecResultHolder, Iden, Iterable, error::*, DatabaseConnection, EntityTrait, ExecResult, ExecResultHolder, Iden, Iterable,
MockDatabaseConnection, MockDatabaseTrait, ModelTrait, QueryResult, QueryResultRow, Statement, MockDatabaseConnection, MockDatabaseTrait, ModelTrait, QueryResult, QueryResultRow, Statement,
Transaction, Syntax, Transaction,
}; };
use sea_query::{Value, ValueType}; use sea_query::{Value, ValueType};
use std::collections::BTreeMap; use std::collections::BTreeMap;
#[derive(Debug, Default)] #[derive(Debug)]
pub struct MockDatabase { pub struct MockDatabase {
syntax: Syntax,
transaction_log: Vec<Transaction>, transaction_log: Vec<Transaction>,
exec_results: Vec<MockExecResult>, exec_results: Vec<MockExecResult>,
query_results: Vec<Vec<MockRow>>, query_results: Vec<Vec<MockRow>>,
@ -42,8 +43,13 @@ where
} }
impl MockDatabase { impl MockDatabase {
pub fn new() -> Self { pub fn new(syntax: Syntax) -> Self {
Default::default() Self {
syntax,
transaction_log: Vec::new(),
exec_results: Vec::new(),
query_results: Vec::new(),
}
} }
pub fn into_connection(self) -> DatabaseConnection { pub fn into_connection(self) -> DatabaseConnection {
@ -96,6 +102,10 @@ impl MockDatabaseTrait for MockDatabase {
fn drain_transaction_log(&mut self) -> Vec<Transaction> { fn drain_transaction_log(&mut self) -> Vec<Transaction> {
std::mem::take(&mut self.transaction_log) std::mem::take(&mut self.transaction_log)
} }
fn get_syntax(&self) -> Syntax {
self.syntax
}
} }
impl MockRow { impl MockRow {

View File

@ -1,4 +1,4 @@
use crate::QueryBuilderWithSyntax; use crate::{QueryBuilderBackend, QueryBuilderWithSyntax, SchemaBuilderBackend};
use sea_query::{ use sea_query::{
inject_parameters, MysqlQueryBuilder, PostgresQueryBuilder, QueryBuilder, SqliteQueryBuilder, inject_parameters, MysqlQueryBuilder, PostgresQueryBuilder, QueryBuilder, SqliteQueryBuilder,
Values, Values,
@ -63,6 +63,22 @@ impl Syntax {
Self::Sqlite => Box::new(SqliteQueryBuilder), Self::Sqlite => Box::new(SqliteQueryBuilder),
} }
} }
pub fn get_query_builder_backend(&self) -> QueryBuilderBackend {
match self {
Self::MySql => QueryBuilderBackend::MySql,
Self::Postgres => QueryBuilderBackend::Postgres,
Self::Sqlite => QueryBuilderBackend::Sqlite,
}
}
pub fn get_schema_builder_backend(&self) -> SchemaBuilderBackend {
match self {
Self::MySql => SchemaBuilderBackend::MySql,
Self::Postgres => SchemaBuilderBackend::Postgres,
Self::Sqlite => SchemaBuilderBackend::Sqlite,
}
}
} }
impl QueryBuilderWithSyntax for MysqlQueryBuilder { impl QueryBuilderWithSyntax for MysqlQueryBuilder {

View File

@ -7,12 +7,12 @@ pub struct Transaction {
} }
impl Transaction { impl Transaction {
pub fn from_sql_and_values<I>(sql: &str, values: I) -> Self pub fn from_sql_and_values<I>(syntax: Syntax, sql: &str, values: I) -> Self
where where
I: IntoIterator<Item = Value>, I: IntoIterator<Item = Value>,
{ {
Self::one(Statement::from_string_values_tuple( Self::one(Statement::from_string_values_tuple(
Syntax::Postgres, syntax,
(sql.to_string(), Values(values.into_iter().collect())), (sql.to_string(), Values(values.into_iter().collect())),
)) ))
} }

View File

@ -1,6 +1,6 @@
use crate::{ use crate::{
debug_print, error::*, DatabaseConnection, ExecResult, MockDatabase, QueryResult, Statement, debug_print, error::*, DatabaseConnection, ExecResult, MockDatabase, QueryBuilderBackend,
Transaction, QueryResult, SchemaBuilderBackend, Statement, Syntax, Transaction,
}; };
use std::sync::{ use std::sync::{
atomic::{AtomicUsize, Ordering}, atomic::{AtomicUsize, Ordering},
@ -20,17 +20,41 @@ pub trait MockDatabaseTrait: Send {
fn query(&mut self, counter: usize, stmt: Statement) -> Result<Vec<QueryResult>, DbErr>; fn query(&mut self, counter: usize, stmt: Statement) -> Result<Vec<QueryResult>, DbErr>;
fn drain_transaction_log(&mut self) -> Vec<Transaction>; fn drain_transaction_log(&mut self) -> Vec<Transaction>;
fn get_syntax(&self) -> Syntax;
} }
impl MockDatabaseConnector { impl MockDatabaseConnector {
pub fn accepts(string: &str) -> bool { pub fn accepts(string: &str) -> bool {
string.starts_with("mock://") #[cfg(feature = "sqlx-mysql")]
if crate::SqlxMySqlConnector::accepts(string) {
return true;
}
#[cfg(feature = "sqlx-sqlite")]
if crate::SqlxSqliteConnector::accepts(string) {
return true;
}
false
} }
pub async fn connect(_string: &str) -> Result<DatabaseConnection, DbErr> { pub async fn connect(string: &str) -> Result<DatabaseConnection, DbErr> {
Ok(DatabaseConnection::MockDatabaseConnection( macro_rules! connect_mock_db {
MockDatabaseConnection::new(MockDatabase::new()), ( $syntax: expr ) => {
)) Ok(DatabaseConnection::MockDatabaseConnection(
MockDatabaseConnection::new(MockDatabase::new($syntax)),
))
};
}
#[cfg(feature = "sqlx-mysql")]
if crate::SqlxMySqlConnector::accepts(string) {
return connect_mock_db!(Syntax::MySql);
}
#[cfg(feature = "sqlx-sqlite")]
if crate::SqlxSqliteConnector::accepts(string) {
return connect_mock_db!(Syntax::Sqlite);
}
connect_mock_db!(Syntax::Postgres)
} }
} }
@ -67,4 +91,20 @@ impl MockDatabaseConnection {
let counter = self.counter.fetch_add(1, Ordering::SeqCst); let counter = self.counter.fetch_add(1, Ordering::SeqCst);
self.mocker.lock().unwrap().query(counter, statement) self.mocker.lock().unwrap().query(counter, statement)
} }
pub fn get_query_builder_backend(&self) -> QueryBuilderBackend {
self.mocker
.lock()
.unwrap()
.get_syntax()
.get_query_builder_backend()
}
pub fn get_schema_builder_backend(&self) -> SchemaBuilderBackend {
self.mocker
.lock()
.unwrap()
.get_syntax()
.get_schema_builder_backend()
}
} }

View File

@ -70,9 +70,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_query_results(vec![ /// # .append_query_results(vec![
/// # vec![ /// # vec![
/// # cake::Model { /// # cake::Model {
@ -126,10 +126,10 @@ pub trait EntityTrait: EntityName {
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![ /// vec![
/// Transaction::from_sql_and_values( /// Transaction::from_sql_and_values(
/// r#"SELECT "cake"."id", "cake"."name" FROM "cake" LIMIT $1"#, vec![1u64.into()] /// Syntax::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake" LIMIT $1"#, vec![1u64.into()]
/// ), /// ),
/// Transaction::from_sql_and_values( /// Transaction::from_sql_and_values(
/// r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, vec![] /// Syntax::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, vec![]
/// ), /// ),
/// ]); /// ]);
/// ``` /// ```
@ -143,9 +143,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_query_results(vec![ /// # .append_query_results(vec![
/// # vec![ /// # vec![
/// # cake::Model { /// # cake::Model {
@ -174,15 +174,15 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"SELECT "cake"."id", "cake"."name" FROM "cake" WHERE "cake"."id" = $1"#, vec![11i32.into()] /// Syntax::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake" WHERE "cake"."id" = $1"#, vec![11i32.into()]
/// )]); /// )]);
/// ``` /// ```
/// Find by composite key /// Find by composite key
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_query_results(vec![ /// # .append_query_results(vec![
/// # vec![ /// # vec![
/// # cake_filling::Model { /// # cake_filling::Model {
@ -210,7 +210,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values([ /// vec![Transaction::from_sql_and_values(
/// Syntax::Postgres,
/// [
/// r#"SELECT "cake_filling"."cake_id", "cake_filling"."filling_id" FROM "cake_filling""#, /// r#"SELECT "cake_filling"."cake_id", "cake_filling"."filling_id" FROM "cake_filling""#,
/// r#"WHERE "cake_filling"."cake_id" = $1 AND "cake_filling"."filling_id" = $2"#, /// r#"WHERE "cake_filling"."cake_id" = $1 AND "cake_filling"."filling_id" = $2"#,
/// ].join(" ").as_str(), /// ].join(" ").as_str(),
@ -243,9 +245,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 15, /// # last_insert_id: 15,
@ -274,7 +276,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"INSERT INTO "cake" ("name") VALUES ($1)"#, vec!["Apple Pie".into()] /// Syntax::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1)"#, vec!["Apple Pie".into()]
/// )]); /// )]);
/// ``` /// ```
fn insert<A>(model: A) -> Insert<A> fn insert<A>(model: A) -> Insert<A>
@ -290,9 +292,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 28, /// # last_insert_id: 28,
@ -325,7 +327,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"INSERT INTO "cake" ("name") VALUES ($1), ($2)"#, /// Syntax::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1), ($2)"#,
/// vec!["Apple Pie".into(), "Orange Scone".into()] /// vec!["Apple Pie".into(), "Orange Scone".into()]
/// )]); /// )]);
/// ``` /// ```
@ -345,9 +347,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 0, /// # last_insert_id: 0,
@ -377,7 +379,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"UPDATE "fruit" SET "name" = $1 WHERE "fruit"."id" = $2"#, vec!["Orange".into(), 1i32.into()] /// Syntax::Postgres, r#"UPDATE "fruit" SET "name" = $1 WHERE "fruit"."id" = $2"#, vec!["Orange".into(), 1i32.into()]
/// )]); /// )]);
/// ``` /// ```
fn update<A>(model: A) -> UpdateOne<A> fn update<A>(model: A) -> UpdateOne<A>
@ -395,9 +397,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 0, /// # last_insert_id: 0,
@ -424,7 +426,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"UPDATE "fruit" SET "cake_id" = $1 WHERE "fruit"."name" LIKE $2"#, vec![Value::Null, "%Apple%".into()] /// Syntax::Postgres, r#"UPDATE "fruit" SET "cake_id" = $1 WHERE "fruit"."name" LIKE $2"#, vec![Value::Null, "%Apple%".into()]
/// )]); /// )]);
/// ``` /// ```
fn update_many() -> UpdateMany<Self> { fn update_many() -> UpdateMany<Self> {
@ -439,9 +441,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 0, /// # last_insert_id: 0,
@ -469,7 +471,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"DELETE FROM "fruit" WHERE "fruit"."id" = $1"#, vec![3i32.into()] /// Syntax::Postgres, r#"DELETE FROM "fruit" WHERE "fruit"."id" = $1"#, vec![3i32.into()]
/// )]); /// )]);
/// ``` /// ```
fn delete<A>(model: A) -> DeleteOne<A> fn delete<A>(model: A) -> DeleteOne<A>
@ -487,9 +489,9 @@ pub trait EntityTrait: EntityName {
/// ///
/// ``` /// ```
/// # #[cfg(feature = "mock")] /// # #[cfg(feature = "mock")]
/// # use sea_orm::{error::*, MockDatabase, MockExecResult, Transaction, tests_cfg::*}; /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, Syntax};
/// # /// #
/// # let db = MockDatabase::new() /// # let db = MockDatabase::new(Syntax::Postgres)
/// # .append_exec_results(vec![ /// # .append_exec_results(vec![
/// # MockExecResult { /// # MockExecResult {
/// # last_insert_id: 0, /// # last_insert_id: 0,
@ -515,7 +517,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!( /// assert_eq!(
/// db.into_transaction_log(), /// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values( /// vec![Transaction::from_sql_and_values(
/// r#"DELETE FROM "fruit" WHERE "fruit"."name" LIKE $1"#, vec!["%Apple%".into()] /// Syntax::Postgres, r#"DELETE FROM "fruit" WHERE "fruit"."name" LIKE $1"#, vec!["%Apple%".into()]
/// )]); /// )]);
/// ``` /// ```
fn delete_many() -> DeleteMany<Self> { fn delete_many() -> DeleteMany<Self> {

View File

@ -103,7 +103,7 @@ where
mod tests { mod tests {
use crate::entity::prelude::*; use crate::entity::prelude::*;
use crate::tests_cfg::*; use crate::tests_cfg::*;
use crate::{DatabaseConnection, MockDatabase, Transaction}; use crate::{DatabaseConnection, MockDatabase, Syntax, Transaction};
use futures::TryStreamExt; use futures::TryStreamExt;
use sea_query::{Alias, Expr, SelectStatement, Value}; use sea_query::{Alias, Expr, SelectStatement, Value};
@ -129,7 +129,7 @@ mod tests {
let page3 = Vec::<fruit::Model>::new(); let page3 = Vec::<fruit::Model>::new();
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_query_results(vec![page1.clone(), page2.clone(), page3.clone()]) .append_query_results(vec![page1.clone(), page2.clone(), page3.clone()])
.into_connection(); .into_connection();
@ -138,7 +138,7 @@ mod tests {
fn setup_num_rows() -> (DatabaseConnection, i32) { fn setup_num_rows() -> (DatabaseConnection, i32) {
let num_rows = 3; let num_rows = 3;
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_query_results(vec![vec![maplit::btreemap! { .append_query_results(vec![vec![maplit::btreemap! {
"num_rows" => Into::<Value>::into(num_rows), "num_rows" => Into::<Value>::into(num_rows),
}]]) }]])

View File

@ -102,12 +102,12 @@ impl FromQueryResult for JsonValue {
#[cfg(feature = "mock")] #[cfg(feature = "mock")]
mod tests { mod tests {
use crate::tests_cfg::cake; use crate::tests_cfg::cake;
use crate::{entity::*, MockDatabase}; use crate::{entity::*, MockDatabase, Syntax};
use sea_query::Value; use sea_query::Value;
#[async_std::test] #[async_std::test]
async fn to_json_1() { async fn to_json_1() {
let db = MockDatabase::new() let db = MockDatabase::new(Syntax::Postgres)
.append_query_results(vec![vec![maplit::btreemap! { .append_query_results(vec![vec![maplit::btreemap! {
"id" => Into::<Value>::into(128), "name" => Into::<Value>::into("apple") "id" => Into::<Value>::into(128), "name" => Into::<Value>::into("apple")
}]]) }]])