toasty-driver-integration-suite 0.5.0

Integration test suite for Toasty database drivers
Documentation
use crate::prelude::*;

#[driver_test(id(ID), requires(sql), scenario(crate::scenarios::two_models))]
pub async fn count_empty_table(t: &mut Test) -> Result<()> {
    let mut db = setup(t).await;

    let count = User::all().count().exec(&mut db).await?;
    assert_eq!(count, 0);

    Ok(())
}

#[driver_test(id(ID), requires(sql), scenario(crate::scenarios::two_models))]
pub async fn count_after_inserts(t: &mut Test) -> Result<()> {
    let mut db = setup(t).await;

    toasty::create!(User::[
        { name: "a" },
        { name: "b" },
        { name: "c" },
    ])
    .exec(&mut db)
    .await?;

    let count = User::all().count().exec(&mut db).await?;
    assert_eq!(count, 3);

    Ok(())
}

#[driver_test(id(ID), requires(sql), scenario(crate::scenarios::two_models))]
pub async fn count_with_filter(t: &mut Test) -> Result<()> {
    let mut db = setup(t).await;

    toasty::create!(User::[
        { name: "a" },
        { name: "a" },
        { name: "b" },
    ])
    .exec(&mut db)
    .await?;

    let count = User::filter_by_name("a").count().exec(&mut db).await?;
    assert_eq!(count, 2);

    let count = User::filter_by_name("b").count().exec(&mut db).await?;
    assert_eq!(count, 1);

    let count = User::filter_by_name("c").count().exec(&mut db).await?;
    assert_eq!(count, 0);

    Ok(())
}