|
| 1 | +from typing import List |
| 2 | + |
| 3 | +import pytest |
| 4 | + |
| 5 | +from gitea_github_sync.migration import list_missing_github_repos |
| 6 | +from gitea_github_sync.repository import Repository, Visibility |
| 7 | + |
| 8 | + |
| 9 | +def r(org_name: str, repo_name: str) -> Repository: |
| 10 | + return Repository(full_repo_name=f"{org_name}/{repo_name}", visibility=Visibility.PUBLIC) |
| 11 | + |
| 12 | + |
| 13 | +def team_a_repo(repo_name: str) -> Repository: |
| 14 | + return r(org_name="team-a", repo_name=repo_name) |
| 15 | + |
| 16 | + |
| 17 | +def team_b_repo(repo_name: str) -> Repository: |
| 18 | + return r(org_name="team-b", repo_name=repo_name) |
| 19 | + |
| 20 | + |
| 21 | +@pytest.mark.parametrize( |
| 22 | + "gh_repos, gt_repos, expected_diff", |
| 23 | + [ |
| 24 | + pytest.param( |
| 25 | + [team_a_repo("a-repo"), team_a_repo("b-repo")], |
| 26 | + [team_b_repo("a-repo"), team_b_repo("b-repo")], |
| 27 | + [], |
| 28 | + id="equal", |
| 29 | + ), |
| 30 | + pytest.param( |
| 31 | + [team_a_repo("a-repo"), team_a_repo("b-repo")], |
| 32 | + [team_b_repo("a-repo")], |
| 33 | + [team_a_repo("b-repo")], |
| 34 | + id="missing-repo-on-gitea", |
| 35 | + ), |
| 36 | + pytest.param( |
| 37 | + [team_a_repo("a-repo"), team_a_repo("b-repo")], |
| 38 | + [team_b_repo("a-repo"), team_b_repo("b-repo"), team_b_repo("c-repo")], |
| 39 | + [], |
| 40 | + id="too-many-repos-on-gitea", |
| 41 | + ), |
| 42 | + ], |
| 43 | +) |
| 44 | +def test_list_missing_github_repos( |
| 45 | + gh_repos: List[Repository], gt_repos: List[Repository], expected_diff: List[Repository] |
| 46 | +) -> None: |
| 47 | + result = list_missing_github_repos(gh_repos=gh_repos, gitea_repos=gt_repos) |
| 48 | + |
| 49 | + assert result == expected_diff |
0 commit comments