use super::*;
use git::{repository::Direction, tests::given, validation::remotes::validate_default_remotes};
#[test]
fn should_ok_a_valid_repo() {
let fs = given::a_filesystem();
let repo_details = given::repo_details(&fs);
let repo_details_mock = repo_details.clone();
let mut open_repository = git::repository::open::mock();
open_repository
.expect_find_default_remote()
.returning(move |_direction| repo_details_mock.remote_url());
let result = validate_default_remotes(&*open_repository, &repo_details);
println!("{result:?}");
assert!(result.is_ok());
}
#[test]
fn should_fail_where_no_default_push_remote() {
let fs = given::a_filesystem();
let repo_details = given::repo_details(&fs);
let repo_details_mock = repo_details.clone();
let mut open_repository = git::repository::open::mock();
open_repository
.expect_find_default_remote()
.returning(move |direction| match direction {
Direction::Push => None,
Direction::Fetch => repo_details_mock.remote_url(),
});
let result = validate_default_remotes(&*open_repository, &repo_details);
println!("{result:?}");
assert!(result.is_err());
}
#[test]
fn should_fail_where_no_default_fetch_remote() {
let fs = given::a_filesystem();
let repo_details = given::repo_details(&fs);
let repo_details_mock = repo_details.clone();
let mut open_repository = git::repository::open::mock();
open_repository
.expect_find_default_remote()
.returning(move |direction| match direction {
Direction::Push => repo_details_mock.remote_url(),
Direction::Fetch => None,
});
let result = validate_default_remotes(&*open_repository, &repo_details);
println!("{result:?}");
assert!(result.is_err());
}
#[test]
fn should_fail_where_invalid_default_push_remote() {
let fs = given::a_filesystem();
let repo_details = given::repo_details(&fs);
let repo_details_mock = repo_details.clone();
let mut open_repository = git::repository::open::mock();
open_repository
.expect_find_default_remote()
.returning(move |direction| match direction {
Direction::Push => Some(given::a_remote_url()),
Direction::Fetch => repo_details_mock.remote_url(),
});
let result = validate_default_remotes(&*open_repository, &repo_details);
println!("{result:?}");
assert!(result.is_err());
}
#[test]
fn should_fail_where_invalid_default_fetch_remote() {
let fs = given::a_filesystem();
let repo_details = given::repo_details(&fs);
let repo_details_mock = repo_details.clone();
let mut open_repository = git::repository::open::mock();
open_repository
.expect_find_default_remote()
.returning(move |direction| match direction {
Direction::Push => repo_details_mock.remote_url(),
Direction::Fetch => Some(given::a_remote_url()),
});
let result = validate_default_remotes(&*open_repository, &repo_details);
println!("{result:?}");
assert!(result.is_err());
}