flatbed 0.0.3

Rust HTTP framework with FlatBuffer codegen, built on Hyper
Documentation
//! A generated table with declared field defaults must deserialise a missing
//! field to its *declared* default — including an enum field whose default is a
//! non-zero variant. The codegen emits a named `default = "…"` fn per such
//! field; a bare field-level `default` would instead give the enum's zero
//! variant, and a container-level default trips utoipa's `ToSchema`.

#[path = "../src/generated/test_flatbed.rs"]
#[allow(warnings, clippy::all)]
mod generated;

use generated::test::{Defaulted, Severity};

#[test]
fn absent_fields_deserialize_to_declared_defaults() {
    let d: Defaulted = flatbed::serde_json::from_str("{}").expect("empty object");
    assert_eq!(d.count, 25);
    assert!(d.flag);
    assert_eq!(d.ratio, 1.5);
    assert_eq!(d.level, Severity::Warning); // non-zero declared default, not Info
}

#[test]
fn present_field_overrides_default() {
    let d: Defaulted =
        flatbed::serde_json::from_str(r#"{"level":"Info","count":5}"#).expect("partial object");
    assert_eq!(d.level, Severity::Info);
    assert_eq!(d.count, 5);
    // untouched fields still fall back to their declared defaults
    assert!(d.flag);
    assert_eq!(d.ratio, 1.5);
}