From 820bbad9de3ee42f6bd29d0e2877de7c924a1e1d Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Sat, 19 Jun 2021 02:47:36 +0800 Subject: [PATCH] impl IntoMockRow --- src/database/mock.rs | 43 ++++++++++++++++++++++++------------------- src/tests_cfg/mod.rs | 4 ---- src/tests_cfg/util.rs | 43 ------------------------------------------- 3 files changed, 24 insertions(+), 66 deletions(-) delete mode 100644 src/tests_cfg/util.rs diff --git a/src/database/mock.rs b/src/database/mock.rs index 5d197f4d..c635bcb8 100644 --- a/src/database/mock.rs +++ b/src/database/mock.rs @@ -1,6 +1,7 @@ use crate::{ - Database, DatabaseConnection, ExecErr, ExecResult, ExecResultHolder, MockDatabaseConnection, - MockDatabaseTrait, QueryErr, QueryResult, QueryResultRow, Statement, TypeErr, + Database, DatabaseConnection, EntityTrait, ExecErr, ExecResult, ExecResultHolder, Iden, + Iterable, MockDatabaseConnection, MockDatabaseTrait, ModelTrait, QueryErr, QueryResult, + QueryResultRow, Statement, TypeErr, }; use sea_query::{Value, ValueType}; use std::collections::BTreeMap; @@ -23,6 +24,23 @@ pub struct MockRow { values: BTreeMap, } +pub trait IntoMockRow { + fn into_mock_row(self) -> MockRow; +} + +impl IntoMockRow for M +where + M: ModelTrait, +{ + fn into_mock_row(self) -> MockRow { + let mut values = BTreeMap::new(); + for col in <::Column>::iter() { + values.insert(col.to_string(), self.get(col)); + } + MockRow { values } + } +} + impl MockDatabase { pub fn new() -> Self { Default::default() @@ -101,23 +119,10 @@ impl MockRow { } } -impl From> for MockRow { - fn from(values: BTreeMap<&str, Value>) -> Self { - Self { - values: values.into_iter().map(|(k, v)| (k.to_owned(), v)).collect(), +impl IntoMockRow for BTreeMap<&str, Value> { + fn into_mock_row(self) -> MockRow { + MockRow { + values: self.into_iter().map(|(k, v)| (k.to_owned(), v)).collect(), } } } - -pub trait IntoMockRow { - fn into_mock_row(self) -> MockRow; -} - -impl IntoMockRow for T -where - T: Into, -{ - fn into_mock_row(self) -> MockRow { - self.into() - } -} diff --git a/src/tests_cfg/mod.rs b/src/tests_cfg/mod.rs index 70660dd8..e39a16f3 100644 --- a/src/tests_cfg/mod.rs +++ b/src/tests_cfg/mod.rs @@ -4,7 +4,3 @@ pub mod cake; pub mod cake_filling; pub mod filling; pub mod fruit; - -#[cfg(test)] -#[cfg(feature = "mock")] -pub mod util; diff --git a/src/tests_cfg/util.rs b/src/tests_cfg/util.rs deleted file mode 100644 index 177fdf14..00000000 --- a/src/tests_cfg/util.rs +++ /dev/null @@ -1,43 +0,0 @@ -use crate::{tests_cfg::*, IntoMockRow, MockRow}; -use sea_query::Value; - -impl From for MockRow { - fn from(model: cake_filling::Model) -> Self { - let map = maplit::btreemap! { - "cake_id" => Into::::into(model.cake_id), - "filling_id" => Into::::into(model.filling_id), - }; - map.into_mock_row() - } -} - -impl From for MockRow { - fn from(model: cake::Model) -> Self { - let map = maplit::btreemap! { - "id" => Into::::into(model.id), - "name" => Into::::into(model.name), - }; - map.into_mock_row() - } -} - -impl From for MockRow { - fn from(model: filling::Model) -> Self { - let map = maplit::btreemap! { - "id" => Into::::into(model.id), - "name" => Into::::into(model.name), - }; - map.into_mock_row() - } -} - -impl From for MockRow { - fn from(model: fruit::Model) -> Self { - let map = maplit::btreemap! { - "id" => Into::::into(model.id), - "name" => Into::::into(model.name), - "cake_id" => Into::::into(model.cake_id), - }; - map.into_mock_row() - } -}