From 9080d16c248af5413f1067e6982a565d661f223c Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Fri, 7 May 2021 16:49:51 +0800 Subject: [PATCH] First unit test --- Cargo.toml | 16 +++++++++++++-- src/connector/mod.rs | 7 +++++-- src/lib.rs | 1 + src/query/select.rs | 17 +++++++++++++++ src/tests_cfg/cake.rs | 48 +++++++++++++++++++++++++++++++++++++++++++ src/tests_cfg/mod.rs | 1 + 6 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 src/tests_cfg/cake.rs create mode 100644 src/tests_cfg/mod.rs diff --git a/Cargo.toml b/Cargo.toml index 2dfc0072..6ea8f82a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,10 +22,22 @@ path = "src/lib.rs" [dependencies] async-trait = "^0.1" -async-std = { version = "^1.9", features = [ "attributes" ] } futures = { version = "^0.3" } sea-query = { path = "../sea-query", version = "^0.10", features = [ "sqlx-mysql" ] } # sea-schema = { path = "../sea-schema" } serde = { version = "^1.0", features = [ "derive" ] } -sqlx = { version = "^0.5", features = [ "runtime-async-std-native-tls", "mysql", "any", "chrono", "time", "bigdecimal", "decimal", "uuid", "json" ] } +sqlx = { version = "^0.5", optional = true } strum = { version = "^0.20", features = [ "derive" ] } + +[features] +debug-print = [] +default = [ "sqlx-mysql", "runtime-async-std-native-tls" ] +sqlx-dep = [ "sqlx" ] +sqlx-mysql = [ "sqlx-dep", "sea-query/sqlx-mysql", "sqlx/mysql" ] +sqlx-postgres = [ "sqlx-dep", "sea-query/sqlx-postgres", "sqlx/postgres" ] +runtime-actix-native-tls = [ "sqlx/runtime-actix-native-tls" ] +runtime-async-std-native-tls = [ "sqlx/runtime-async-std-native-tls" ] +runtime-tokio-native-tls = [ "sqlx/runtime-tokio-native-tls" ] +runtime-actix-rustls = [ "sqlx/runtime-actix-rustls" ] +runtime-async-std-rustls = [ "sqlx/runtime-async-std-rustls" ] +runtime-tokio-rustls = [ "sqlx/runtime-tokio-rustls" ] diff --git a/src/connector/mod.rs b/src/connector/mod.rs index e63c398e..03002862 100644 --- a/src/connector/mod.rs +++ b/src/connector/mod.rs @@ -41,8 +41,11 @@ impl From<(String, Values)> for Statement { impl fmt::Display for Statement { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let builder = MySqlQueryBuilder::default(); - let string = inject_parameters(&self.sql, self.values.0.clone(), &builder); + let string = inject_parameters( + &self.sql, + self.values.0.clone(), + &MySqlQueryBuilder::default(), + ); write!(f, "{}", &string) } } diff --git a/src/lib.rs b/src/lib.rs index 5db1fead..eb0a9228 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ mod database; mod driver; mod entity; mod query; +pub(crate) mod tests_cfg; mod util; pub use connector::*; diff --git a/src/query/select.rs b/src/query/select.rs index 46aeb672..dcfc186d 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -87,3 +87,20 @@ where self.as_query().build(builder).into() } } + +#[cfg(test)] +mod tests { + use crate::tests_cfg::cake; + use crate::Entity; + use sea_query::MySqlQueryBuilder; + + #[test] + fn test_1() { + assert_eq!( + cake::Cake::find() + .build(MySqlQueryBuilder::default()) + .to_string(), + "SELECT `cake`.`id`, `cake`.`name` FROM `cake`" + ); + } +} diff --git a/src/tests_cfg/cake.rs b/src/tests_cfg/cake.rs new file mode 100644 index 00000000..f232d9fe --- /dev/null +++ b/src/tests_cfg/cake.rs @@ -0,0 +1,48 @@ +use crate::{Column, ColumnType, Entity, Identity, IntoIdentity, Relation, RelationDef}; +use sea_query::Iden; +use strum::EnumIter; + +#[derive(Iden, Default, Debug)] +pub struct Cake; + +#[derive(Iden, EnumIter)] +pub enum CakeColumn { + Id, + Name, +} + +#[derive(EnumIter)] +pub enum CakeRelation {} + +#[derive(Debug, Default, PartialEq)] +pub struct CakeModel { + pub id: Option, + pub name: Option, +} + +impl Entity for Cake { + type Model = CakeModel; + + type Column = CakeColumn; + + type Relation = CakeRelation; + + fn primary_key() -> Identity { + CakeColumn::Id.into_identity() + } +} + +impl Column for CakeColumn { + fn col_type(&self) -> ColumnType { + match self { + Self::Id => ColumnType::Integer(None), + Self::Name => ColumnType::String(None), + } + } +} + +impl Relation for CakeRelation { + fn rel_def(&self) -> RelationDef { + panic!() + } +} diff --git a/src/tests_cfg/mod.rs b/src/tests_cfg/mod.rs new file mode 100644 index 00000000..5fd53bef --- /dev/null +++ b/src/tests_cfg/mod.rs @@ -0,0 +1 @@ +pub mod cake;