def test_active_panel(self): """ Make sure GenePanel.active_panel returns correct panel """ gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) gps2 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) gps.panel.active_panel.increment_version() gps.panel.active_panel.increment_version() gps.panel.active_panel.increment_version() gps.panel.active_panel.increment_version() gps.panel.active_panel.increment_version() gps = gps.panel.active_panel assert gps.minor_version == 5 gp = GenePanel.objects.get(pk=gps.panel.pk) assert gp.active_panel == gps gps2.panel.active_panel.increment_version() del gps2.panel.active_panel gps2.panel.active_panel.increment_version() del gps2.panel.active_panel gps2 = gps2.panel.active_panel assert gps2.minor_version == 2 gp2 = GenePanel.objects.get(pk=gps2.panel.pk) assert gp2.active_panel == gps2
def test_delete_gene(self): gps = GenePanelSnapshotFactory() genes = GenePanelEntrySnapshotFactory.create_batch(5, panel=gps) gene_symbol = genes[2].gene['gene_symbol'] number_of_genes = gps.stats.get('number_of_genes') assert gps.has_gene(gene_symbol) is True gps = gps.panel.active_panel gps.delete_gene(gene_symbol) gps = gps.panel.active_panel assert gps.panel.active_panel.has_gene(gene_symbol) is False assert number_of_genes - 1 == gps.panel.active_panel.stats.get( 'number_of_genes') # 4 is due to create_batch old_gps = GenePanel.objects.get( pk=gps.panel.pk).genepanelsnapshot_set.last() assert old_gps.version != gps.version assert old_gps.has_gene(gene_symbol) is True new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel assert new_gps.has_gene(gene_symbol) is False gene_symbol = genes[3].gene['gene_symbol'] assert new_gps.has_gene(gene_symbol) is True new_gps.delete_gene(gene_symbol, False) assert new_gps.has_gene(gene_symbol) is False new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel assert new_gps.has_gene(gene_symbol) is False
def test_import_panel_sources(self): gene = GeneFactory(gene_symbol="ABCC5-AS1") A1CF = GeneFactory(gene_symbol="A1CF") GeneFactory(gene_symbol="STR_1") gps = GenePanelSnapshotFactory() gps.panel.name = "Panel One" gps.level4title.name = gps.panel.name gps.level4title.save() gps.panel.save() evidence = EvidenceFactory.create(name="Expert Review Amber") GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps, evaluation=(None, ), evidence=(evidence, )) self.assertEqual( gps.get_gene(gene.gene_symbol).evidence.first().name, "Expert Review Amber") file_path = os.path.join(os.path.dirname(__file__), 'import_panel_data.tsv') test_panel_file = os.path.abspath(file_path) with open(test_panel_file) as f: url = reverse_lazy('panels:upload_panels') self.client.post(url, {'panel_list': f}) ap = GenePanel.objects.get(name="Panel One").active_panel self.assertEqual( ap.get_gene(gene.gene_symbol).evidence.first().name, "Expert Review Green") self.assertEqual(ap.get_gene(gene.gene_symbol).evidence.count(), 1) self.assertEqual(sorted(ap.get_gene('A1CF').phenotypes), sorted(['57h', 'wef']))
def test_get_panels_for_a_gene(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(2, panel=gps) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps) gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(2, panel=gps) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps) gps3 = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(2, panel=gps3) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps3) gps4 = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(2, panel=gps4) # random genes assert GenePanelEntrySnapshot.objects.get_gene_panels( gene.gene_symbol).count() == 3 url = reverse_lazy('panels:entity_detail', kwargs={'slug': gene.gene_symbol}) res = self.client.get(url) assert len(res.context_data['entries']) == 3
def test_get_internal_panels_for_a_gene(self): gene = GeneFactory() gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) GenePanelEntrySnapshotFactory.create_batch(2, panel=gps) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps) gps2 = GenePanelSnapshotFactory( panel__status=GenePanel.STATUS.internal) GenePanelEntrySnapshotFactory.create_batch(2, panel=gps2) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps2) gps3 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) GenePanelEntrySnapshotFactory.create_batch(2, panel=gps3) # random genes self.assertEqual( GenePanelEntrySnapshot.objects.get_gene_panels( gene.gene_symbol).count(), 2) self.assertEqual( GenePanelSnapshot.objects.get_gene_panels( gene.gene_symbol).count(), 1) self.assertEqual( GenePanelSnapshot.objects.get_gene_panels(gene.gene_symbol, all=True, internal=True).count(), 2) url = reverse_lazy('panels:entity_detail', kwargs={'slug': gene.gene_symbol}) res = self.client.get(url) self.assertEqual(len(res.context_data['entries']), 2)
def setUp(self): super().setUp() self.gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) self.gps_public = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) self.gpes = GenePanelEntrySnapshotFactory(panel=self.gps_public) self.gpes_internal = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.internal) self.gpes_retired = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.retired) self.gpes_deleted = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.deleted) self.genes = GenePanelEntrySnapshotFactory.create_batch(4, panel=self.gps) self.str = STRFactory(panel__panel__status=GenePanel.STATUS.public) self.region = RegionFactory(panel__panel__status=GenePanel.STATUS.public) self.region2 = RegionFactory(panel__panel__status=GenePanel.STATUS.public, position_37=None)
def test_gel_curator_str_red(self): """When gene is added by a GeL currator it should be marked as red""" gene = GeneFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={'pk': gps.panel.pk, 'entity_type': 'str'}) str_data = { 'name': 'SomeSTR', 'chromosome': '1', 'position_37_0': '12345', 'position_37_1': '12346', 'position_38_0': '12345', 'position_38_1': '123456', 'repeated_sequence': 'ATAT', 'normal_repeats': '2', 'pathogenic_repeats': '5', "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, str_data) panel = gps.panel.active_panel assert panel.get_str('SomeSTR').saved_gel_status == 1
def prepare_compare(self): gene = GeneFactory() gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.internal) GenePanelEntrySnapshotFactory.create_batch(2, panel=gps) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps) gps2 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) GenePanelEntrySnapshotFactory.create_batch(2, panel=gps2) # random genes GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps2) STRFactory(panel=gps, position_37=None) return gene, gps, gps2
def test_reviewer_source_visible(self): """When a reviewer adds a gene source should be displayed""" gene = GeneFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[2], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) url = reverse_lazy('panels:detail', kwargs={'pk': gps.panel.pk}) res = self.client.get(url) self.assertContains(res, gene_data['source'])
def test_adding_gene_save_source(self): gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(4, panel=gps) gene = GeneFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) gpes = gps.panel.active_panel.get_gene(gene.gene_symbol) self.assertTrue(gene_data['source'] in gpes.evaluation.get( user=self.verified_user).comments.first().comment)
def test_adding_gene_create_activity(self): gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(4, panel=gps) gene = GeneFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } req = self.client.post(url, gene_data) self.assertEqual(Activity.objects.count(), 1)
def test_region_review_view(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() region = RegionFactory(panel=gps, gene_core=gene) url = reverse_lazy('panels:review_entity', args=(region.panel.panel.pk, 'region', region.name,)) r = self.client.get(url) self.assertEqual(r.status_code, 200)
def test_export_activities_functionality(self): gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(4, panel=gps) gene = GeneFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) activities_url = reverse( 'panels:activity') + '?format=csv&panel=' + str(gps.panel.pk) res = self.client.get(activities_url) self.assertTrue(gps.panel.name.encode() in res.content)
def test_add_gene_to_panel(self): """When a reviewer adds a gene it shouldn't increment the version of a panel""" gene = GeneFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) panel = gps.panel.active_panel assert panel.version == gps.version
def test_reviewer_gene_grey(self): """When a reviewer adds a gene it should be marked as grey gene""" gene = GeneFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) panel = gps.panel.active_panel self.assertEqual(panel.get_gene(gene.gene_symbol).saved_gel_status, 0)
def test_user_reviews(self): gps = GenePanelSnapshotFactory() region = RegionFactory.create_batch(10, panel=gps) for g in region: for evaluation in g.evaluation.all(): evaluation.user = self.verified_user evaluation.save() self.assertEqual(self.verified_user.get_recent_evaluations().count(), 35)
def test_update_status(self): gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:update', kwargs={'pk': gps.panel.pk}) data = self.create_panel_data() data['status'] = GenePanel.STATUS.public self.client.post(url, data) gp = GenePanel.objects.get(pk=gps.panel.pk) assert gp.status == data['status']
def test_update_panel(self): gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:update', kwargs={'pk': gps.panel.pk}) data = self.create_panel_data() self.client.post(url, data) gp = GenePanel.objects.get(pk=gps.panel.pk) assert gp.active_panel.major_version == 0 assert gp.active_panel.minor_version == 1 assert gp.name == data['level4']
def test_evaluation_single_panel(self): gps = GenePanelSnapshotFactory() gpes = GenePanelEntrySnapshotFactory(panel=gps) gps.panel.active_panel.increment_version() gps.panel.active_panel.increment_version() gps = gps.panel.active_panel gene_symbol = gpes.gene_core.gene_symbol # check we copy evaluation rather than assign it current_count = gps.panel.active_panel.get_all_genes[ 0].evaluation.first().genepanelentrysnapshot_set.count() self.assertEqual(current_count, 1) # check if deleting gene preserves it in the previous versions gp = gps.panel gps.delete_gene(gene_symbol) v1 = gp.genepanelsnapshot_set.get(major_version=0, minor_version=1) self.assertTrue(v1.has_gene(gene_symbol))
def test_mark_all_genes_not_ready(self): gps = GenePanelSnapshotFactory() GenePanelEntrySnapshotFactory.create_batch(5, ready=True, panel=gps) assert GenePanelEntrySnapshot.objects.filter(ready=True).count() == 5 url = reverse_lazy('panels:mark_not_ready', kwargs={'pk': gps.panel.pk}) res = self.client.get(url) assert GenePanelEntrySnapshot.objects.filter(ready=True).count() == 0 assert res.status_code == 302
def test_super_panel(self): super_panel = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) super_panel.child_panels.set([self.gps_public, ]) r_direct = self.client.get(reverse_lazy('webservices:get_panel', args=(self.gps_public.panel.pk,))) result_genes = list(sorted(r_direct.json()['result']['Genes'], key=lambda x: x.get('GeneSymbol'))) r = self.client.get(reverse_lazy('webservices:get_panel', args=(super_panel.panel.pk,))) self.assertEqual(r.status_code, 200) self.assertEqual(result_genes, list(sorted(r.json()['result']['Genes'], key=lambda x: x.get('GeneSymbol'))))
def test_evaluation_stays(self): gps = GenePanelSnapshotFactory() gpes = GenePanelEntrySnapshotFactory(panel=gps) evaluations = gpes.evaluation.all() gpes2 = GenePanelEntrySnapshotFactory(panel=gps) evaluations2 = sorted(gpes2.evaluation.all().values_list('pk', flat=True)) gps = gps.increment_version() gps.update_gene(self.gel_user, gpes.gene_core.gene_symbol, {'phenotypes': [ 'abra', ]}) del gps.panel.active_panel current_ev2 = sorted( gps.panel.active_panel.get_gene( gpes2.gene_core.gene_symbol).evaluation.all().values_list( 'pk', flat=True)) self.assertNotEqual(evaluations2, current_ev2)
def test_str_review_view(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() str_item = STRFactory(panel=gps, gene_core=gene) url = reverse_lazy('panels:review_entity', args=( str_item.panel.panel.pk, 'str', str_item.name, )) r = self.client.get(url) self.assertEqual(r.status_code, 200)
def test_add_region_to_panel(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() number_of_regions = gps.stats.get('number_of_regions') url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'region' }) region_data = { 'name': 'SomeRegion', 'chromosome': '1', 'position_37_0': '', 'position_37_1': '', 'position_38_0': '12345', 'position_38_1': '123456', 'haploinsufficiency_score': choice(Region.DOSAGE_SENSITIVITY_SCORES)[0], 'triplosensitivity_score': choice(Region.DOSAGE_SENSITIVITY_SCORES)[0], 'required_overlap_percentage': randint(0, 100), "gene": gene.pk, "source": Evidence.ALL_SOURCES[randint(0, 9)], "tags": [ TagFactory().pk, ], "publications": "{};{};{}".format(*fake.sentences(nb=3)), "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "comments": fake.sentence(), "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "penetrance": Region.PENETRANCE.Incomplete, "current_diagnostic": "True", "type_of_variants": Region.VARIANT_TYPES.small, } res = self.client.post(url, region_data) new_current_number = gps.panel.active_panel.stats.get( 'number_of_regions') assert gps.panel.active_panel.version != gps.version assert res.status_code == 302 assert number_of_regions + 1 == new_current_number # make sure tags are added new_region = GenePanel.objects.get( pk=gps.panel.pk).active_panel.get_region(region_data['name']) assert sorted(list(new_region.tags.all().values_list( 'pk', flat=True))) == sorted(region_data['tags'])
def test_gene_review_view(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() gpes = GenePanelEntrySnapshotFactory(panel=gps, gene_core=gene) url = reverse_lazy('panels:review_entity', args=( gpes.panel.panel.pk, 'gene', gene.gene_symbol, )) r = self.client.get(url) self.assertEqual(r.status_code, 200)
def test_gel_curator_region_red(self): """When gene is added by a GeL currator it should be marked as red""" gene = GeneFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'region' }) region_data = { 'name': 'SomeRegion', 'chromosome': '1', 'position_37_0': '12345', 'position_37_1': '12346', 'position_38_0': '12345', 'position_38_1': '123456', 'haploinsufficiency_score': choice(Region.DOSAGE_SENSITIVITY_SCORES)[0], 'triplosensitivity_score': choice(Region.DOSAGE_SENSITIVITY_SCORES)[0], 'required_overlap_percentage': randint(0, 100), "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": Region.PENETRANCE.Incomplete, "type_of_variants": Region.VARIANT_TYPES.small, } self.client.post(url, region_data) panel = gps.panel.active_panel assert panel.get_region('SomeRegion').saved_gel_status == 1
def test_type_of_variants_added(self): region = RegionFactory() gps = GenePanelSnapshotFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'region' }) source = region.evidence.last().name publication = region.publications[0] phenotype = region.publications[1] region_data = { 'name': region.name, 'chromosome': '1', 'position_37_0': '12345', 'position_37_1': '12346', 'position_38_0': '12345', 'position_38_1': '123456', 'haploinsufficiency_score': choice(Region.DOSAGE_SENSITIVITY_SCORES)[0], 'triplosensitivity_score': '', 'required_overlap_percentage': randint(0, 100), "gene": region.gene_core.pk, "gene_name": "Other name", "source": set([source, Evidence.ALL_SOURCES[randint(0, 9)]]), "tags": [ TagFactory().pk, ] + [tag.name for tag in region.tags.all()], "publications": ";".join([publication, fake.sentence()]), "phenotypes": ";".join([phenotype, fake.sentence(), fake.sentence()]), "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "type_of_variants": Region.VARIANT_TYPES.small, "penetrance": Region.PENETRANCE.Incomplete, } res = self.client.post(url, region_data) self.assertEqual(res.status_code, 302) panel = gps.panel.active_panel assert panel.get_region( region.name).type_of_variants == region_data['type_of_variants']
def test_add_gene_to_panel(self): gene = GeneFactory() gps = GenePanelSnapshotFactory() number_of_genes = gps.stats.get('number_of_genes', 0) url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.ALL_SOURCES[randint(0, 9)], "tags": [ TagFactory().pk, ], "publications": "{};{};{}".format(*fake.sentences(nb=3)), "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "comments": fake.sentence(), "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, "current_diagnostic": "True" } res = self.client.post(url, gene_data) new_current_number = gps.panel.active_panel.stats.get( 'number_of_genes', 0) assert gps.panel.active_panel.version != gps.version assert res.status_code == 302 assert number_of_genes + 1 == new_current_number
def test_filter_by_panel_date_range(self): gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public) GenePanelEntrySnapshotFactory.create_batch(4, panel=gps) gene = GeneFactory() url = reverse_lazy('panels:add_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene' }) gene_data = { "gene": gene.pk, "source": Evidence.OTHER_SOURCES[0], "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)), "rating": Evaluation.RATINGS.AMBER, "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0], "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0], "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete, } self.client.post(url, gene_data) now = timezone.now() date_from = (now - timedelta(days=7)).strftime('%Y-%m-%d') date_to = (now + timedelta(days=7)).strftime('%Y-%m-%d') activities_url = reverse( 'panels:activity' ) + '?date_from=' + date_from + '&date_to=' + date_to res = self.client.get(activities_url) self.assertEqual(len(res.context['activities']), 1) now = timezone.now() - timedelta(days=30) date_from = (now - timedelta(days=7)).strftime('%Y-%m-%d') date_to = (now + timedelta(days=7)).strftime('%Y-%m-%d') activities_url = reverse( 'panels:activity' ) + '?date_from=' + date_from + '&date_to=' + date_to res = self.client.get(activities_url) self.assertEqual(len(res.context['activities']), 0)
def test_delete_gene_ajax(self): gps = GenePanelSnapshotFactory() genes = GenePanelEntrySnapshotFactory.create_batch(5, panel=gps) gene_symbol = genes[2].gene['gene_symbol'] number_of_genes = gps.stats.get('number_of_genes') url = reverse_lazy('panels:delete_entity', kwargs={ 'pk': gps.panel.pk, 'entity_type': 'gene', 'entity_name': gene_symbol }) res = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest') new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel assert new_gps.has_gene(gene_symbol) is False assert number_of_genes - 1 == new_gps.stats.get( 'number_of_genes') # 4 is due to create_batch assert res.json().get('status') == 200 assert res.json().get('content').get('inner-fragments')