✅ Add tests for Commands
This commit is contained in:
parent
0ece3b9772
commit
6e7d6df51c
7 changed files with 330 additions and 0 deletions
0
tests/test_tutorial/test_commands/__init__.py
Normal file
0
tests/test_tutorial/test_commands/__init__.py
Normal file
30
tests/test_tutorial/test_commands/test_tutorial001.py
Normal file
30
tests/test_tutorial/test_commands/test_tutorial001.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
import subprocess
|
||||
from commands import tutorial001 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_no_arg():
|
||||
result = runner.invoke(app)
|
||||
assert result.exit_code != 0
|
||||
assert 'Error: Missing argument "NAME".' in result.output
|
||||
|
||||
|
||||
def test_arg():
|
||||
result = runner.invoke(app, ["Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Hello Camila" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
39
tests/test_tutorial/test_commands/test_tutorial002.py
Normal file
39
tests/test_tutorial/test_commands/test_tutorial002.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
import subprocess
|
||||
from commands import tutorial002 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_help():
|
||||
result = runner.invoke(app, ["--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "[OPTIONS] COMMAND [ARGS]..." in result.output
|
||||
assert "Commands:" in result.output
|
||||
assert "create" in result.output
|
||||
assert "delete" in result.output
|
||||
|
||||
|
||||
def test_create():
|
||||
result = runner.invoke(app, ["create"])
|
||||
assert result.exit_code == 0
|
||||
assert "Creating user: Hiro Hamada" in result.output
|
||||
|
||||
|
||||
def test_delete():
|
||||
result = runner.invoke(app, ["delete"])
|
||||
assert result.exit_code == 0
|
||||
assert "Deleting user: Hiro Hamada" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
42
tests/test_tutorial/test_commands/test_tutorial003.py
Normal file
42
tests/test_tutorial/test_commands/test_tutorial003.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
import subprocess
|
||||
from commands import tutorial003 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_help_create():
|
||||
result = runner.invoke(app, ["create", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "create [OPTIONS] USERNAME" in result.output
|
||||
|
||||
|
||||
def test_help_delete():
|
||||
result = runner.invoke(app, ["delete", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "delete [OPTIONS] USERNAME" in result.output
|
||||
|
||||
|
||||
def test_create():
|
||||
result = runner.invoke(app, ["create", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Creating user: Camila" in result.output
|
||||
|
||||
|
||||
def test_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Deleting user: Camila" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
75
tests/test_tutorial/test_commands/test_tutorial004.py
Normal file
75
tests/test_tutorial/test_commands/test_tutorial004.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
import subprocess
|
||||
from commands import tutorial004 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_help():
|
||||
result = runner.invoke(app, ["--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "Commands:" in result.output
|
||||
assert "create" in result.output
|
||||
assert "delete" in result.output
|
||||
assert "delete-all" in result.output
|
||||
assert "init" in result.output
|
||||
|
||||
|
||||
def test_create():
|
||||
result = runner.invoke(app, ["create", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Creating user: Camila" in result.output
|
||||
|
||||
|
||||
def test_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"], input="y\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete the user? [y/N]:" in result.output
|
||||
assert "Deleting user: Camila" in result.output
|
||||
|
||||
|
||||
def test_no_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"], input="n\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete the user? [y/N]:" in result.output
|
||||
assert "Operation cancelled" in result.output
|
||||
|
||||
|
||||
def test_delete_all():
|
||||
result = runner.invoke(app, ["delete-all"], input="y\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete ALL users? [y/N]:" in result.output
|
||||
assert "Deleting all users" in result.output
|
||||
|
||||
|
||||
def test_no_delete_all():
|
||||
result = runner.invoke(app, ["delete-all"], input="n\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete ALL users? [y/N]:" in result.output
|
||||
assert "Operation cancelled" in result.output
|
||||
|
||||
|
||||
def test_delete_all_force():
|
||||
result = runner.invoke(app, ["delete-all", "--force"])
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete ALL users? [y/N]:" not in result.output
|
||||
assert "Deleting all users" in result.output
|
||||
|
||||
|
||||
def test_init():
|
||||
result = runner.invoke(app, ["init"])
|
||||
assert result.exit_code == 0
|
||||
assert "Initializing user database" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
106
tests/test_tutorial/test_commands/test_tutorial005.py
Normal file
106
tests/test_tutorial/test_commands/test_tutorial005.py
Normal file
|
@ -0,0 +1,106 @@
|
|||
import subprocess
|
||||
from commands import tutorial005 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_help():
|
||||
result = runner.invoke(app, ["--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "Awesome CLI user manager." in result.output
|
||||
assert "create" in result.output
|
||||
assert "Create a new user with USERNAME." in result.output
|
||||
assert "delete" in result.output
|
||||
assert "Delete a user with USERNAME." in result.output
|
||||
assert "delete-all" in result.output
|
||||
assert "Delete ALL users in the database." in result.output
|
||||
assert "init" in result.output
|
||||
assert "Initialize the users database." in result.output
|
||||
|
||||
|
||||
def test_help_create():
|
||||
result = runner.invoke(app, ["create", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "create [OPTIONS] USERNAME" in result.output
|
||||
assert "Create a new user with USERNAME." in result.output
|
||||
|
||||
|
||||
def test_help_delete():
|
||||
result = runner.invoke(app, ["delete", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "delete [OPTIONS] USERNAME" in result.output
|
||||
assert "Delete a user with USERNAME." in result.output
|
||||
assert "--force / --no-force" in result.output
|
||||
assert "Force deletion without confirmation." in result.output
|
||||
|
||||
|
||||
def test_help_delete_all():
|
||||
result = runner.invoke(app, ["delete-all", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "delete-all [OPTIONS]" in result.output
|
||||
assert "Delete ALL users in the database." in result.output
|
||||
assert "If --force is not used, will ask for confirmation." in result.output
|
||||
assert "[required]" in result.output
|
||||
assert "--force / --no-force" in result.output
|
||||
assert "Force deletion without confirmation." in result.output
|
||||
|
||||
|
||||
def test_help_init():
|
||||
result = runner.invoke(app, ["init", "--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "init [OPTIONS]" in result.output
|
||||
assert "Initialize the users database." in result.output
|
||||
|
||||
|
||||
def test_create():
|
||||
result = runner.invoke(app, ["create", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Creating user: Camila" in result.output
|
||||
|
||||
|
||||
def test_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"], input="y\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete the user? [y/N]:" in result.output
|
||||
assert "Deleting user: Camila" in result.output
|
||||
|
||||
|
||||
def test_no_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"], input="n\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete the user? [y/N]:" in result.output
|
||||
assert "Operation cancelled" in result.output
|
||||
|
||||
|
||||
def test_delete_all():
|
||||
result = runner.invoke(app, ["delete-all",], input="y\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete ALL users? [y/N]:" in result.output
|
||||
assert "Deleting all users" in result.output
|
||||
|
||||
|
||||
def test_no_delete_all():
|
||||
result = runner.invoke(app, ["delete-all",], input="n\n")
|
||||
assert result.exit_code == 0
|
||||
assert "Are you sure you want to delete ALL users? [y/N]:" in result.output
|
||||
assert "Operation cancelled" in result.output
|
||||
|
||||
|
||||
def test_init():
|
||||
result = runner.invoke(app, ["init",])
|
||||
assert result.exit_code == 0
|
||||
assert "Initializing user database" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
38
tests/test_tutorial/test_commands/test_tutorial006.py
Normal file
38
tests/test_tutorial/test_commands/test_tutorial006.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
import subprocess
|
||||
from commands import tutorial006 as mod
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
app = mod.app
|
||||
|
||||
runner = CliRunner()
|
||||
|
||||
|
||||
def test_help():
|
||||
result = runner.invoke(app, ["--help"])
|
||||
assert result.exit_code == 0
|
||||
assert "Commands:" in result.output
|
||||
assert "create" in result.output
|
||||
assert "delete" in result.output
|
||||
|
||||
|
||||
def test_create():
|
||||
result = runner.invoke(app, ["create", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Creating user: Camila" in result.output
|
||||
|
||||
|
||||
def test_delete():
|
||||
result = runner.invoke(app, ["delete", "Camila"])
|
||||
assert result.exit_code == 0
|
||||
assert "Deleting user: Camila" in result.output
|
||||
|
||||
|
||||
def test_script():
|
||||
result = subprocess.run(
|
||||
["coverage", "run", mod.__file__, "--help"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
encoding="utf-8",
|
||||
)
|
||||
assert "Usage" in result.stdout
|
Loading…
Reference in a new issue