use hoc::count::count_repositories;

use tempfile::TempDir;

#[test]
fn no_repos() {
    let repos = TempDir::new().unwrap();
    assert_eq!(0, count_repositories(&repos).unwrap())
}

#[test]
fn no_repos_for_provider() {
    let repos = TempDir::new().unwrap();
    let _provider = TempDir::new_in(&repos).unwrap();
    assert_eq!(0, count_repositories(&repos).unwrap())
}

#[test]
fn no_repos_for_owner() {
    let repos = TempDir::new().unwrap();
    let provider = TempDir::new_in(&repos).unwrap();
    let _owner = TempDir::new_in(&provider).unwrap();
    assert_eq!(0, count_repositories(&repos).unwrap())
}

#[test]
fn one_repo_for_owner() {
    let repos = TempDir::new().unwrap();
    let provider = TempDir::new_in(&repos).unwrap();
    let owner = TempDir::new_in(&provider).unwrap();
    let _repo = TempDir::new_in(&owner).unwrap();
    assert_eq!(1, count_repositories(&repos).unwrap())
}

#[test]
fn two_repos_for_owner() {
    let repos = TempDir::new().unwrap();
    let provider = TempDir::new_in(&repos).unwrap();
    let owner = TempDir::new_in(&provider).unwrap();
    let _repo1 = TempDir::new_in(&owner).unwrap();
    let _repo2 = TempDir::new_in(&owner).unwrap();
    assert_eq!(2, count_repositories(&repos).unwrap())
}

#[test]
fn two_repos_for_two_providers() {
    let repos = TempDir::new().unwrap();
    let provider1 = TempDir::new_in(&repos).unwrap();
    let owner1 = TempDir::new_in(&provider1).unwrap();
    let _repo1 = TempDir::new_in(&owner1).unwrap();
    let provider2 = TempDir::new_in(&repos).unwrap();
    let owner2 = TempDir::new_in(&provider2).unwrap();
    let _repo2 = TempDir::new_in(&owner2).unwrap();
    assert_eq!(2, count_repositories(&repos).unwrap())
}

#[test]
fn two_subdirs_in_one_repo() {
    let repos = TempDir::new().unwrap();
    let provider = TempDir::new_in(&repos).unwrap();
    let owner = TempDir::new_in(&provider).unwrap();
    let repo = TempDir::new_in(&owner).unwrap();
    let _subdir1 = TempDir::new_in(&repo).unwrap();
    let _subdir2 = TempDir::new_in(&repo).unwrap();
    assert_eq!(1, count_repositories(&repos).unwrap())
}