oparl_types/
oparl_version.rs

1// SPDX-FileCopyrightText: Politik im Blick developers
2// SPDX-FileCopyrightText: Wolfgang Silbermayr <wolfgang@silbermayr.at>
3//
4// SPDX-License-Identifier: AGPL-3.0-or-later OR EUPL-1.2
5
6#[derive(
7    Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, serde::Serialize, serde::Deserialize,
8)]
9pub enum OParlVersion {
10    #[serde(rename = "https://schema.oparl.org/1.1/")]
11    Version1_1,
12}
13
14#[cfg(test)]
15mod serde_tests {
16    use super::OParlVersion;
17    use pretty_assertions::assert_eq;
18    use serde_json::json;
19
20    #[test]
21    fn serialize() {
22        assert_eq!(
23            json!(OParlVersion::Version1_1),
24            json!("https://schema.oparl.org/1.1/")
25        );
26    }
27
28    #[test]
29    fn deserialize_good() {
30        let deserialized: OParlVersion =
31            serde_json::from_value(json!("https://schema.oparl.org/1.1/"))
32                .expect("value must be deserializable as OParlVersion");
33        assert_eq!(deserialized, OParlVersion::Version1_1);
34    }
35
36    #[test]
37    fn deserialize_bad() {
38        assert!(
39            serde_json::from_value::<OParlVersion>(json!("https://schema.opral.org/1.1/")).is_err()
40        );
41        assert!(
42            serde_json::from_value::<OParlVersion>(json!("https://schema.oparl.org/1.0/")).is_err()
43        );
44        assert!(
45            serde_json::from_value::<OParlVersion>(json!("https://schema.oparl.org/1.1")).is_err()
46        );
47        assert!(
48            serde_json::from_value::<OParlVersion>(json!("http://schema.oparl.org/1.1/")).is_err()
49        );
50    }
51}