Source code for genomes_api.tests.test_gene_models_api

# pylint: disable=W0621,C0114,C0116,W0212,W0613
import json

import pytest_mock
from django.test.client import Client
from gpf_instance.gpf_instance import WGPFInstance


[docs] def test_default_gene_models_id( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, # noqa: ARG001 ; setup WGPF instance ) -> None: response = anonymous_client.get("/api/v3/genome/gene_models/default") assert response assert response.status_code == 200 assert response.data == "t4c8_genes" # type: ignore
[docs] def test_get_chd8_transcripts( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, # noqa: ARG001 ; setup WGPF instance ) -> None: response = anonymous_client.get("/api/v3/genome/gene_models/default/t4") assert response assert response.status_code == 200 data = response.data # type: ignore assert data assert data["gene"] == "t4" transcripts = data["transcripts"] assert len(transcripts) == 1 assert transcripts[0]["transcript_id"] == "tx1_1" assert transcripts[0]["strand"] == "+" assert transcripts[0]["chrom"] == "chr1" assert transcripts[0]["utr3"] assert transcripts[0]["utr5"] assert transcripts[0]["exons"] assert transcripts[0]["cds"]
[docs] def test_get_nonexistant_gene_transcripts( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, # noqa: ARG001 ; setup WGPF instance ) -> None: response = anonymous_client.get("/api/v3/genome/gene_models/default/asdf") assert response assert response.status_code == 404
[docs] def test_get_case_insensitive_gene( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, # noqa: ARG001 ; setup WGPF instance ) -> None: response = anonymous_client.get("/api/v3/genome/gene_models/default/T4") assert response assert response.data["gene"] == "t4" # type: ignore assert response.status_code == 200
[docs] def test_search_gene_symbols( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, mocker: pytest_mock.MockFixture, ) -> None: mocker.patch.object( t4c8_wgpf_instance.gene_models, "gene_models", { "CHD3": [], "CHD2": [], "CHD8": [], "CHD1L": [], "CHD1": [], "CHD4": [], "CHD9": [], "CHD7": [], "CHD5": [], "CHDH": [], "CHD6": [], "CTEST": [], "CTEST2": [], "CTEST3": [], "CTEST4": [], }, ) response = anonymous_client.get("/api/v3/genome/gene_models/search/CHD8") assert response.data["gene_symbols"] == ["CHD8"] # type: ignore response = anonymous_client.get("/api/v3/genome/gene_models/search/CHD") assert set(response.data["gene_symbols"]) == { # type: ignore "CHD3", "CHD2", "CHD8", "CHD1L", "CHD1", "CHD4", "CHD9", "CHD7", "CHD5", "CHDH", "CHD6", } response = anonymous_client.get("/api/v3/genome/gene_models/search/C") assert len(response.data["gene_symbols"]) == 15 # type: ignore
[docs] def test_validate_gene_symbols( anonymous_client: Client, t4c8_wgpf_instance: WGPFInstance, mocker: pytest_mock.MockFixture, ) -> None: mocker.patch.object( t4c8_wgpf_instance.gene_models, "gene_models", { "CHD3": [], "CHD2": [], "CHD8": [], "CHD1L": [], "CHD1": [], "CHD4": [], "CHD9": [], "CHD7": [], "CHD5": [], "CHDH": [], "CHD6": [], "CTEST": [], "CTEST2": [], "CTEST3": [], "CTEST4": [], }, ) response = anonymous_client.post( "/api/v3/genome/gene_models/validate", json.dumps({ "geneSymbols": [ "CHD8", "CHDHA", # Invalid gene symbol "CHD2", "CHD99", # Invalid gene symbol "CTEST3", "CTEST99", # Invalid gene symbol ], }), content_type="application/json", ) assert response.data == ["CHDHA", "CHD99", "CTEST99"] # type: ignore