11import textwrap
2+ from io import StringIO
23from typing import List
34from unittest .mock import MagicMock , patch
45
56import pytest
67from click .testing import CliRunner
78
8- from gitea_github_sync .cli import cli
9+ from gitea_github_sync .cli import cli , print_repositories
910from gitea_github_sync .repository import Repository , Visibility
1011
1112
@@ -18,38 +19,47 @@ def repositories_fixture() -> List[Repository]:
1819 ]
1920
2021
22+ @pytest .mark .parametrize ("expected_stat" , [True , False ])
23+ @patch ("gitea_github_sync.cli.print_repositories" , autospec = True )
2124@patch ("gitea_github_sync.cli.github.get_github" , autospec = True )
2225@patch ("gitea_github_sync.cli.github.list_all_repositories" , autospec = True )
23- def test_list_all_repositories (
26+ def test_list_all_github_repositories_with_stats (
2427 mock_list_all_repositories : MagicMock ,
2528 mock_get_github : MagicMock ,
29+ mock_print_repositories : MagicMock ,
30+ expected_stat : bool ,
2631 repositories_fixture : List [Repository ],
2732) -> None :
2833 mock_github = MagicMock ()
2934 mock_get_github .return_value = mock_github
3035 mock_list_all_repositories .return_value = repositories_fixture
3136
3237 runner = CliRunner ()
33- result = runner .invoke (cli , ["list-all-repositories" ])
38+ command = (
39+ ["list-all-github-repositories" , "--stats" ]
40+ if expected_stat
41+ else ["list-all-github-repositories" ]
42+ )
43+ result = runner .invoke (cli , command )
3444
35- assert result .output == "some-team/a-repo\n some-team/b-repo\n some-team/c-repo\n "
3645 assert result .exit_code == 0
46+ mock_print_repositories .assert_called_once_with (repositories_fixture , expected_stat )
3747
3848
39- @patch ("gitea_github_sync.cli.github.get_github" , autospec = True )
40- @patch ("gitea_github_sync.cli.github.list_all_repositories" , autospec = True )
41- def test_list_all_repositories_with_stats (
42- mock_list_all_repositories : MagicMock ,
43- mock_get_github : MagicMock ,
49+ @patch ("sys.stdout" , new_callable = StringIO )
50+ def test_print_repositories_without_stats (
51+ stdout : StringIO ,
4452 repositories_fixture : List [Repository ],
4553) -> None :
46- mock_github = MagicMock ()
47- mock_get_github .return_value = mock_github
48- mock_list_all_repositories .return_value = repositories_fixture
4954
50- runner = CliRunner ( )
51- result = runner . invoke ( cli , [ "list-all-repositories" , "--stats" ])
55+ print_repositories ( repositories_fixture , False )
56+ assert stdout . getvalue () == "some-team/a-repo \n some-team/b-repo \n some-team/c-repo \n "
5257
58+
59+ @patch ("sys.stdout" , new_callable = StringIO )
60+ def test_print_repositories (stdout : StringIO , repositories_fixture : List [Repository ]) -> None :
61+
62+ print_repositories (repositories_fixture , True )
5363 expected_result = textwrap .dedent (
5464 """\
5565 some-team/a-repo
@@ -64,5 +74,4 @@ def test_list_all_repositories_with_stats(
6474 """
6575 )
6676
67- assert result .output == expected_result
68- assert result .exit_code == 0
77+ assert stdout .getvalue () == expected_result
0 commit comments