commonmeta-schema 1.0.0-rc.2.dev.15

Commonmeta JSON Schemas and conformance fixtures
Documentation
#![forbid(unsafe_code)]

/// Embedded Commonmeta schema v1.0rc1.
pub const COMMONMETA_SCHEMA_V1_0RC1: &str =
    include_str!("../schemas/commonmeta_v1.0rc1.json");

/// Embedded Commonmeta schema v1.0rc2.
pub const COMMONMETA_SCHEMA_V1_0RC2: &str =
    include_str!("../schemas/commonmeta_v1.0rc2.json");

/// Embedded Commonmeta journal article fixture.
pub const COMMONMETA_FIXTURE_JOURNAL_ARTICLE: &str =
    include_str!("../fixtures/commonmeta/journal_article.json");

/// Return an embedded schema by Commonmeta version string.
///
/// Currently supported: "1.0rc1", "1.0rc2".
pub fn schema(version: &str) -> Option<&'static str> {
    match version {
        "1.0rc1" => Some(COMMONMETA_SCHEMA_V1_0RC1),
        "1.0rc2" => Some(COMMONMETA_SCHEMA_V1_0RC2),
        _ => None,
    }
}

/// Return an embedded Commonmeta fixture by name.
///
/// Currently supported: "journal_article".
pub fn fixture(name: &str) -> Option<&'static str> {
    match name {
        "journal_article" => Some(COMMONMETA_FIXTURE_JOURNAL_ARTICLE),
        _ => None,
    }
}

#[cfg(test)]
mod tests {
    use super::{fixture, schema};

    #[test]
    fn known_version_is_available() {
        assert!(schema("1.0rc1").is_some());
        assert!(schema("1.0rc2").is_some());
    }

    #[test]
    fn unknown_version_is_none() {
        assert!(schema("nope").is_none());
    }

    #[test]
    fn known_fixture_is_available() {
        assert!(fixture("journal_article").is_some());
    }

    #[test]
    fn unknown_fixture_is_none() {
        assert!(fixture("nope").is_none());
    }
}