Coverage for tests/test_tutorial/test_subcommands/test_tutorial001.py: 100%

66 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-04-14 00:18 +0000

1import os 1iabcdefgh

2import subprocess 1iabcdefgh

3import sys 1iabcdefgh

4 

5import pytest 1iabcdefgh

6from typer.testing import CliRunner 1iabcdefgh

7 

8from docs_src.subcommands import tutorial001 1iabcdefgh

9 

10runner = CliRunner() 1iabcdefgh

11 

12 

13@pytest.fixture() 1iabcdefgh

14def mod(monkeypatch): 1abcdefgh

15 with monkeypatch.context(): 1iabcdefgh

16 monkeypatch.syspath_prepend(list(tutorial001.__path__)[0]) 1iabcdefgh

17 from docs_src.subcommands.tutorial001 import main 1iabcdefgh

18 

19 return main 1iabcdefgh

20 

21 

22@pytest.fixture() 1iabcdefgh

23def app(mod): 1abcdefgh

24 return mod.app 1iabcdefgh

25 

26 

27def test_help(app): 1iabcdefgh

28 result = runner.invoke(app, ["--help"]) 1iabcdefgh

29 assert result.exit_code == 0 1iabcdefgh

30 assert "[OPTIONS] COMMAND [ARGS]..." in result.output 1iabcdefgh

31 assert "Commands" in result.output 1iabcdefgh

32 assert "items" in result.output 1iabcdefgh

33 assert "users" in result.output 1iabcdefgh

34 

35 

36def test_help_items(app): 1iabcdefgh

37 result = runner.invoke(app, ["items", "--help"]) 1iabcdefgh

38 assert result.exit_code == 0 1iabcdefgh

39 assert "[OPTIONS] COMMAND [ARGS]..." in result.output 1iabcdefgh

40 assert "Commands" in result.output 1iabcdefgh

41 assert "create" in result.output 1iabcdefgh

42 assert "delete" in result.output 1iabcdefgh

43 assert "sell" in result.output 1iabcdefgh

44 

45 

46def test_items_create(app): 1iabcdefgh

47 result = runner.invoke(app, ["items", "create", "Wand"]) 1iabcdefgh

48 assert result.exit_code == 0 1iabcdefgh

49 assert "Creating item: Wand" in result.output 1iabcdefgh

50 

51 

52def test_items_sell(app): 1iabcdefgh

53 result = runner.invoke(app, ["items", "sell", "Vase"]) 1iabcdefgh

54 assert result.exit_code == 0 1iabcdefgh

55 assert "Selling item: Vase" in result.output 1iabcdefgh

56 

57 

58def test_items_delete(app): 1iabcdefgh

59 result = runner.invoke(app, ["items", "delete", "Vase"]) 1iabcdefgh

60 assert result.exit_code == 0 1iabcdefgh

61 assert "Deleting item: Vase" in result.output 1iabcdefgh

62 

63 

64def test_help_users(app): 1iabcdefgh

65 result = runner.invoke(app, ["users", "--help"]) 1iabcdefgh

66 assert result.exit_code == 0 1iabcdefgh

67 assert "[OPTIONS] COMMAND [ARGS]..." in result.output 1iabcdefgh

68 assert "Commands" in result.output 1iabcdefgh

69 assert "create" in result.output 1iabcdefgh

70 assert "delete" in result.output 1iabcdefgh

71 assert "sell" not in result.output 1iabcdefgh

72 

73 

74def test_users_create(app): 1iabcdefgh

75 result = runner.invoke(app, ["users", "create", "Camila"]) 1iabcdefgh

76 assert result.exit_code == 0 1iabcdefgh

77 assert "Creating user: Camila" in result.output 1iabcdefgh

78 

79 

80def test_users_delete(app): 1iabcdefgh

81 result = runner.invoke(app, ["users", "delete", "Camila"]) 1iabcdefgh

82 assert result.exit_code == 0 1iabcdefgh

83 assert "Deleting user: Camila" in result.output 1iabcdefgh

84 

85 

86def test_scripts(mod): 1iabcdefgh

87 from docs_src.subcommands.tutorial001 import items, users 1iabcdefgh

88 

89 env = os.environ.copy() 1iabcdefgh

90 env["PYTHONPATH"] = ":".join(list(tutorial001.__path__)) 1iabcdefgh

91 

92 for module in [mod, items, users]: 1iabcdefgh

93 result = subprocess.run( 1iabcdefgh

94 [sys.executable, "-m", "coverage", "run", module.__file__, "--help"], 

95 capture_output=True, 

96 encoding="utf-8", 

97 env=env, 

98 ) 

99 assert "Usage" in result.stdout 1iabcdefgh