()
| 45 | |
| 46 | #[sea_orm_macros::test] |
| 47 | async fn loader_load_many() -> Result<(), DbErr> { |
| 48 | let ctx = TestContext::new("loader_test_load_many").await; |
| 49 | create_tables(&ctx.db).await?; |
| 50 | |
| 51 | let bakery_1 = insert_bakery(&ctx.db, "SeaSide Bakery").await?; |
| 52 | let bakery_2 = insert_bakery(&ctx.db, "Offshore Bakery").await?; |
| 53 | let bakery_3 = insert_bakery(&ctx.db, "Rocky Bakery").await?; |
| 54 | |
| 55 | let baker_1 = insert_baker(&ctx.db, "Baker 1", bakery_1.id).await?; |
| 56 | let baker_2 = insert_baker(&ctx.db, "Baker 2", bakery_1.id).await?; |
| 57 | |
| 58 | let baker_3 = insert_baker(&ctx.db, "John", bakery_2.id).await?; |
| 59 | let baker_4 = insert_baker(&ctx.db, "Baker 4", bakery_2.id).await?; |
| 60 | |
| 61 | let bakeries = bakery::Entity::find().all(&ctx.db).await?; |
| 62 | let bakers = bakeries.load_many(baker::Entity, &ctx.db).await?; |
| 63 | |
| 64 | assert_eq!( |
| 65 | bakeries, |
| 66 | [bakery_1.clone(), bakery_2.clone(), bakery_3.clone()] |
| 67 | ); |
| 68 | assert_eq!( |
| 69 | bakers, |
| 70 | [ |
| 71 | vec![baker_1.clone(), baker_2.clone()], |
| 72 | vec![baker_3.clone(), baker_4.clone()], |
| 73 | vec![] |
| 74 | ] |
| 75 | ); |
| 76 | |
| 77 | // load bakers again but with additional condition |
| 78 | |
| 79 | let bakers = bakeries |
| 80 | .load_many( |
| 81 | baker::Entity::find().filter(baker::Column::Name.like("Baker%")), |
| 82 | &ctx.db, |
| 83 | ) |
| 84 | .await?; |
| 85 | |
| 86 | assert_eq!( |
| 87 | bakers, |
| 88 | [ |
| 89 | vec![baker_1.clone(), baker_2.clone()], |
| 90 | vec![baker_4.clone()], |
| 91 | vec![] |
| 92 | ] |
| 93 | ); |
| 94 | |
| 95 | // now, start from baker |
| 96 | |
| 97 | let bakers = baker::Entity::find().all(&ctx.db).await?; |
| 98 | let bakeries = bakers.load_one(bakery::Entity::find(), &ctx.db).await?; |
| 99 | |
| 100 | // note that two bakers share the same bakery |
| 101 | assert_eq!(bakers, [baker_1, baker_2, baker_3, baker_4]); |
| 102 | assert_eq!( |
| 103 | bakeries, |
| 104 | [ |
nothing calls this directly
no test coverage detected