toasty_driver_integration_suite/tests/
clone_query.rs1use crate::prelude::*;
4
5#[driver_test(id(ID), scenario(crate::scenarios::two_models), requires(scan))]
7pub async fn clone_query_with_different_modifiers(t: &mut Test) -> Result<()> {
8 let mut db = setup(t).await;
9
10 for _ in 0..10 {
11 User::create().name("a").exec(&mut db).await?;
12 }
13 User::create().name("b").exec(&mut db).await?;
14
15 let query = User::filter_by_name("a");
16 let limited: Vec<_> = query.clone().limit(3).exec(&mut db).await?;
17 let all: Vec<_> = query.exec(&mut db).await?;
18
19 assert_eq!(limited.len(), 3);
20 assert_eq!(all.len(), 10);
21
22 Ok(())
23}
24
25#[driver_test(id(ID), scenario(crate::scenarios::two_models))]
27pub async fn clone_create_builder(t: &mut Test) -> Result<()> {
28 let mut db = setup(t).await;
29
30 let builder = User::create().name("original");
31 let a = builder.clone().exec(&mut db).await?;
32 let b = builder.name("overridden").exec(&mut db).await?;
33
34 assert_eq!(a.name, "original");
35 assert_eq!(b.name, "overridden");
36
37 Ok(())
38}
39
40#[driver_test(id(ID), scenario(crate::scenarios::two_models), requires(scan))]
42pub async fn clone_update_builder(t: &mut Test) -> Result<()> {
43 let mut db = setup(t).await;
44
45 let a = User::create().name("a").exec(&mut db).await?;
46 User::create().name("b").exec(&mut db).await?;
47
48 let update = User::filter_by_id(a.id).update();
49 update.clone().name("x").exec(&mut db).await?;
50
51 let items: Vec<_> = User::filter_by_name("x").exec(&mut db).await?;
52 assert_eq!(items.len(), 1);
53
54 update.name("y").exec(&mut db).await?;
55
56 let items: Vec<_> = User::filter_by_name("y").exec(&mut db).await?;
57 assert_eq!(items.len(), 1);
58
59 let items: Vec<_> = User::filter_by_name("b").exec(&mut db).await?;
61 assert_eq!(items.len(), 1);
62
63 Ok(())
64}