use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CitationsConfig {
pub enabled: bool,
}
impl CitationsConfig {
pub fn new(enabled: bool) -> Self {
Self { enabled }
}
pub fn enabled() -> Self {
Self::new(true)
}
pub fn disabled() -> Self {
Self::new(false)
}
}
impl Default for CitationsConfig {
fn default() -> Self {
Self::disabled()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_serialization_enabled() {
let config = CitationsConfig::enabled();
let json = serde_json::to_string(&config).unwrap();
assert_eq!(json, r#"{"enabled":true}"#);
}
#[test]
fn test_serialization_disabled() {
let config = CitationsConfig::disabled();
let json = serde_json::to_string(&config).unwrap();
assert_eq!(json, r#"{"enabled":false}"#);
}
#[test]
fn test_deserialization() {
let json = r#"{"enabled":true}"#;
let config: CitationsConfig = serde_json::from_str(json).unwrap();
assert!(config.enabled);
let json = r#"{"enabled":false}"#;
let config: CitationsConfig = serde_json::from_str(json).unwrap();
assert!(!config.enabled);
}
}