Coverage for tests / test_tutorial / test_commands / test_help / test_tutorial001.py: 100%

83 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-02-09 12:36 +0000

1import importlib 1abcdefgh

2import subprocess 1abcdefgh

3import sys 1abcdefgh

4from types import ModuleType 1abcdefgh

5 

6import pytest 1abcdefgh

7from typer.testing import CliRunner 1abcdefgh

8 

9runner = CliRunner() 1abcdefgh

10 

11 

12@pytest.fixture( 1abcdefgh

13 name="mod", 

14 params=[ 

15 pytest.param("tutorial001_py39"), 

16 pytest.param("tutorial001_an_py39"), 

17 ], 

18) 

19def get_mod(request: pytest.FixtureRequest) -> ModuleType: 1abcdefgh

20 module_name = f"docs_src.commands.help.{request.param}" 1abcdefgh

21 mod = importlib.import_module(module_name) 1abcdefgh

22 return mod 1abcdefgh

23 

24 

25def test_help(mod: ModuleType): 1abcdefgh

26 result = runner.invoke(mod.app, ["--help"]) 1abcdefgh

27 assert result.exit_code == 0 1abcdefgh

28 assert "Awesome CLI user manager." in result.output 1abcdefgh

29 assert "create" in result.output 1abcdefgh

30 assert "Create a new user with USERNAME." in result.output 1abcdefgh

31 assert "delete" in result.output 1abcdefgh

32 assert "Delete a user with USERNAME." in result.output 1abcdefgh

33 assert "delete-all" in result.output 1abcdefgh

34 assert "Delete ALL users in the database." in result.output 1abcdefgh

35 assert "init" in result.output 1abcdefgh

36 assert "Initialize the users database." in result.output 1abcdefgh

37 

38 

39def test_help_create(mod: ModuleType): 1abcdefgh

40 result = runner.invoke(mod.app, ["create", "--help"]) 1abcdefgh

41 assert result.exit_code == 0 1abcdefgh

42 assert "create [OPTIONS] USERNAME" in result.output 1abcdefgh

43 assert "Create a new user with USERNAME." in result.output 1abcdefgh

44 

45 

46def test_help_delete(mod: ModuleType): 1abcdefgh

47 result = runner.invoke(mod.app, ["delete", "--help"]) 1abcdefgh

48 assert result.exit_code == 0 1abcdefgh

49 assert "delete [OPTIONS] USERNAME" in result.output 1abcdefgh

50 assert "Delete a user with USERNAME." in result.output 1abcdefgh

51 assert "--force" in result.output 1abcdefgh

52 assert "--no-force" in result.output 1abcdefgh

53 assert "Force deletion without confirmation." in result.output 1abcdefgh

54 

55 

56def test_help_delete_all(mod: ModuleType): 1abcdefgh

57 result = runner.invoke(mod.app, ["delete-all", "--help"]) 1abcdefgh

58 assert result.exit_code == 0 1abcdefgh

59 assert "delete-all [OPTIONS]" in result.output 1abcdefgh

60 assert "Delete ALL users in the database." in result.output 1abcdefgh

61 assert "If --force is not used, will ask for confirmation." in result.output 1abcdefgh

62 assert "[required]" in result.output 1abcdefgh

63 assert "--force" in result.output 1abcdefgh

64 assert "--no-force" in result.output 1abcdefgh

65 assert "Force deletion without confirmation." in result.output 1abcdefgh

66 

67 

68def test_help_init(mod: ModuleType): 1abcdefgh

69 result = runner.invoke(mod.app, ["init", "--help"]) 1abcdefgh

70 assert result.exit_code == 0 1abcdefgh

71 assert "init [OPTIONS]" in result.output 1abcdefgh

72 assert "Initialize the users database." in result.output 1abcdefgh

73 

74 

75def test_create(mod: ModuleType): 1abcdefgh

76 result = runner.invoke(mod.app, ["create", "Camila"]) 1abcdefgh

77 assert result.exit_code == 0 1abcdefgh

78 assert "Creating user: Camila" in result.output 1abcdefgh

79 

80 

81def test_delete(mod: ModuleType): 1abcdefgh

82 result = runner.invoke(mod.app, ["delete", "Camila"], input="y\n") 1abcdefgh

83 assert result.exit_code == 0 1abcdefgh

84 assert "Are you sure you want to delete the user? [y/n]:" in result.output 1abcdefgh

85 assert "Deleting user: Camila" in result.output 1abcdefgh

86 

87 

88def test_no_delete(mod: ModuleType): 1abcdefgh

89 result = runner.invoke(mod.app, ["delete", "Camila"], input="n\n") 1abcdefgh

90 assert result.exit_code == 0 1abcdefgh

91 assert "Are you sure you want to delete the user? [y/n]:" in result.output 1abcdefgh

92 assert "Operation cancelled" in result.output 1abcdefgh

93 

94 

95def test_delete_all(mod: ModuleType): 1abcdefgh

96 result = runner.invoke(mod.app, ["delete-all"], input="y\n") 1abcdefgh

97 assert result.exit_code == 0 1abcdefgh

98 assert "Are you sure you want to delete ALL users? [y/n]:" in result.output 1abcdefgh

99 assert "Deleting all users" in result.output 1abcdefgh

100 

101 

102def test_no_delete_all(mod: ModuleType): 1abcdefgh

103 result = runner.invoke(mod.app, ["delete-all"], input="n\n") 1abcdefgh

104 assert result.exit_code == 0 1abcdefgh

105 assert "Are you sure you want to delete ALL users? [y/n]:" in result.output 1abcdefgh

106 assert "Operation cancelled" in result.output 1abcdefgh

107 

108 

109def test_init(mod: ModuleType): 1abcdefgh

110 result = runner.invoke(mod.app, ["init"]) 1abcdefgh

111 assert result.exit_code == 0 1abcdefgh

112 assert "Initializing user database" in result.output 1abcdefgh

113 

114 

115def test_script(mod: ModuleType): 1abcdefgh

116 result = subprocess.run( 1abcdefgh

117 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"], 

118 capture_output=True, 

119 encoding="utf-8", 

120 ) 

121 assert "Usage" in result.stdout 1abcdefgh