Skip to content

Commit 1015c04

Browse files
committed
test: add tests for macros #[sea_orm(model_attrs(..))]
1 parent 67d331b commit 1015c04

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

tests/derive_model_tests.rs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
use sea_orm::prelude::{HasMany, HasOne};
2+
3+
mod cake {
4+
use sea_orm::prelude::*;
5+
use serde::Serialize;
6+
7+
#[sea_orm::model]
8+
#[derive(DeriveEntityModel, Debug, Clone, Serialize)]
9+
#[sea_orm(table_name = "cake")]
10+
#[sea_orm(model_attrs(serde(rename_all = "UPPERCASE")))]
11+
#[sea_orm(model_ex_attrs(serde(rename_all = "PascalCase")))]
12+
pub struct Model {
13+
#[sea_orm(primary_key)]
14+
pub id: i32,
15+
#[sea_orm(has_many)]
16+
pub fruits: HasMany<super::fruit::Entity>,
17+
}
18+
19+
impl ActiveModelBehavior for ActiveModel {}
20+
}
21+
22+
mod fruit {
23+
use sea_orm::prelude::*;
24+
use serde::Serialize;
25+
26+
#[sea_orm::model]
27+
#[derive(DeriveEntityModel, Debug, Clone)]
28+
#[sea_orm(
29+
table_name = "fruit",
30+
model_attrs(derive(Serialize), serde(rename_all = "UPPERCASE")),
31+
model_ex_attrs(derive(Serialize), serde(rename_all = "PascalCase"))
32+
)]
33+
pub struct Model {
34+
#[sea_orm(primary_key)]
35+
pub id: i32,
36+
pub cake_id: Option<i32>,
37+
#[sea_orm(belongs_to, from = "cake_id", to = "id")]
38+
pub cake: HasOne<super::cake::Entity>,
39+
}
40+
41+
impl ActiveModelBehavior for ActiveModel {}
42+
}
43+
44+
#[test]
45+
fn main() -> Result<(), serde_json::Error> {
46+
use sea_orm::EntityName;
47+
assert_eq!(cake::Entity.table_name(), "cake");
48+
assert_eq!(fruit::Entity.table_name(), "fruit");
49+
50+
assert_eq!(serde_json::to_string(&cake::Model { id: 1 })?, "{\"ID\":1}");
51+
assert_eq!(
52+
serde_json::to_string(&cake::ModelEx {
53+
id: 1,
54+
fruits: HasMany::Loaded(Vec::new()),
55+
})?,
56+
"{\"Id\":1,\"Fruits\":[]}"
57+
);
58+
59+
assert_eq!(
60+
serde_json::to_string(&fruit::Model {
61+
id: 2,
62+
cake_id: Some(1)
63+
})?,
64+
"{\"ID\":2,\"CAKE_ID\":1}"
65+
);
66+
assert_eq!(
67+
serde_json::to_string(&fruit::ModelEx {
68+
id: 2,
69+
cake_id: Some(1),
70+
cake: HasOne::Unloaded,
71+
})?,
72+
"{\"Id\":2,\"CakeId\":1,\"Cake\":null}"
73+
);
74+
75+
Ok(())
76+
}

0 commit comments

Comments
 (0)