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-03-26 21:46 +0000

1import importlib 1abcdefg

2import subprocess 1abcdefg

3import sys 1abcdefg

4from types import ModuleType 1abcdefg

5 

6import pytest 1abcdefg

7from typer.testing import CliRunner 1abcdefg

8 

9runner = CliRunner() 1abcdefg

10 

11 

12@pytest.fixture( 1abcdefg

13 name="mod", 

14 params=[ 

15 pytest.param("tutorial001_py310"), 

16 pytest.param("tutorial001_an_py310"), 

17 ], 

18) 

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

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

21 mod = importlib.import_module(module_name) 1abcdefg

22 return mod 1abcdefg

23 

24 

25def test_help(mod: ModuleType): 1abcdefg

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

27 assert result.exit_code == 0 1abcdefg

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

29 assert "create" in result.output 1abcdefg

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

31 assert "delete" in result.output 1abcdefg

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

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

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

35 assert "init" in result.output 1abcdefg

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

37 

38 

39def test_help_create(mod: ModuleType): 1abcdefg

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

41 assert result.exit_code == 0 1abcdefg

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

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

44 

45 

46def test_help_delete(mod: ModuleType): 1abcdefg

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

48 assert result.exit_code == 0 1abcdefg

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

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

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

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

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

54 

55 

56def test_help_delete_all(mod: ModuleType): 1abcdefg

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

58 assert result.exit_code == 0 1abcdefg

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

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

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

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

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

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

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

66 

67 

68def test_help_init(mod: ModuleType): 1abcdefg

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

70 assert result.exit_code == 0 1abcdefg

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

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

73 

74 

75def test_create(mod: ModuleType): 1abcdefg

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

77 assert result.exit_code == 0 1abcdefg

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

79 

80 

81def test_delete(mod: ModuleType): 1abcdefg

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

83 assert result.exit_code == 0 1abcdefg

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

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

86 

87 

88def test_no_delete(mod: ModuleType): 1abcdefg

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

90 assert result.exit_code == 0 1abcdefg

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

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

93 

94 

95def test_delete_all(mod: ModuleType): 1abcdefg

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

97 assert result.exit_code == 0 1abcdefg

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

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

100 

101 

102def test_no_delete_all(mod: ModuleType): 1abcdefg

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

104 assert result.exit_code == 0 1abcdefg

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

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

107 

108 

109def test_init(mod: ModuleType): 1abcdefg

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

111 assert result.exit_code == 0 1abcdefg

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

113 

114 

115def test_script(mod: ModuleType): 1abcdefg

116 result = subprocess.run( 1abcdefg

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

118 capture_output=True, 

119 encoding="utf-8", 

120 ) 

121 assert "Usage" in result.stdout 1abcdefg