terdoc_types/
input_format.rs

1// SPDX-FileCopyrightText: OpenTalk GmbH <mail@opentalk.eu>
2// SPDX-License-Identifier: MIT OR Apache-2.0
3
4use serde::{Deserialize, Serialize};
5
6/// Enum type for defining the possible input file formats
7#[derive(
8    Debug,
9    Clone,
10    Copy,
11    PartialEq,
12    Eq,
13    Serialize,
14    Deserialize,
15    strum::AsRefStr,
16    strum::Display,
17    strum::EnumCount,
18    strum::EnumIter,
19    strum::EnumString,
20    strum::VariantNames,
21    strum::IntoStaticStr,
22)]
23#[serde(rename_all = "snake_case")]
24#[strum(serialize_all = "snake_case")]
25pub enum InputFormat {
26    /// The MarkDown input format
27    Markdown,
28}
29
30#[cfg(test)]
31mod tests {
32    use pretty_assertions::assert_eq;
33    use serde_json::json;
34    use strum::VariantNames;
35
36    use super::*;
37
38    #[test]
39    fn serialize_strum_variant_names() {
40        assert_eq!("markdown", InputFormat::Markdown.as_ref());
41    }
42
43    #[test]
44    fn iterate_strum_variant_names() {
45        assert_eq!(["markdown"], InputFormat::VARIANTS);
46    }
47
48    #[test]
49    fn serialize_json() {
50        assert_eq!(
51            json!("markdown"),
52            serde_json::to_value(InputFormat::Markdown).unwrap()
53        );
54    }
55
56    #[test]
57    fn deserialize_json() {
58        assert_eq!(
59            InputFormat::Markdown,
60            serde_json::from_value(json!("markdown")).unwrap()
61        );
62    }
63}