toasty_driver_integration_suite/tests/
one_model_model_level_key.rs1use crate::prelude::*;
2
3#[driver_test]
5pub async fn model_level_single_key(test: &mut Test) -> Result<()> {
6 #[derive(Debug, toasty::Model)]
7 #[key(name)]
8 struct Widget {
9 name: String,
10
11 value: i64,
12 }
13
14 let mut db = test.setup_db(models!(Widget)).await;
15
16 let widget = Widget::create()
17 .name("sprocket")
18 .value(42)
19 .exec(&mut db)
20 .await?;
21
22 assert_eq!(widget.name, "sprocket");
23 assert_eq!(widget.value, 42);
24
25 let found = Widget::filter_by_name("sprocket").get(&mut db).await?;
27 assert_eq!(found.value, 42);
28
29 Ok(())
30}
31
32#[driver_test]
34pub async fn model_level_composite_key(test: &mut Test) -> Result<()> {
35 #[derive(Debug, toasty::Model)]
36 #[key(one, two)]
37 struct Pair {
38 one: String,
39
40 two: String,
41 }
42
43 let mut db = test.setup_db(models!(Pair)).await;
44
45 Pair::create()
46 .one("hello")
47 .two("world")
48 .exec(&mut db)
49 .await?;
50
51 Pair::create()
52 .one("left")
53 .two("right")
54 .exec(&mut db)
55 .await?;
56
57 let found = Pair::filter_by_one_and_two("hello", "world")
58 .get(&mut db)
59 .await?;
60
61 assert_eq!(found.one, "hello");
62 assert_eq!(found.two, "world");
63
64 Ok(())
65}