doido-model 0.0.9

SeaORM re-exports plus connection pooling and model testing helpers for Doido apps.
Documentation
use doido_model::factory::{sequence, Factory};

struct User {
    email: String,
    #[allow(dead_code)]
    name: String,
}

impl Factory for User {
    fn build() -> Self {
        let n = sequence();
        User {
            email: format!("user{n}@example.com"),
            name: "Test User".into(),
        }
    }
}

#[test]
fn factory_builds_records_with_unique_sequences() {
    let a = User::build();
    let b = User::build();
    assert_ne!(a.email, b.email, "the sequence keeps records unique");
}

#[test]
fn build_list_builds_n_distinct_records() {
    let users = User::build_list(3);
    assert_eq!(users.len(), 3);
    let mut emails: Vec<_> = users.iter().map(|u| u.email.clone()).collect();
    emails.sort();
    emails.dedup();
    assert_eq!(emails.len(), 3, "all built records are distinct");
}

#[test]
fn sequence_is_monotonic() {
    let x = sequence();
    let y = sequence();
    assert!(y > x);
}