Skip to content

Commit

Permalink
test: fixed seed for some rng and test small cell count public indivi…
Browse files Browse the repository at this point in the history
…duals filtering
  • Loading branch information
davidlougheed committed Aug 7, 2023
1 parent 8074717 commit 1383c2d
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions chord_metadata_service/patients/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import json
import csv
import io
import random
from django.conf import settings
from django.urls import reverse
from django.test import override_settings
Expand Down Expand Up @@ -317,19 +318,22 @@ class PublicFilteringIndividualsTest(APITestCase):
""" Test for api/public GET filtering """

response_threshold = CONFIG_PUBLIC_TEST["rules"]["count_threshold"]
random_range = 137
num_individuals = 137
random_seed = 341 # do not change this please :))

@staticmethod
def response_threshold_check(response):
return response['count'] if 'count' in response else settings.INSUFFICIENT_DATA_AVAILABLE

def setUp(self):
individuals = [c.generate_valid_individual() for _ in range(self.random_range)] # random range
individuals = [c.generate_valid_individual() for _ in range(self.num_individuals)]
for individual in individuals:
Individual.objects.create(**individual)
p = ph_m.Procedure.objects.create(**ph_c.VALID_PROCEDURE_1)
ph_m.Biosample.objects.create(**ph_c.valid_biosample_1(Individual.objects.all()[0], p))

random.seed(self.random_seed)

@override_settings(CONFIG_PUBLIC=CONFIG_PUBLIC_TEST)
def test_public_filtering_sex(self):
# sex field search
Expand Down Expand Up @@ -589,6 +593,20 @@ def test_public_filtering_mapping_for_search_filter(self):
self.assertEqual(1, response_obj["count"])


class PublicFilteringIndividualsTestSmallCellCount(PublicFilteringIndividualsTest):
num_individuals = 3 # below configured test threshold
# rest of the methods are inherited

@override_settings(CONFIG_PUBLIC=CONFIG_PUBLIC_TEST)
def test_public_overview_sex(self):
response = self.client.get('/api/public_search_fields')
self.assertEqual(response.status_code, status.HTTP_200_OK)
response_obj = response.json()

# overview for sex should have 0 entries due to small cell counts
self.assertEqual(len(response_obj["sections"][0]["fields"][0]["options"]), 0) # path to sex field


class PublicAgeRangeFilteringIndividualsTest(APITestCase):
""" Test for api/public GET filtering """

Expand Down

0 comments on commit 1383c2d

Please sign in to comment.