Exemple #1
0
    def test_edit_region_in_panel(self):
        region = RegionFactory()
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': region.panel.panel.pk,
                               'entity_type': 'region',
                               'entity_name': region.name
                           })

        number_of_regions = region.panel.stats.get('number_of_regions')

        # make sure new data has at least 1 of the same items
        source = region.evidence.last().name

        publication = region.publications[0]
        phenotype = region.publications[1]

        new_evidence = Evidence.ALL_SOURCES[randint(0, 9)]
        original_evidences = set([ev.name for ev in region.evidence.all()])
        original_evidences.add(new_evidence)

        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':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'required_overlap_percentage': randint(0, 100),
            "gene": region.gene_core.pk,
            "gene_name": "Gene name",
            "source": set([source, new_evidence]),
            "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],
            "penetrance": Region.PENETRANCE.Incomplete,
            "type_of_variants": Region.VARIANT_TYPES.small,
        }
        res = self.client.post(url, region_data)
        assert res.status_code == 302
        new_region = GenePanel.objects.get(
            pk=region.panel.panel.pk).active_panel.get_region(region.name)
        assert region.panel.panel.active_panel.version != region.panel.version
        new_current_number = new_region.panel.panel.active_panel.stats.get(
            'number_of_regions')
        assert number_of_regions == new_current_number
        self.assertEqual(int(region_data['position_37_1']),
                         new_region.position_37.upper)
Exemple #2
0
    def test_add_tag_via_edit_details(self):
        """Set tags via edit gene detail section"""

        region = RegionFactory(penetrance=Region.PENETRANCE.Incomplete)
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': region.panel.panel.pk,
                               'entity_type': 'region',
                               'entity_name': region.name
                           })

        tag = TagFactory(name='some tag')

        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':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'required_overlap_percentage':
            randint(0, 100),
            "gene":
            region.gene_core.pk,
            "gene_name":
            "Gene name",
            "source":
            set([ev.name for ev in region.evidence.all()]),
            "tags": [tag.pk for tag in region.tags.all()] + [
                tag.pk,
            ],
            "publications":
            ";".join([publication for publication in region.publications]),
            "phenotypes":
            ";".join([phenotype for phenotype in region.phenotypes]),
            "type_of_variants":
            Region.VARIANT_TYPES.small,
            "moi":
            region.moi,
            "penetrance":
            Region.PENETRANCE.Complete,
        }
        res = self.client.post(url, region_data)
        assert res.status_code == 302
        new_region = GenePanel.objects.get(
            pk=region.panel.panel.pk).active_panel.get_region(region.name)
        assert sorted(list(new_region.tags.all())) != sorted(
            list(region.tags.all()))
    def test_update_tags(self):
        region = RegionFactory()
        current_version = region.panel.version
        region.evaluation.all().delete()
        url = reverse_lazy('panels:update_entity_tags', kwargs={
            'pk': region.panel.panel.pk,
            'entity_type': 'region',
            'entity_name': region.name
        })

        tag1 = TagFactory()
        tag2 = TagFactory()

        res = self.client.post(url, {'tags': [tag1.pk, tag2.pk]}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        gene = GenePanel.objects.get(pk=region.panel.panel.pk).active_panel.get_region(region.name)
        assert res.json().get('status') == 200
        assert gene.tags.count() == 2
        assert current_version == region.panel.panel.active_panel.version
Exemple #4
0
    def test_edit_region_name_ajax(self):
        region = RegionFactory()
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': region.panel.panel.pk,
                               'entity_type': 'region',
                               'entity_name': region.name
                           })

        old_region_name = region.name

        # make sure new data has at least 1 of the same items
        source = region.evidence.last().name
        publication = region.publications[0]
        phenotype = region.publications[1]

        gene_data = {
            'name': 'NewRegion',
            '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": 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, gene_data)
        assert res.status_code == 302

        new_gps = GenePanel.objects.get(pk=region.panel.panel.pk).active_panel
        old_gps = GenePanelSnapshot.objects.get(pk=region.panel.pk)

        # check panel has no previous gene
        assert new_gps.has_region(old_region_name) is False

        # test previous panel contains old gene
        assert old_gps.has_region(old_region_name) is True
Exemple #5
0
    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_edit_gene_in_panel(self):
        gpes = GenePanelEntrySnapshotFactory()
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': gpes.panel.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gpes.gene.get('gene_symbol')
                           })

        number_of_genes = gpes.panel.stats.get('number_of_genes')

        # make sure new data has at least 1 of the same items
        source = gpes.evidence.last().name

        publication = gpes.publications[0]
        phenotype = gpes.publications[1]

        new_evidence = Evidence.ALL_SOURCES[randint(0, 9)]
        original_evidences = set([ev.name for ev in gpes.evidence.all()])
        original_evidences.add(new_evidence)

        gene_data = {
            "gene":
            gpes.gene_core.pk,
            "gene_name":
            "Gene name",
            "source":
            set([source, new_evidence]),
            "tags": [
                TagFactory().pk,
            ] + [tag.pk for tag in gpes.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],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, gene_data)
        assert res.status_code == 302
        gene = GenePanel.objects.get(
            pk=gpes.panel.panel.pk).active_panel.get_gene(
                gpes.gene_core.gene_symbol)
        assert gpes.panel.panel.active_panel.version != gpes.panel.version
        new_current_number = gpes.panel.panel.active_panel.stats.get(
            'number_of_genes', 0)
        assert number_of_genes == new_current_number
Exemple #7
0
    def test_update_tags(self):
        gpes = GenePanelEntrySnapshotFactory()
        current_version = gpes.panel.version
        gpes.evaluation.all().delete()
        url = reverse_lazy('panels:update_entity_tags',
                           kwargs={
                               'pk': gpes.panel.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gpes.gene.get('gene_symbol')
                           })

        tag1 = TagFactory()
        tag2 = TagFactory()

        res = self.client.post(url, {'tags': [tag1.pk, tag2.pk]},
                               HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        gene = GenePanel.objects.get(
            pk=gpes.panel.panel.pk).active_panel.get_gene(
                gpes.gene.get('gene_symbol'))
        assert res.json().get('status') == 200
        assert gene.tags.count() == 2
        assert current_version == gpes.panel.panel.active_panel.version
    def test_edit_gene_name_ajax(self):
        gpes = GenePanelEntrySnapshotFactory()
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': gpes.panel.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gpes.gene.get('gene_symbol')
                           })

        old_gene_symbol = gpes.gene.get('gene_symbol')

        # make sure new data has at least 1 of the same items
        source = gpes.evidence.last().name
        publication = gpes.publications[0]
        phenotype = gpes.publications[1]

        new_gene = GeneFactory()

        gene_data = {
            "gene":
            new_gene.pk,
            "gene_name":
            "Other name",
            "source":
            set([source, Evidence.ALL_SOURCES[randint(0, 9)]]),
            "tags": [
                TagFactory().pk,
            ] + [tag.pk for tag in gpes.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],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, gene_data)
        assert res.status_code == 302

        new_gps = GenePanel.objects.get(pk=gpes.panel.panel.pk).active_panel
        old_gps = GenePanelSnapshot.objects.get(pk=gpes.panel.pk)

        # check panel has no previous gene
        assert new_gps.has_gene(old_gene_symbol) is False

        # test previous panel contains old gene
        assert old_gps.has_gene(old_gene_symbol) is True
Exemple #9
0
    def test_remove_gene_from_str(self):
        """We need ability to remove genes from STRs"""

        str_item = STRFactory()
        url = reverse_lazy('panels:edit_entity', kwargs={
            'pk': str_item.panel.panel.pk,
            'entity_type': 'str',
            'entity_name': str_item.name
        })

        number_of_strs = str_item.panel.stats.get('number_of_strs', 0)

        # make sure new data has at least 1 of the same items
        source = str_item.evidence.last().name

        publication = str_item.publications[0]
        phenotype = str_item.publications[1]

        new_evidence = Evidence.ALL_SOURCES[randint(0, 9)]
        original_evidences = set([ev.name for ev in str_item.evidence.all()])
        original_evidences.add(new_evidence)

        str_data = {
            'name': str_item.name,
            '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_name": "Gene name",
            "source": set([source, new_evidence]),
            "tags": [TagFactory().pk, ] + [tag.pk for tag in str_item.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],
            "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, str_data)
        assert res.status_code == 302
        new_str = GenePanel.objects.get(pk=str_item.panel.panel.pk).active_panel.get_str(str_item.name)
        assert not new_str.gene_core
        assert not new_str.gene
        assert str_item.panel.panel.active_panel.version != str_item.panel.version
        new_current_number = new_str.panel.panel.active_panel.stats.get('number_of_strs')
        assert number_of_strs == new_current_number
    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
Exemple #12
0
    def test_edit_str_name_ajax(self):
        str_item = STRFactory()
        url = reverse_lazy('panels:edit_entity', kwargs={
            'pk': str_item.panel.panel.pk,
            'entity_type': 'str',
            'entity_name': str_item.name
        })

        old_str_name = str_item.name

        # make sure new data has at least 1 of the same items
        source = str_item.evidence.last().name
        publication = str_item.publications[0]
        phenotype = str_item.publications[1]

        gene_data = {
            'name': 'NewSTR',
            '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": str_item.gene_core.pk,
            "gene_name": "Other name",
            "source": set([source, Evidence.ALL_SOURCES[randint(0, 9)]]),
            "tags": [TagFactory().pk, ] + [tag.pk for tag in str_item.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],
            "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, gene_data)
        assert res.status_code == 302

        new_gps = GenePanel.objects.get(pk=str_item.panel.panel.pk).active_panel
        old_gps = GenePanelSnapshot.objects.get(pk=str_item.panel.pk)

        # check panel has no previous gene
        assert new_gps.has_str(old_str_name) is False

        # test previous panel contains old gene
        assert old_gps.has_str(old_str_name) is True
    def test_add_tag_via_edit_details(self):
        """Set tags via edit gene detail section"""

        gpes = GenePanelEntrySnapshotFactory(
            penetrance=GenePanelEntrySnapshot.PENETRANCE.Incomplete)
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': gpes.panel.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gpes.gene.get('gene_symbol')
                           })

        tag = TagFactory(name='some tag')

        gene_data = {
            "gene":
            gpes.gene_core.pk,
            "gene_name":
            "Gene name",
            "source":
            set([ev.name for ev in gpes.evidence.all()]),
            "tags": [tag.pk for tag in gpes.tags.all()] + [
                tag.pk,
            ],
            "publications":
            ";".join([publication for publication in gpes.publications]),
            "phenotypes":
            ";".join([phenotype for phenotype in gpes.phenotypes]),
            "moi":
            gpes.moi,
            "mode_of_pathogenicity":
            gpes.mode_of_pathogenicity,
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Complete,
        }
        res = self.client.post(url, gene_data)
        assert res.status_code == 302
        gene = GenePanel.objects.get(
            pk=gpes.panel.panel.pk).active_panel.get_gene(
                gpes.gene_core.gene_symbol)
        assert sorted(list(gene.tags.values_list('pk'))) != sorted(
            list(gpes.tags.values_list('pk')))
Exemple #14
0
    def test_edit_incorrect_repeated_sequence(self):
        str_item = STRFactory()
        url = reverse_lazy('panels:edit_entity', kwargs={
            'pk': str_item.panel.panel.pk,
            'entity_type': 'str',
            'entity_name': str_item.name
        })

        number_of_strs = str_item.panel.stats.get('number_of_strs')

        # make sure new data has at least 1 of the same items
        source = str_item.evidence.last().name

        publication = str_item.publications[0]
        phenotype = str_item.publications[1]

        new_evidence = Evidence.ALL_SOURCES[randint(0, 9)]
        original_evidences = set([ev.name for ev in str_item.evidence.all()])
        original_evidences.add(new_evidence)

        str_data = {
            'name': str_item.name,
            'chromosome': '1',
            'position_37_0': '12345',
            'position_37_1': '12346',
            'position_38_0': '12345',
            'position_38_1': '123456',
            'repeated_sequence': 'ATATBC',
            'normal_repeats': '2',
            'pathogenic_repeats': '5',
            "gene": str_item.gene_core.pk,
            "gene_name": "Gene name",
            "source": set([source, new_evidence]),
            "tags": [TagFactory().pk, ] + [tag.pk for tag in str_item.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],
            "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, str_data)
        assert res.status_code == 200
        assert res.content.find(b'Repeated sequence contains incorrect nucleotides') != -1
    def test_mitochondrial_gene(self):
        gene = GeneFactory(gene_symbol="MT-LORUM")
        gpes = GenePanelEntrySnapshotFactory(gene_core=gene)
        url = reverse_lazy('panels:edit_entity',
                           kwargs={
                               'pk': gpes.panel.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gpes.gene.get('gene_symbol')
                           })

        # make sure new data has at least 1 of the same items

        gpes.publications[0]
        gpes.publications[1]

        gene_data = {
            "gene":
            gpes.gene_core.pk,
            "gene_name":
            "Gene name",
            "source": [ev.name for ev in gpes.evidence.all()],
            "tags": [
                TagFactory().pk,
            ] + [tag.pk for tag in gpes.tags.all()],
            "publications":
            ";".join(gpes.publications),
            "phenotypes":
            ";".join(gpes.phenotypes),
            "moi":
            gpes.moi,
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, gene_data)
        assert res.status_code == 302
        gene = GenePanel.objects.get(
            pk=gpes.panel.panel.pk).active_panel.get_gene(
                gpes.gene_core.gene_symbol)
        assert gene.moi == "MITOCHONDRIAL"
Exemple #16
0
    def test_add_str_to_panel(self):
        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()

        number_of_strs = gps.stats.get('number_of_strs', 0)

        url = reverse_lazy('panels:add_entity', kwargs={'pk': gps.panel.pk, 'entity_type': 'str'})
        gene_data = {
            'name': 'SomeSTR',
            'chromosome': '1',
            'position_37_0': '',
            'position_37_1': '',
            'position_38_0': '12345',
            'position_38_1': '123456',
            'repeated_sequence': 'ATAT',
            'normal_repeats': '2',
            'pathogenic_repeats': '5',
            "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": GenePanelEntrySnapshot.PENETRANCE.Incomplete,
            "current_diagnostic": "True"
        }
        res = self.client.post(url, gene_data)

        new_current_number = gps.panel.active_panel.stats.get('number_of_strs')

        assert gps.panel.active_panel.version != gps.version

        assert res.status_code == 302
        assert number_of_strs + 1 == new_current_number

        # make sure tags are added
        new_str = GenePanel.objects.get(pk=gps.panel.pk).active_panel.get_str(gene_data['name'])
        assert sorted(list(new_str.tags.all().values_list('pk', flat=True))) == sorted(gene_data['tags'])
Exemple #17
0
    def test_remove_tag_via_edit_details(self):
        """Remove tags via edit gene detail section"""

        str_item = STRFactory(
            penetrance=GenePanelEntrySnapshot.PENETRANCE.Incomplete
        )

        tag = TagFactory(name='some tag')
        str_item.tags.add(tag)

        url = reverse_lazy('panels:edit_entity', kwargs={
            'pk': str_item.panel.panel.pk,
            'entity_type': 'str',
            'entity_name': str_item.name
        })

        str_data = {
            'name': str_item.name,
            '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": str_item.gene_core.pk,
            "gene_name": "Gene name",
            "source": set([ev.name for ev in str_item.evidence.all()]),
            "tags": [],
            "publications": ";".join([publication for publication in str_item.publications]),
            "phenotypes": ";".join([phenotype for phenotype in str_item.phenotypes]),
            "moi": str_item.moi,
            "penetrance": GenePanelEntrySnapshot.PENETRANCE.Complete,
        }
        res = self.client.post(url, str_data)
        assert res.status_code == 302
        new_str = GenePanel.objects.get(pk=str_item.panel.panel.pk).active_panel.get_str(str_item.name)
        assert list(new_str.tags.all()) == []