From 760c439c83e74fcef75c6331c4e7475eec4ada56 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Wed, 13 Oct 2021 18:58:00 +0800 Subject: [PATCH] Unit test DeriveIntoActiveModel --- .../src/derives/into_active_model.rs | 4 +- src/entity/active_model.rs | 38 +++++++++++++++++++ src/entity/prelude.rs | 2 +- src/lib.rs | 3 +- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/sea-orm-macros/src/derives/into_active_model.rs b/sea-orm-macros/src/derives/into_active_model.rs index d40a0a4b..ad080e23 100644 --- a/sea-orm-macros/src/derives/into_active_model.rs +++ b/sea-orm-macros/src/derives/into_active_model.rs @@ -71,12 +71,12 @@ impl IntoActiveModel { let field_ident = field.ident.as_ref().unwrap(); quote!( - ::sea_orm::IntoActiveValue::<_>::into_active_value(self.#field_ident).into() + sea_orm::IntoActiveValue::<_>::into_active_value(self.#field_ident).into() ) }); quote!( - impl ::sea_orm::IntoActiveModel<#active_model_ident> for #ident { + impl sea_orm::IntoActiveModel<#active_model_ident> for #ident { fn into_active_model(self) -> #active_model_ident { #active_model_ident { #( #field_idents: #expanded_fields_into_active_model, )* diff --git a/src/entity/active_model.rs b/src/entity/active_model.rs index a2b22359..9006e385 100644 --- a/src/entity/active_model.rs +++ b/src/entity/active_model.rs @@ -380,3 +380,41 @@ where } } } + +#[cfg(test)] +mod tests { + use crate::tests_cfg::*; + + #[test] + #[cfg(feature = "macros")] + fn test_derive_into_active_model_1() { + use crate::entity::*; + + mod my_fruit { + pub use super::fruit::*; + use crate as sea_orm; + use crate::entity::prelude::*; + + #[derive(DeriveIntoActiveModel)] + pub struct NewFruit { + // id is omitted + pub name: String, + // it is required as opposed to optional in Model + pub cake_id: i32, + } + } + + assert_eq!( + my_fruit::NewFruit { + name: "Apple".to_owned(), + cake_id: 1, + } + .into_active_model(), + fruit::ActiveModel { + id: Unset(None), + name: Set("Apple".to_owned()), + cake_id: Set(Some(1)), + } + ); + } +} diff --git a/src/entity/prelude.rs b/src/entity/prelude.rs index efaab639..ac4d50fa 100644 --- a/src/entity/prelude.rs +++ b/src/entity/prelude.rs @@ -8,7 +8,7 @@ pub use crate::{ #[cfg(feature = "macros")] pub use crate::{ DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity, - DeriveEntityModel, DeriveModel, DerivePrimaryKey, DeriveRelation, DeriveIntoActiveModel + DeriveEntityModel, DeriveIntoActiveModel, DeriveModel, DerivePrimaryKey, DeriveRelation, }; #[cfg(feature = "with-json")] diff --git a/src/lib.rs b/src/lib.rs index c66cb3f2..ab5dff11 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -287,7 +287,8 @@ pub use schema::*; #[cfg(feature = "macros")] pub use sea_orm_macros::{ DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity, - DeriveEntityModel, DeriveModel, DerivePrimaryKey, DeriveRelation, FromQueryResult, DeriveIntoActiveModel, + DeriveEntityModel, DeriveIntoActiveModel, DeriveModel, DerivePrimaryKey, DeriveRelation, + FromQueryResult, }; pub use sea_query;