impl IntoMockRow
This commit is contained in:
parent
f4611c4939
commit
820bbad9de
@ -1,6 +1,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
Database, DatabaseConnection, ExecErr, ExecResult, ExecResultHolder, MockDatabaseConnection,
|
Database, DatabaseConnection, EntityTrait, ExecErr, ExecResult, ExecResultHolder, Iden,
|
||||||
MockDatabaseTrait, QueryErr, QueryResult, QueryResultRow, Statement, TypeErr,
|
Iterable, MockDatabaseConnection, MockDatabaseTrait, ModelTrait, QueryErr, QueryResult,
|
||||||
|
QueryResultRow, Statement, TypeErr,
|
||||||
};
|
};
|
||||||
use sea_query::{Value, ValueType};
|
use sea_query::{Value, ValueType};
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
@ -23,6 +24,23 @@ pub struct MockRow {
|
|||||||
values: BTreeMap<String, Value>,
|
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 {
|
impl MockDatabase {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Default::default()
|
Default::default()
|
||||||
@ -101,23 +119,10 @@ impl MockRow {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<BTreeMap<&str, Value>> for MockRow {
|
impl IntoMockRow for BTreeMap<&str, Value> {
|
||||||
fn from(values: BTreeMap<&str, Value>) -> Self {
|
|
||||||
Self {
|
|
||||||
values: values.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 {
|
fn into_mock_row(self) -> MockRow {
|
||||||
self.into()
|
MockRow {
|
||||||
|
values: self.into_iter().map(|(k, v)| (k.to_owned(), v)).collect(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,3 @@ pub mod cake;
|
|||||||
pub mod cake_filling;
|
pub mod cake_filling;
|
||||||
pub mod filling;
|
pub mod filling;
|
||||||
pub mod fruit;
|
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