Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/mavedb/routers/hgvs.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
from mavedb.deps import hgvs_data_provider

router = APIRouter(
prefix="/api/v1/hgvs",
tags=["hgvs"],
prefix="/api/v1/transcripts",
tags=["transcripts"],
responses={404: {"description": "Not found"}},
)

Expand Down Expand Up @@ -85,7 +85,7 @@ def gene_info(gene: str, hdp: RESTDataProvider = Depends(hgvs_data_provider)) ->
return gene_info


@router.get("/transcripts/gene/{gene}", status_code=200, response_model=list[str])
@router.get("/gene/{gene}", status_code=200, response_model=list[str])
def list_transcripts_for_gene(gene: str, hdp: RESTDataProvider = Depends(hgvs_data_provider)) -> list[str]:
"""
List transcripts associated with a particular gene
Expand All @@ -98,7 +98,7 @@ def list_transcripts_for_gene(gene: str, hdp: RESTDataProvider = Depends(hgvs_da
return list(transcripts)


@router.get("/transcripts/{transcript}", status_code=200, response_model=dict[str, Any])
@router.get("/{transcript}", status_code=200, response_model=dict[str, Any])
def transcript_info(transcript: str, hdp: RESTDataProvider = Depends(hgvs_data_provider)) -> dict[str, Any]:
"""
List transcript information for a particular transcript
Expand All @@ -111,7 +111,7 @@ def transcript_info(transcript: str, hdp: RESTDataProvider = Depends(hgvs_data_p
return transcript_info


@router.get("/transcripts/protein/{transcript}", status_code=200, response_model=str)
@router.get("/protein/{transcript}", status_code=200, response_model=str)
def convert_to_protein(transcript: str, hdp: RESTDataProvider = Depends(hgvs_data_provider)) -> str:
"""
Convert a provided transcript from it's nucleotide accession identifier to its protein accession identifier
Expand Down
36 changes: 18 additions & 18 deletions tests/routers/test_hgvs.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@


def test_hgvs_fetch_valid(client, setup_router_db):
response = client.get(f"/api/v1/hgvs/fetch/{VALID_ACCESSION}")
response = client.get(f"/api/v1/transcripts/fetch/{VALID_ACCESSION}")

assert response.status_code == 200
assert response.text == '"GATTACAGATTACAGATTACAGATTACAGATTACAGATTACAGATTACA"'
Expand All @@ -31,51 +31,51 @@ def test_hgvs_fetch_invalid(client, setup_router_db):
with patch.object(
cdot.hgvs.dataproviders.ChainedSeqFetcher, "fetch_seq", side_effect=HGVSDataNotAvailableError()
) as p:
response = client.get(f"/api/v1/hgvs/fetch/{SMALL_ACCESSION}")
response = client.get(f"/api/v1/transcripts/fetch/{SMALL_ACCESSION}")
p.assert_called_once()
assert response.status_code == 404


def test_hgvs_validate_valid(client, setup_router_db):
with patch.object(cdot.hgvs.dataproviders.RESTDataProvider, "_get_transcript", return_value=TEST_CDOT_TRANSCRIPT):
payload = {"variant": VALID_VARIANT}
response = client.post("/api/v1/hgvs/validate", json=payload)
response = client.post("/api/v1/transcripts/validate", json=payload)
assert response.status_code == 200


def test_hgvs_validate_invalid(client, setup_router_db):
with patch.object(cdot.hgvs.dataproviders.RESTDataProvider, "_get_transcript", return_value=TEST_CDOT_TRANSCRIPT):
payload = {"variant": INVALID_VARIANT}
response = client.post("/api/v1/hgvs/validate", json=payload)
response = client.post("/api/v1/transcripts/validate", json=payload)

assert response.status_code == 400
assert "does not agree" in response.json()["detail"]


def test_hgvs_list_assemblies(client, setup_router_db):
response = client.get("/api/v1/hgvs/assemblies")
response = client.get("/api/v1/transcripts/assemblies")
assert response.status_code == 200
assert VALID_MAJOR_ASSEMBLY in response.json()


def test_hgvs_accessions_major(client, setup_router_db):
response = client.get(f"/api/v1/hgvs/{VALID_MAJOR_ASSEMBLY}/accessions")
response = client.get(f"/api/v1/transcripts/{VALID_MAJOR_ASSEMBLY}/accessions")
assert response.status_code == 200
assert "NC_000001.11" in response.json()


def test_hgvs_accessions_minor(client, setup_router_db):
response = client.get(f"/api/v1/hgvs/{VALID_MINOR_ASSEMBLY}/accessions")
response = client.get(f"/api/v1/transcripts/{VALID_MINOR_ASSEMBLY}/accessions")
assert response.status_code == 404


def test_hgvs_accessions_invalid(client, setup_router_db):
response = client.get(f"/api/v1/hgvs/{INVALID_ASSEMBLY}/accessions")
response = client.get(f"/api/v1/transcripts/{INVALID_ASSEMBLY}/accessions")
assert response.status_code == 404


def test_hgvs_genes(client, setup_router_db):
response = client.get("/api/v1/hgvs/genes")
response = client.get("/api/v1/transcripts/genes")
assert response.status_code == 200
assert VALID_GENE in response.json()

Expand All @@ -93,7 +93,7 @@ def test_hgvs_gene_info_valid(client, setup_router_db):
"summary": "This gene, etc",
},
)
response = client.get(f"/api/v1/hgvs/genes/{VALID_GENE}")
response = client.get(f"/api/v1/transcripts/genes/{VALID_GENE}")

assert m.called

Expand All @@ -108,7 +108,7 @@ def test_hgvs_gene_info_invalid(client, setup_router_db):
"https://cdot.cc/gene/fnord",
status_code=404,
)
response = client.get(f"/api/v1/hgvs/genes/{INVALID_GENE}")
response = client.get(f"/api/v1/transcripts/genes/{INVALID_GENE}")

assert m.called
assert response.status_code == 404
Expand All @@ -122,7 +122,7 @@ def test_hgvs_gene_transcript_valid(client, setup_router_db):
json={"results": [{"hgnc": f"{VALID_GENE}", "tx_ac": VALID_TRANSCRIPT}]},
)

response = client.get(f"/api/v1/hgvs/transcripts/gene/{VALID_GENE}")
response = client.get(f"/api/v1/transcripts/gene/{VALID_GENE}")
assert response.status_code == 200
assert VALID_TRANSCRIPT in response.json()

Expand All @@ -131,15 +131,15 @@ def test_hgvs_gene_transcript_invalid(client, setup_router_db):
with requests_mock.mock() as m:
m.get(f"https://cdot.cc/transcripts/gene/{INVALID_GENE}", status_code=404)

response = client.get(f"/api/v1/hgvs/transcripts/gene/{INVALID_GENE}")
response = client.get(f"/api/v1/transcripts/gene/{INVALID_GENE}")

assert m.called
assert response.status_code == 404


def test_hgvs_transcript_valid(client, setup_router_db):
with patch.object(cdot.hgvs.dataproviders.RESTDataProvider, "_get_transcript", return_value=TEST_CDOT_TRANSCRIPT):
response = client.get(f"/api/v1/hgvs/transcripts/{VALID_TRANSCRIPT}")
response = client.get(f"/api/v1/transcripts/{VALID_TRANSCRIPT}")

assert response.status_code == 200
assert response.json()["hgnc"] == VALID_GENE
Expand All @@ -149,7 +149,7 @@ def test_hgvs_transcript_invalid(client, setup_router_db):
with requests_mock.mock() as m:
m.get(f"https://cdot.cc/transcript/{INVALID_TRANSCRIPT}", status_code=404)

response = client.get(f"/api/v1/hgvs/transcripts/{INVALID_TRANSCRIPT}")
response = client.get(f"/api/v1/transcripts/{INVALID_TRANSCRIPT}")

assert m.called
assert response.status_code == 404
Expand All @@ -163,7 +163,7 @@ def test_hgvs_transcript_protein_valid(client, setup_router_db):
json={"biotype": ["protein_coding"], "gene_name": "A2M", "gene_vesion": "2", "protein": "NP_000005.2"},
)

response = client.get(f"/api/v1/hgvs/transcripts/protein/{HAS_PROTEIN_ACCESSION}")
response = client.get(f"/api/v1/transcripts/protein/{HAS_PROTEIN_ACCESSION}")

assert m.called

Expand All @@ -175,7 +175,7 @@ def test_hgvs_transcript_protein_no_protein(client, setup_router_db):
with requests_mock.mock() as m:
m.get(f"https://cdot.cc/transcript/{SMALL_ACCESSION}", status_code=404)

response = client.get(f"/api/v1/hgvs/transcripts/protein/{SMALL_ACCESSION}")
response = client.get(f"/api/v1/transcripts/protein/{SMALL_ACCESSION}")

assert m.called
assert response.status_code == 404
Expand All @@ -185,7 +185,7 @@ def test_hgvs_transcript_protein_invalid(client, setup_router_db):
with requests_mock.mock() as m:
m.get(f"https://cdot.cc/transcript/{INVALID_ACCESSION}", status_code=404)

response = client.get(f"/api/v1/hgvs/transcripts/protein/{INVALID_ACCESSION}")
response = client.get(f"/api/v1/transcripts/protein/{INVALID_ACCESSION}")

assert m.called
assert response.status_code == 404
Loading