fedimint-server-core 0.12.0-beta.2

Fedimint is a Federated Chaumian E-Cash Mint, natively compatible with Bitcoin & the Lightning Network
Documentation
use fedimint_core::module::{ApiEndpoint, ApiVersion, MultiApiVersion, serde_json};

use super::api_versions_from_endpoints;

fn make_endpoint(major: u32, minor: u32) -> ApiEndpoint<()> {
    ApiEndpoint {
        path: "/fake",
        version: ApiVersion::new(major, minor),
        handler: Box::new(|_, _, _| Box::pin(async { Ok(serde_json::Value::Null) })),
    }
}

#[test]
fn version_derived_from_endpoints_max_minor() {
    let endpoints = vec![
        make_endpoint(0, 1),
        make_endpoint(0, 3),
        make_endpoint(0, 2),
        make_endpoint(1, 0),
    ];

    let expected = MultiApiVersion::try_from_iter([ApiVersion::new(0, 3), ApiVersion::new(1, 0)])
        .expect("test versions have unique majors");

    assert_eq!(api_versions_from_endpoints(endpoints), expected);
}

#[test]
fn version_derived_from_empty_endpoints_defaults_to_zero() {
    let expected = MultiApiVersion::try_from_iter([ApiVersion::new(0, 0)])
        .expect("test versions have unique majors");

    assert_eq!(
        api_versions_from_endpoints(Vec::<ApiEndpoint<()>>::new()),
        expected
    );
}