33This ensures that all the dependencies actually load too.
44"""
55
6- from unittest .mock import patch
6+ from unittest .mock import Mock , patch
77
88from 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