|
from pathlib import Path |
|
from unittest import mock |
|
|
|
from folding_studio.cli import app |
|
from folding_studio.query import SoloSeqQuery |
|
from typer.testing import CliRunner |
|
|
|
current_workdir = Path(__file__).parent.resolve() |
|
data_dir = Path(current_workdir / "data") |
|
|
|
runner = CliRunner() |
|
|
|
|
|
def test_predict_with_fasta_file_pass( |
|
mock_send_request: mock.Mock, |
|
mock_download_results: mock.Mock, |
|
tmp_files, |
|
): |
|
result = runner.invoke( |
|
app, |
|
[ |
|
"predict", |
|
"soloseq", |
|
str(tmp_files["monomer_fasta"]), |
|
"--output", |
|
tmp_files["output_dir"], |
|
"--project-code", |
|
"my_project_code", |
|
], |
|
) |
|
assert result.exit_code == 0, result.output |
|
|
|
expected_query = SoloSeqQuery( |
|
fasta_files={"monomer": ">tag1|tag2\nABCDEGF"}, query_name="monomer" |
|
) |
|
mock_send_request.assert_called_once_with(expected_query, "my_project_code") |
|
mock_download_results.assert_called_once() |
|
|
|
|
|
def test_predict_with_fasta_dir_pass( |
|
mock_send_request: mock.Mock, |
|
mock_download_results: mock.Mock, |
|
tmp_files, |
|
): |
|
result = runner.invoke( |
|
app, |
|
[ |
|
"predict", |
|
"soloseq", |
|
str(tmp_files["valid_dir"]), |
|
"--output", |
|
tmp_files["output_dir"], |
|
"--project-code", |
|
"my_project_code", |
|
], |
|
) |
|
assert result.exit_code == 0, result.output |
|
|
|
expected_query = SoloSeqQuery( |
|
fasta_files={ |
|
"monomer_1": ">tag1|tag2\nABCDEGF", |
|
"monomer_2": ">tag1|tag2\nABCDEGF", |
|
}, |
|
query_name="valid_dir", |
|
) |
|
mock_send_request.assert_called_once_with(expected_query, "my_project_code") |
|
mock_download_results.assert_called_once() |
|
|