Unit test DeriveIntoActiveModel

This commit is contained in:
Chris Tsang 2021-10-13 18:58:00 +08:00
parent d5e95b0f8f
commit 760c439c83
4 changed files with 43 additions and 4 deletions

View File

@ -71,12 +71,12 @@ impl IntoActiveModel {
let field_ident = field.ident.as_ref().unwrap(); let field_ident = field.ident.as_ref().unwrap();
quote!( quote!(
::sea_orm::IntoActiveValue::<_>::into_active_value(self.#field_ident).into() sea_orm::IntoActiveValue::<_>::into_active_value(self.#field_ident).into()
) )
}); });
quote!( 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 { fn into_active_model(self) -> #active_model_ident {
#active_model_ident { #active_model_ident {
#( #field_idents: #expanded_fields_into_active_model, )* #( #field_idents: #expanded_fields_into_active_model, )*

View File

@ -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)),
}
);
}
}

View File

@ -8,7 +8,7 @@ pub use crate::{
#[cfg(feature = "macros")] #[cfg(feature = "macros")]
pub use crate::{ pub use crate::{
DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity, DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity,
DeriveEntityModel, DeriveModel, DerivePrimaryKey, DeriveRelation, DeriveIntoActiveModel DeriveEntityModel, DeriveIntoActiveModel, DeriveModel, DerivePrimaryKey, DeriveRelation,
}; };
#[cfg(feature = "with-json")] #[cfg(feature = "with-json")]

View File

@ -287,7 +287,8 @@ pub use schema::*;
#[cfg(feature = "macros")] #[cfg(feature = "macros")]
pub use sea_orm_macros::{ pub use sea_orm_macros::{
DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity, DeriveActiveModel, DeriveActiveModelBehavior, DeriveColumn, DeriveCustomColumn, DeriveEntity,
DeriveEntityModel, DeriveModel, DerivePrimaryKey, DeriveRelation, FromQueryResult, DeriveIntoActiveModel, DeriveEntityModel, DeriveIntoActiveModel, DeriveModel, DerivePrimaryKey, DeriveRelation,
FromQueryResult,
}; };
pub use sea_query; pub use sea_query;