use crate::configuration::Configuration; use crate::remote::remove; use std::io::Result; pub struct RemoveRemote; impl RemoveRemote { pub fn new() -> Self { RemoveRemote } } impl super::Command for RemoveRemote { fn before_dependencies(&self) -> Vec> { vec![] } fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &str) -> Result<()> { remove(&configuration.remote_config) } fn after_dependencies(&self) -> Vec> { vec![] } fn command(&self) -> &'static str { "remove-remote" } fn help(&self) -> &'static str { "\t\t\tRemoves the git remote" } } #[cfg(test)] mod tests { use super::*; use crate::command::Command; use crate::configuration::Configuration; use test_utilities::*; #[test] fn test_remove_remote_command() { let remove_remote = RemoveRemote::new(); // Create all directories let test_dir = setup_test_dir(); let remote_config = test_dir.join("blogremote"); create_test_file(&remote_config, "boop"); assert!(remote_config.exists()); let mut configuration = Configuration::new(); configuration.remote_config = remote_config.clone(); remove_remote .execute(None, &configuration, "") .expect("Could not call remove_remote"); assert!(!remote_config.exists()); cleanup_test_dir(&test_dir); } #[test] fn remove_remote_before_dependencies() { let remove_remote = RemoveRemote::new(); let dependencies = remove_remote.before_dependencies(); assert_eq!(dependencies.len(), 0); } #[test] fn remove_remote_after_dependencies() { let remove_remote = RemoveRemote::new(); let dependencies = remove_remote.after_dependencies(); assert_eq!(dependencies.len(), 0); } // These two tests feel pointless but I'm doing it for the coverage :p #[test] fn remove_remote_command_output() { let remove_remote = RemoveRemote::new(); remove_remote.command(); } #[test] fn remove_remote_help_output() { let remove_remote = RemoveRemote::new(); remove_remote.help(); } }