From 97ee0a970368be8ef62266453bd400b24ffe4f5c Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Wed, 26 Jul 2023 20:17:35 +0100 Subject: [PATCH] Test derive FromJsonQueryResult --- sea-orm-macros/src/derives/value_type.rs | 2 +- tests/common/features/json_vec_derive.rs | 19 +++++++++++++++++++ tests/common/features/mod.rs | 1 + tests/json_vec_tests.rs | 21 +++++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/common/features/json_vec_derive.rs diff --git a/sea-orm-macros/src/derives/value_type.rs b/sea-orm-macros/src/derives/value_type.rs index 2a1ee606..d7ebfe49 100644 --- a/sea-orm-macros/src/derives/value_type.rs +++ b/sea-orm-macros/src/derives/value_type.rs @@ -100,7 +100,7 @@ impl DeriveValueType { quote!( #[automatically_derived] - impl From<#name> for Value { + impl std::convert::From<#name> for Value { fn from(source: #name) -> Self { source.0.into() } diff --git a/tests/common/features/json_vec_derive.rs b/tests/common/features/json_vec_derive.rs new file mode 100644 index 00000000..ebe95495 --- /dev/null +++ b/tests/common/features/json_vec_derive.rs @@ -0,0 +1,19 @@ +use sea_orm::entity::prelude::*; +use sea_orm::FromJsonQueryResult; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[sea_orm(table_name = "json_vec")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub str_vec: StringVec, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} + +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, FromJsonQueryResult)] +pub struct StringVec(pub Vec); diff --git a/tests/common/features/mod.rs b/tests/common/features/mod.rs index 407a5991..84a6f7f2 100644 --- a/tests/common/features/mod.rs +++ b/tests/common/features/mod.rs @@ -13,6 +13,7 @@ pub mod event_trigger; pub mod insert_default; pub mod json_struct; pub mod json_vec; +pub mod json_vec_derive; pub mod metadata; pub mod pi; pub mod repository; diff --git a/tests/json_vec_tests.rs b/tests/json_vec_tests.rs index cd89d121..0221f0cd 100644 --- a/tests/json_vec_tests.rs +++ b/tests/json_vec_tests.rs @@ -14,6 +14,7 @@ async fn main() -> Result<(), DbErr> { let ctx = TestContext::new("json_vec_tests").await; create_tables(&ctx.db).await?; insert_json_vec(&ctx.db).await?; + insert_json_vec_derive(&ctx.db).await?; ctx.delete().await; Ok(()) @@ -38,3 +39,23 @@ pub async fn insert_json_vec(db: &DatabaseConnection) -> Result<(), DbErr> { Ok(()) } + +pub async fn insert_json_vec_derive(db: &DatabaseConnection) -> Result<(), DbErr> { + let json_vec = json_vec_derive::Model { + id: 2, + str_vec: json_vec_derive::StringVec(vec!["4".to_string(), "5".to_string(), "6".to_string()]), + }; + + let result = json_vec.clone().into_active_model().insert(db).await?; + + assert_eq!(result, json_vec); + + let model = json_vec_derive::Entity::find() + .filter(json_vec_derive::Column::Id.eq(json_vec.id)) + .one(db) + .await?; + + assert_eq!(model, Some(json_vec)); + + Ok(()) +}