33import os
44import shutil
55from vcr import VCR
6+ import pytest
67from click .testing import CliRunner
78from icloudpd .base import main
89
910vcr = VCR (decode_compressed_response = True )
1011
1112
1213class CliTestCase (TestCase ):
14+ @pytest .fixture (autouse = True )
15+ def inject_fixtures (self , caplog ):
16+ self ._caplog = caplog
17+
1318 def test_cli (self ):
1419 runner = CliRunner ()
1520 result = runner .invoke (main , ["--help" ])
@@ -18,43 +23,38 @@ def test_cli(self):
1823 def test_log_levels (self ):
1924 if not os .path .exists ("tests/fixtures/Photos" ):
2025 os .makedirs ("tests/fixtures/Photos" )
21- with vcr .use_cassette ("tests/vcr_cassettes/listing_photos.yml" ):
22- # Pass fixed client ID via environment variable
23- os .environ ["CLIENT_ID" ] = "DE309E26-942E-11E8-92F5-14109FE0B321"
24- runner = CliRunner ()
25- result = runner .invoke (
26- main ,
27- [
28- "--username" ,
29- "jdoe@gmail.com" ,
30- "--password" ,
31- "password1" ,
32- "--recent" ,
33- "0" ,
34- "--log-level" ,
35- "info" ,
36- "-d"
37- "tests/fixtures/Photos" ,
38- ],
39- )
40- assert result .exit_code == 0
41- with vcr .use_cassette ("tests/vcr_cassettes/listing_photos.yml" ):
42- result = runner .invoke (
43- main ,
44- [
45- "--username" ,
46- "jdoe@gmail.com" ,
47- "--password" ,
48- "password1" ,
49- "--recent" ,
50- "0" ,
51- "--log-level" ,
52- "error" ,
53- "-d" ,
54- "tests/fixtures/Photos" ,
55- ],
56- )
57- assert result .exit_code == 0
26+
27+ parameters = [
28+ ("debug" , ["DEBUG" , "INFO" ], []),
29+ ("info" , ["INFO" ], ["DEBUG" ]),
30+ ("error" , [], ["DEBUG" , "INFO" ]),
31+ ]
32+ for log_level , expected , not_expected in parameters :
33+ self ._caplog .clear ()
34+ with vcr .use_cassette ("tests/vcr_cassettes/listing_photos.yml" ):
35+ # Pass fixed client ID via environment variable
36+ os .environ ["CLIENT_ID" ] = "DE309E26-942E-11E8-92F5-14109FE0B321"
37+ runner = CliRunner ()
38+ result = runner .invoke (
39+ main ,
40+ [
41+ "--username" ,
42+ "jdoe@gmail.com" ,
43+ "--password" ,
44+ "password1" ,
45+ "--recent" ,
46+ "0" ,
47+ "--log-level" ,
48+ log_level ,
49+ "-d"
50+ "tests/fixtures/Photos" ,
51+ ],
52+ )
53+ assert result .exit_code == 0
54+ for text in expected :
55+ self .assertIn (text , self ._caplog .text )
56+ for text in not_expected :
57+ self .assertNotIn (text , self ._caplog .text )
5858
5959 def test_tqdm (self ):
6060 if not os .path .exists ("tests/fixtures/Photos" ):
0 commit comments