toasty_driver_integration_suite/tests/
batch_nested_create.rs

1use crate::prelude::*;
2
3/// Use an array of create builders to create multiple nested HasMany records
4/// in a single parent create statement.
5#[driver_test(id(ID), scenario(crate::scenarios::has_many_belongs_to))]
6pub async fn batch_as_nested_has_many_create(test: &mut Test) -> Result<()> {
7    let mut db = setup(test).await;
8
9    // Pass an array of create builders — arrays and slices implement
10    // `IntoExpr<List<Model>>` so they work as nested HasMany values.
11    let user = User::create()
12        .name("Ann Chovey")
13        .todos([
14            Todo::create().title("Make pizza"),
15            Todo::create().title("Sleep"),
16        ])
17        .exec(&mut db)
18        .await?;
19
20    assert_eq!(user.name, "Ann Chovey");
21
22    // Verify both todos were created and linked
23    let todos: Vec<_> = user.todos().exec(&mut db).await?;
24    assert_eq_unordered!(todos.iter().map(|t| &t.title[..]), ["Make pizza", "Sleep"]);
25
26    Ok(())
27}