impl IntoMockRow
This commit is contained in:
parent
f4611c4939
commit
820bbad9de
@ -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<String, Value>,
|
||||
}
|
||||
|
||||
pub trait IntoMockRow {
|
||||
fn into_mock_row(self) -> MockRow;
|
||||
}
|
||||
|
||||
impl<M> IntoMockRow for M
|
||||
where
|
||||
M: ModelTrait,
|
||||
{
|
||||
fn into_mock_row(self) -> MockRow {
|
||||
let mut values = BTreeMap::new();
|
||||
for col in <<M::Entity as EntityTrait>::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<BTreeMap<&str, Value>> 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<T> IntoMockRow for T
|
||||
where
|
||||
T: Into<MockRow>,
|
||||
{
|
||||
fn into_mock_row(self) -> MockRow {
|
||||
self.into()
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -1,43 +0,0 @@
|
||||
use crate::{tests_cfg::*, IntoMockRow, MockRow};
|
||||
use sea_query::Value;
|
||||
|
||||
impl From<cake_filling::Model> for MockRow {
|
||||
fn from(model: cake_filling::Model) -> Self {
|
||||
let map = maplit::btreemap! {
|
||||
"cake_id" => Into::<Value>::into(model.cake_id),
|
||||
"filling_id" => Into::<Value>::into(model.filling_id),
|
||||
};
|
||||
map.into_mock_row()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<cake::Model> for MockRow {
|
||||
fn from(model: cake::Model) -> Self {
|
||||
let map = maplit::btreemap! {
|
||||
"id" => Into::<Value>::into(model.id),
|
||||
"name" => Into::<Value>::into(model.name),
|
||||
};
|
||||
map.into_mock_row()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<filling::Model> for MockRow {
|
||||
fn from(model: filling::Model) -> Self {
|
||||
let map = maplit::btreemap! {
|
||||
"id" => Into::<Value>::into(model.id),
|
||||
"name" => Into::<Value>::into(model.name),
|
||||
};
|
||||
map.into_mock_row()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<fruit::Model> for MockRow {
|
||||
fn from(model: fruit::Model) -> Self {
|
||||
let map = maplit::btreemap! {
|
||||
"id" => Into::<Value>::into(model.id),
|
||||
"name" => Into::<Value>::into(model.name),
|
||||
"cake_id" => Into::<Value>::into(model.cake_id),
|
||||
};
|
||||
map.into_mock_row()
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user