mod blog_status; mod configuration_status; use crate::configuration::Configuration; use std::io::Result; pub struct Status; impl Status { pub fn new() -> Self { Status } } impl super::Command for Status { fn before_dependencies(&self) -> Vec> { vec![] } fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &str) -> Result<()> { let status_providers = available_status_providers(); for status_provider in status_providers { println!("{}\n----\n", status_provider(configuration)?); } Ok(()) } fn after_dependencies(&self) -> Vec> { vec![] } fn command(&self) -> &'static str { "status" } fn help(&self) -> &'static str { "\t\t\t\tPrints the status of your blog" } } fn available_status_providers() -> Vec Result> { vec![configuration_status::status, blog_status::status] } #[cfg(test)] mod tests { use super::*; use crate::command::Command; use crate::configuration::Configuration; #[test] fn test_status_command() { let status = Status::new(); let configuration = Configuration::new().unwrap(); status .execute(None, &configuration, "") .expect("Could not call status"); } #[test] fn status_before_dependencies() { let status = Status::new(); let dependencies = status.before_dependencies(); assert_eq!(dependencies.len(), 0); } #[test] fn status_after_dependencies() { let status = Status::new(); let dependencies = status.after_dependencies(); assert_eq!(dependencies.len(), 0); } // These two tests feel pointless but I'm doing it for the coverage :p #[test] fn status_command_output() { let status = Status::new(); status.command(); } #[test] fn status_help_output() { let status = Status::new(); status.help(); } }