From ddf02376c3ccc7867ed4a3c84871a8ce914f1d37 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Thu, 23 Jun 2022 23:15:32 +0100 Subject: [PATCH] test: Add tests for 'get_git_url' --- src/lib.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 9a80e1a..fd7169f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -434,7 +434,7 @@ mod lib_tests { } #[test] - fn is_not_branch() { + fn is_not_branch1() { let handler = handler_without_remote(); let mock = MockGitTrait::default(); @@ -618,6 +618,71 @@ mod lib_tests { } } + mod get_git_url { + use crate::{ + git::{GitOutput, MockGitTrait}, + GitView, error::{AppError, ErrorType}, + }; + + fn handler<'a>() -> GitView<'a> { + GitView::new(None, None, None, false, false) + } + + #[test] + fn is_valid_remote() { + let handler = handler(); + let expected_remote = "origin"; + let mut mock = MockGitTrait::default(); + + mock.expect_is_valid_remote() + .returning(|_| Ok(GitOutput::Ok("https://github.com/sgoudham/git-view".into()))); + + let actual_remote = handler.get_git_url(expected_remote, &mock); + + assert!(actual_remote.is_ok()); + assert_eq!( + actual_remote.unwrap(), + "https://github.com/sgoudham/git-view" + ) + } + + #[test] + fn is_not_valid_remote() { + let handler = handler(); + let expected_remote = "origin"; + let mut mock = MockGitTrait::default(); + + mock.expect_is_valid_remote() + .returning(|_| Ok(GitOutput::Ok("origin".into()))); + + let actual_remote = handler.get_git_url(expected_remote, &mock); + + assert!(actual_remote.is_err()); + assert_eq!( + actual_remote.unwrap_err().error_str, + "Looks like your git remote isn't set for 'origin'" + ); + } + + #[test] + fn command_failed() { + let handler = handler(); + let expected_remote = "origin"; + let mut mock = MockGitTrait::default(); + + mock.expect_is_valid_remote() + .returning(|_| Err(AppError::new(ErrorType::CommandFailed, "error".into()))); + + let actual_remote = handler.get_git_url(expected_remote, &mock); + + assert!(actual_remote.is_err()); + assert_eq!( + actual_remote.unwrap_err().error_str, + "error" + ); + } + } + mod parse_git_url { use crate::{error::AppError, lib_tests::instantiate_handler}; use test_case::test_case;