use serde::Deserialize;
const DEFAULT_CHECK_TREE: bool = true;
const DEFAULT_CHECK_PUSH: bool = true;
#[derive(Debug, Deserialize, Default, Clone, PartialEq, Eq)]
pub struct GitConfig {
check_tree: Option<bool>,
check_push: Option<bool>,
}
impl GitConfig {
pub fn check_tree(&self) -> bool {
self.check_tree.unwrap_or(DEFAULT_CHECK_TREE)
}
pub fn check_push(&self) -> bool {
self.check_push.unwrap_or(DEFAULT_CHECK_PUSH)
}
}
#[cfg(test)]
mod tests {
use crate::config::{
git::{DEFAULT_CHECK_PUSH, DEFAULT_CHECK_TREE},
WorkflowsConfig,
};
#[test]
fn check_tree_works() {
let toml = "\
[git]\n\
check_tree = false";
let config: WorkflowsConfig = toml::from_str(toml).unwrap();
assert_eq!(config.git().check_tree, Some(false));
}
#[test]
fn default_check_tree_works() {
let toml = "[git]";
let config: WorkflowsConfig = toml::from_str(toml).unwrap();
assert_eq!(config.git.clone().unwrap().check_tree, None);
assert_eq!(config.git().check_tree(), DEFAULT_CHECK_TREE);
}
#[test]
fn check_push_works() {
let toml = "\
[git]\n\
check_push = false";
let config: WorkflowsConfig = toml::from_str(toml).unwrap();
assert_eq!(config.git().check_push, Some(false));
}
#[test]
fn default_check_push_works() {
let toml = "[git]";
let config: WorkflowsConfig = toml::from_str(toml).unwrap();
assert_eq!(config.git.clone().unwrap().check_push, None);
assert_eq!(config.git().check_push(), DEFAULT_CHECK_PUSH);
}
}