mae 0.3.12

Opinionated async Rust framework for building Mae-Technologies micro-services — app scaffolding, repo layer, middleware, and test utilities.
Documentation
use serde::{Deserialize, Serialize};

#[derive(sqlx::Type, Debug, Clone, Deserialize, Serialize)]
#[sqlx(type_name = "status", rename_all = "lowercase")]
#[serde(rename_all = "lowercase")]
pub enum DomainStatus {
    Incomplete,
    Active,
    Deleted,
    Archived
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn deserializes_lowercase_status_variants() {
        for (raw, expected) in [
            ("active", DomainStatus::Active),
            ("deleted", DomainStatus::Deleted),
            ("archived", DomainStatus::Archived),
            ("incomplete", DomainStatus::Incomplete)
        ] {
            let parsed: DomainStatus = serde_json::from_value(serde_json::json!(raw)).unwrap();
            assert!(
                matches!(parsed, ref e if std::mem::discriminant(e) == std::mem::discriminant(&expected))
            );
        }
    }
}