Use click instead of flask script

This commit is contained in:
Brendan Reilly
2022-12-13 13:31:56 -05:00
parent e4dba5e242
commit f12fc9c969
4 changed files with 87 additions and 111 deletions

View File

@@ -6,10 +6,9 @@ import logging
from mock import patch
import pytest
from module_build_service import app
from module_build_service import app, manage as mbs_manager
from module_build_service.common import models
from module_build_service.common.models import BUILD_STATES, ModuleBuild
from module_build_service.manage import manager_wrapper, retire
from module_build_service.scheduler.db_session import db_session
from module_build_service.web.utils import deps_to_dict
from tests import clean_database, staged_data_filename
@@ -31,10 +30,12 @@ class TestMBSManage:
)
def test_retire_identifier_validation(self, identifier, is_valid):
if is_valid:
retire(identifier)
with pytest.raises(SystemExit) as exc_info:
mbs_manager.cli(["retire", identifier])
assert 0 == exc_info
else:
with pytest.raises(ValueError):
retire(identifier)
mbs_manager.cli(["retire", identifier])
@pytest.mark.parametrize(
("overrides", "identifier", "changed_count"),
@@ -48,9 +49,9 @@ class TestMBSManage:
({"context": "pickme"}, "spam:eggs:ham", 2),
),
)
@patch("module_build_service.manage.prompt_bool")
def test_retire_build(self, prompt_bool, overrides, identifier, changed_count):
prompt_bool.return_value = True
@patch("click.confirm")
def test_retire_build(self, confirm, overrides, identifier, changed_count):
confirm.return_value = True
module_builds = (
db_session.query(ModuleBuild)
@@ -72,7 +73,10 @@ class TestMBSManage:
db_session.commit()
retire(identifier)
with pytest.raises(SystemExit) as exc_info:
mbs_manager.cli(["retire", identifier])
assert 0 == exc_info.value
retired_module_builds = (
db_session.query(ModuleBuild)
.filter_by(state=BUILD_STATES["garbage"])
@@ -94,11 +98,11 @@ class TestMBSManage:
(False, True, True)
),
)
@patch("module_build_service.manage.prompt_bool")
@patch("click.confirm")
def test_retire_build_confirm_prompt(
self, prompt_bool, confirm_prompt, confirm_arg, confirm_expected
self, confirm, confirm_prompt, confirm_arg, confirm_expected
):
prompt_bool.return_value = confirm_prompt
confirm.return_value = confirm_prompt
module_builds = db_session.query(ModuleBuild).filter_by(state=BUILD_STATES["ready"]).all()
# Verify our assumption of the amount of ModuleBuilds in database
@@ -107,15 +111,17 @@ class TestMBSManage:
for x, build in enumerate(module_builds):
build.name = "spam" + str(x) if x > 0 else "spam"
build.stream = "eggs"
db_session.commit()
retire("spam:eggs", confirm_arg)
cmd = ["retire", "spam:eggs"] + (["--confirm"] if confirm_arg else [])
with pytest.raises(SystemExit) as exc_info:
mbs_manager.cli(cmd)
assert 0 == exc_info.value
expected_changed_count = 1 if confirm_expected else 0
retired_module_builds = (
db_session.query(ModuleBuild).filter_by(state=BUILD_STATES["garbage"]).all()
)
expected_changed_count = 1 if confirm_expected else 0
assert len(retired_module_builds) == expected_changed_count
@@ -157,7 +163,7 @@ class TestCommandBuildModuleLocally:
original_db_uri = app.config["SQLALCHEMY_DATABASE_URI"]
try:
with patch("sys.argv", new=cli_cmd):
manager_wrapper()
mbs_manager.cli()
finally:
app.config["SQLALCHEMY_DATABASE_URI"] = original_db_uri