11import getpass
2+ from unittest .mock import call
3+
24import pytest
35from typer .testing import CliRunner
46
57from cli .website import app
68
9+
710runner = CliRunner ()
811
12+
913@pytest .fixture
1014def domain_name ():
1115 return "foo.bar.com"
@@ -22,6 +26,11 @@ def website_info(domain_name, command):
2226 "domain_name" : domain_name ,
2327 "enabled" : True ,
2428 "id" : 42 ,
29+ "logfiles" : {
30+ "access" : f"/var/log/{ domain_name } .access.log" ,
31+ "error" : f"/var/log/{ domain_name } .error.log" ,
32+ "server" : f"/var/log/{ domain_name } .server.log" ,
33+ },
2534 "user" : getpass .getuser (),
2635 "webapp" : {
2736 "command" : command ,
@@ -107,18 +116,35 @@ def test_get_with_no_domain_lists_websites(mocker, website_info):
107116 assert "foo.bar.com" in result .stdout
108117
109118
110- def test_get_with_domain_gives_details_for_domain ():
119+ def test_get_with_domain_gives_details_for_domain (mocker , website_info , domain_name ):
120+ mock_website = mocker .patch ("cli.website.Website" )
121+ mock_website .return_value .get .return_value = website_info
122+ mock_tabulate = mocker .patch ("cli.website.tabulate" )
123+ mock_echo = mocker .patch ("cli.website.typer.echo" )
124+
111125 result = runner .invoke (
112126 app ,
113127 [
114128 "get" ,
115129 "-d" ,
116- "www.domain.com" ,
130+ domain_name
117131 ],
118132 )
119- print ( result . stdout )
133+
120134 assert result .exit_code == 0
121- assert False , "TODO"
135+ mock_website .return_value .get .assert_called_once_with (domain_name = domain_name )
136+ assert mock_tabulate .call_args == call (
137+ [
138+ ["domain name" , website_info ["domain_name" ]],
139+ ["enabled" , website_info ["enabled" ]],
140+ ["command" , website_info ["webapp" ]["command" ]],
141+ ["access log" , website_info ["logfiles" ]["access" ]],
142+ ["error log" , website_info ["logfiles" ]["error" ]],
143+ ["server log" , website_info ["logfiles" ]["server" ]],
144+ ],
145+ tablefmt = "simple" ,
146+ )
147+ mock_echo .assert_called_once_with (mock_tabulate .return_value )
122148
123149
124150def test_reload_with_no_domain_barfs ():
@@ -167,4 +193,3 @@ def test_delete_with_domain_deletes_it():
167193 )
168194 assert result .exit_code == 0
169195 assert False , "TODO"
170-
0 commit comments