jfaustin's picture
add dockerfile and folding studio cli
44459bb
raw
history blame
2.35 kB
from pathlib import Path
from unittest import mock
import pytest
from folding_studio.cli import app
from folding_studio.utils.data_model import MSARequestParams
from folding_studio_data_models import (
FeatureMode,
MessageStatus,
MSAMessage,
MSAPublication,
)
from typer.testing import CliRunner
current_workdir = Path(__file__).parent.resolve()
data_dir = Path(current_workdir / "data")
runner = CliRunner()
@pytest.fixture(autouse=True)
def mock_get_auth_headers():
with mock.patch(
"folding_studio.commands.msa.get_auth_headers", return_value={"Authorization": "Bearer identity_token"}
) as m:
yield m
@pytest.fixture()
def mock_simple_msa(request):
pub = MSAPublication(
message=MSAMessage(
pipeline_name="msa",
user_id="default-user",
project_code="default-project",
msa_experiment_id="dummy-experiment",
model_preset="monomer",
fasta_file_name="monomer.fasta",
ignore_cache=False,
),
status=request.param,
)
with mock.patch(
"folding_studio.commands.msa.simple_msa",
return_value=pub.model_dump(mode="json"),
) as m:
yield m
@pytest.fixture()
def default_params():
yield MSARequestParams(
ignore_cache=False,
msa_mode=FeatureMode.SEARCH,
)
def test_search_with_unsupported_file_fails(tmp_files):
result = runner.invoke(app, ["msa", "search", str(tmp_files["invalid_source"])])
assert result.exit_code == 2
assert "Invalid value for 'SOURCE'" in result.stdout
@pytest.mark.parametrize(
"mock_simple_msa",
(
MessageStatus.PUBLISHED,
MessageStatus.NOT_PUBLISHED_DONE,
MessageStatus.NOT_PUBLISHED_PENDING,
),
indirect=True,
)
def test_search_with_fasta_file_pass(
mock_simple_msa: mock.Mock,
tmp_files,
default_params,
headers,
):
result = runner.invoke(
app,
[
"msa",
"search",
str(tmp_files["monomer_fasta"]),
"--metadata-file",
str(tmp_files["metadata_file"]),
],
)
assert result.exit_code == 0
mock_simple_msa.assert_called_once_with(
file=tmp_files["monomer_fasta"],
params=default_params,
project_code="FOLDING_DEV"
)