From e6b74ca2c4fdac608971229faee027ca6d0d6153 Mon Sep 17 00:00:00 2001 From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr> Date: Wed, 27 Nov 2019 17:12:54 +0100 Subject: [PATCH] add test for gene_length API --- .../metagenedb/api/catalog/views/test_gene.py | 35 +++++++++++++++++-- .../metagenedb/apps/catalog/factory/gene.py | 1 + .../common/utils/mocks/metagenedb.py | 7 ++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/backend/metagenedb/api/catalog/views/test_gene.py b/backend/metagenedb/api/catalog/views/test_gene.py index 0ce7847..8811ae3 100644 --- a/backend/metagenedb/api/catalog/views/test_gene.py +++ b/backend/metagenedb/api/catalog/views/test_gene.py @@ -1,12 +1,14 @@ +import pandas as pd from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse - -import pandas as pd from rest_framework import status +from rest_framework.test import APITestCase from rest_framework_jwt.settings import api_settings from metagenedb.api.catalog.views.gene import GeneViewSet +from metagenedb.apps.catalog.factory import GeneFactory +from metagenedb.common.utils.mocks.metagenedb import MetageneDBCatalogGeneAPIMock class TestGenes(TestCase): @@ -66,3 +68,32 @@ class TestCountWindows(TestCase): test_dict = geneviewset._count_windows(self.df, window_size=10, window_col=self.window_col, stop_at=20) self.assertDictEqual(test_dict, expected_dict) + + +class TestCountWindowsAPI(APITestCase): + + def setUp(self): + self.gene_api = MetageneDBCatalogGeneAPIMock(self.client) + for i in range(2000, 4000, 350): + GeneFactory.create(length=i) + + def test_gene_length_api(self): + expected_dict = { + 'results': { + 'counts': [0, 0, 3, 3], + 'labels': ['<1.0k', '1.0k-2.0k', '2.0k-3.0k', '>3.0k'] + } + } + self.assertDictEqual(self.gene_api.get_gene_length(), expected_dict) + + def test_gene_length_api_stop_at_2000(self): + expected_dict = { + 'results': { + 'counts': [0, 0, 6], + 'labels': ['<1.0k', '1.0k-2.0k', '>2.0k'] + } + } + query_params = { + 'stop_at': 2000 + } + self.assertDictEqual(self.gene_api.get_gene_length(params=query_params), expected_dict) diff --git a/backend/metagenedb/apps/catalog/factory/gene.py b/backend/metagenedb/apps/catalog/factory/gene.py index a29519b..ec337ea 100644 --- a/backend/metagenedb/apps/catalog/factory/gene.py +++ b/backend/metagenedb/apps/catalog/factory/gene.py @@ -15,4 +15,5 @@ class GeneFactory(DjangoModelFactory): model = models.Gene gene_id = FuzzyLowerText(prefix='gene-', length=15) + gene_name = fuzzy.FuzzyText(prefix='name-', length=15) length = fuzzy.FuzzyInteger(200, 10000) diff --git a/backend/metagenedb/common/utils/mocks/metagenedb.py b/backend/metagenedb/common/utils/mocks/metagenedb.py index fe7ec56..f9688ec 100644 --- a/backend/metagenedb/common/utils/mocks/metagenedb.py +++ b/backend/metagenedb/common/utils/mocks/metagenedb.py @@ -47,6 +47,13 @@ class MetageneDBCatalogGeneAPIMock(MetageneDBAPIMock): KEY_ID = 'gene_id' REVERSE_PATH = 'catalog:v1:genes' + def get_gene_length(self, params=None): + reverse_path = f"{self.reverse_path}-gene-length" + response = self.client.get(reverse(reverse_path), params) + if response.status_code in self.BAD_REQUESTS: + raise HTTPError + return response.json() + class MetageneDBCatalogTaxonomyAPIMock(MetageneDBAPIMock): KEY_ID = 'gene_id' -- GitLab