Skip to content

Commit 89db679

Browse files
beaufourclaude
andcommitted
test: add CLI integration tests for main function
- Test -d flag calls download_set with correct set ID - Test -l flag calls print_sets with username - Test -i flag calls download_photo with correct photo ID - Test _init failure returns exit code 1 Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent dfc8216 commit 89db679

File tree

1 file changed

+67
-1
lines changed

1 file changed

+67
-1
lines changed

tests/test_main.py

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
This ensures that all the dependencies actually load too.
44
"""
55

6-
from unittest.mock import patch
6+
from unittest.mock import Mock, patch
77

88
from flickr_download.flick_download import main
99

@@ -30,3 +30,69 @@ def test_main_list_naming() -> None:
3030
with patch("sys.argv", ["flickr_download", "--list_naming"]):
3131
result = main()
3232
assert result == 1
33+
34+
35+
@patch("flickr_download.flick_download._init")
36+
@patch("flickr_download.flick_download.download_set")
37+
def test_main_download_set(mock_download: Mock, mock_init: Mock) -> None:
38+
"""Main with -d downloads a set."""
39+
mock_init.return_value = True
40+
41+
with (
42+
patch("sys.argv", ["flickr_download", "-k", "key", "-s", "secret", "-d", "12345"]),
43+
patch("flickr_download.flick_download._load_defaults", return_value={}),
44+
):
45+
result = main()
46+
47+
assert result == 0
48+
mock_download.assert_called_once()
49+
call_args = mock_download.call_args
50+
assert call_args[0][0] == "12345" # set_id
51+
52+
53+
@patch("flickr_download.flick_download._init")
54+
@patch("flickr_download.flick_download.print_sets")
55+
def test_main_list_sets(mock_print: Mock, mock_init: Mock) -> None:
56+
"""Main with -l lists sets for user."""
57+
mock_init.return_value = True
58+
59+
with (
60+
patch("sys.argv", ["flickr_download", "-k", "key", "-s", "secret", "-l", "testuser"]),
61+
patch("flickr_download.flick_download._load_defaults", return_value={}),
62+
):
63+
result = main()
64+
65+
assert result == 0
66+
mock_print.assert_called_once_with("testuser")
67+
68+
69+
@patch("flickr_download.flick_download._init")
70+
@patch("flickr_download.flick_download.download_photo")
71+
def test_main_download_photo(mock_download: Mock, mock_init: Mock) -> None:
72+
"""Main with -i downloads a single photo."""
73+
mock_init.return_value = True
74+
75+
with (
76+
patch("sys.argv", ["flickr_download", "-k", "key", "-s", "secret", "-i", "99999"]),
77+
patch("flickr_download.flick_download._load_defaults", return_value={}),
78+
):
79+
result = main()
80+
81+
assert result == 0
82+
mock_download.assert_called_once()
83+
call_args = mock_download.call_args
84+
assert call_args[0][0] == "99999" # photo_id
85+
86+
87+
@patch("flickr_download.flick_download._init")
88+
def test_main_init_failure(mock_init: Mock) -> None:
89+
"""Main returns 1 when _init fails."""
90+
mock_init.return_value = False
91+
92+
with (
93+
patch("sys.argv", ["flickr_download", "-k", "key", "-s", "secret", "-d", "12345"]),
94+
patch("flickr_download.flick_download._load_defaults", return_value={}),
95+
):
96+
result = main()
97+
98+
assert result == 1

0 commit comments

Comments
 (0)