toasty_driver_integration_suite/tests/
clone_query.rs1use crate::prelude::*;
4
5#[driver_test(id(ID), requires(sql))]
7pub async fn clone_query_with_different_modifiers(t: &mut Test) -> Result<()> {
8 #[derive(toasty::Model)]
9 struct Item {
10 #[key]
11 #[auto]
12 id: ID,
13
14 #[index]
15 name: String,
16 }
17
18 let mut db = t.setup_db(models!(Item)).await;
19
20 for _ in 0..10 {
21 Item::create().name("a").exec(&mut db).await?;
22 }
23 Item::create().name("b").exec(&mut db).await?;
24
25 let query = Item::filter_by_name("a");
26 let limited: Vec<_> = query.clone().limit(3).exec(&mut db).await?;
27 let all: Vec<_> = query.exec(&mut db).await?;
28
29 assert_eq!(limited.len(), 3);
30 assert_eq!(all.len(), 10);
31
32 Ok(())
33}
34
35#[driver_test(id(ID))]
37pub async fn clone_create_builder(t: &mut Test) -> Result<()> {
38 #[derive(toasty::Model)]
39 struct Item {
40 #[key]
41 #[auto]
42 id: ID,
43
44 name: String,
45 }
46
47 let mut db = t.setup_db(models!(Item)).await;
48
49 let builder = Item::create().name("original");
50 let a = builder.clone().exec(&mut db).await?;
51 let b = builder.name("overridden").exec(&mut db).await?;
52
53 assert_eq!(a.name, "original");
54 assert_eq!(b.name, "overridden");
55
56 Ok(())
57}
58
59#[driver_test(id(ID), requires(sql))]
61pub async fn clone_update_builder(t: &mut Test) -> Result<()> {
62 #[derive(toasty::Model)]
63 struct Item {
64 #[key]
65 #[auto]
66 id: ID,
67
68 #[index]
69 name: String,
70 }
71
72 let mut db = t.setup_db(models!(Item)).await;
73
74 let a = Item::create().name("a").exec(&mut db).await?;
75 Item::create().name("b").exec(&mut db).await?;
76
77 let update = Item::filter_by_id(a.id).update();
78 update.clone().name("x").exec(&mut db).await?;
79
80 let items: Vec<_> = Item::filter_by_name("x").exec(&mut db).await?;
81 assert_eq!(items.len(), 1);
82
83 update.name("y").exec(&mut db).await?;
84
85 let items: Vec<_> = Item::filter_by_name("y").exec(&mut db).await?;
86 assert_eq!(items.len(), 1);
87
88 let items: Vec<_> = Item::filter_by_name("b").exec(&mut db).await?;
90 assert_eq!(items.len(), 1);
91
92 Ok(())
93}