about summary refs log tree commit diff
path: root/wqflask/tests/wqflask/show_trait/test_show_trait.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/tests/wqflask/show_trait/test_show_trait.py')
-rw-r--r--wqflask/tests/wqflask/show_trait/test_show_trait.py255
1 files changed, 0 insertions, 255 deletions
diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
deleted file mode 100644
index 1291037f..00000000
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ /dev/null
@@ -1,255 +0,0 @@
-"""test for wqflask/show_trait/test_show_trait.py"""
-import unittest
-import pytest
-from unittest import mock
-from wqflask.show_trait.show_trait import check_if_attr_exists
-from wqflask.show_trait.show_trait import get_ncbi_summary
-from wqflask.show_trait.show_trait import has_num_cases
-from wqflask.show_trait.show_trait import get_table_widths
-from wqflask.show_trait.show_trait import get_categorical_variables
-from wqflask.show_trait.show_trait import get_trait_units
-from wqflask.show_trait.show_trait import get_nearest_marker
-from wqflask.show_trait.show_trait import get_genotype_scales
-from wqflask.show_trait.show_trait import get_scales_from_genofile
-
-
-class TraitObject:
-    def __init__(self, obj):
-        self.distinct_values = []
-        self.id = ""
-        for key, value in obj.items():
-            setattr(self, key, value)
-            self.id += str(value)
-
-
-@pytest.mark.parametrize(
-    ('trait', 'id_type', 'expected'),
-    (
-        (TraitObject({"id_type": "id"}), "id_type", True),
-        (TraitObject({"sample_name": ['samp1']}), "id_type", False),
-        (TraitObject({"sample": ""}), "sample", False),
-        (TraitObject({"group": None}), "group", False),
-        (TraitObject({}), "any", False)
-    ),
-)
-def test_check_if_attr_exists(trait, id_type, expected):
-    """"test check_if_attr_exists"""
-    assert check_if_attr_exists(trait, id_type) == expected
-
-
-def test_get_ncbi_summary_request(mocker):
-    trait = TraitObject({"geneid": "id"})
-    mocker.patch("wqflask.show_trait.show_trait.check_if_attr_exists",
-                 return_value=True)
-    mock_get = mocker.patch(
-        "wqflask.show_trait.show_trait.requests.get",
-        return_value=TraitObject({"content": """{
-          "result":{
-            "id":{
-              "summary":"this is a summary of the geneid"
-            }
-          }
-        }
-        """}))
-    assert get_ncbi_summary(trait) == "this is a summary of the geneid"
-    mock_get.assert_called_once_with(
-        "http://eutils.ncbi.nlm.nih.gov/entrez/"
-        "eutils/esummary.fcgi?db=gene&id="
-        f"{trait.geneid}&retmode=json"
-    )
-    mock_get.side_effect = Exception("an error occurred")
-    assert get_ncbi_summary(trait) == None
-
-
-class TestTraits(unittest.TestCase):
-    def test_hash_num_cases_is_probeset(self):
-        """test for hash num_cases with dataset.type set to Probeset"""
-        create_dataset = TraitObject({"type": "ProbeSet"})
-        create_trait = TraitObject({"dataset": create_dataset})
-        self.assertFalse(has_num_cases(create_trait))
-
-    def test_hash_num_cases_no_probeset(self):
-        """test for hash num cases with dataset.type not Probeset"""
-        create_dataset = TraitObject({"type": "Temp"})
-        construct_data = {
-            "nm1": TraitObject({"num_cases": False}),
-            "nm2": TraitObject({"num_cases": True}),
-            "nm3": TraitObject({"num_cases": False})
-        }
-        construct_data2 = {
-            "nm1": TraitObject({"num_cases": False}),
-            "nm2": TraitObject({"num_cases": False}),
-            "nm3": TraitObject({"num_cases": False})
-        }
-        create_trait = TraitObject(
-            {"dataset": create_dataset, "data": construct_data})
-        create_trait2 = TraitObject(
-            {"dataset": create_dataset, "data": construct_data2})
-
-        results = has_num_cases(create_trait)
-        self.assertTrue(has_num_cases(create_trait))
-        self.assertFalse(has_num_cases(create_trait2))
-
-    def test_get_table_widths(self):
-        """test for getting table widths"""
-        sample_groups = [TraitObject({'se_exists': True, "attributes": ["attr1", "attr2", "attr3"]}
-                                     ), TraitObject(
-            {"se_exists": False, "attributes": ["at1", "at2"]
-             })]
-
-        results_with_numcase = get_table_widths(sample_groups, True)
-        result_no_numcase = get_table_widths(sample_groups, False)
-
-        results_one_sample = get_table_widths(
-            [TraitObject({"se_exists": True, "attributes": []})], True)
-        expected_with_numcase = (450, 645)
-        expected_no_numcase = (450, 644)
-        expected_one_sample = (250, 381)
-        self.assertEqual(results_with_numcase, expected_with_numcase)
-        self.assertEqual(result_no_numcase, expected_no_numcase)
-        self.assertEqual(results_one_sample,
-                         expected_one_sample)
-
-    def test_get_categorical_variables_no_sample_attributes(self):
-        """test for getting categorical variable names with no samples"""
-        trait = TraitObject({})
-        sample_list = TraitObject({"se_exists": True, "attributes": []})
-        self.assertEqual(get_categorical_variables(trait, sample_list), [])
-
-    def test_get_categorical_variables_with_sample_attributes(self):
-        """test for getting categorical variable names with no samples"""
-        this_trait = TraitObject({"data": {
-            "Gene1": TraitObject({"extra_attributes": {"ex1": "ex1value"}}),
-            "Gene2": TraitObject({"extra_attributes": {"ex2": "ex2value"}}),
-            "Gene3": TraitObject({"extra_attributes": {"ex3": "ex3value"}})
-        }})
-        sample_list = TraitObject({"attributes": {
-            "sample_attribute_1": TraitObject({"name": "ex1"}),
-            "sample_attribute_2": TraitObject({"name": "ex2"}),
-            "sample_attribute_3": TraitObject({"name": "ex3"}),
-            "sample_attribute_4": TraitObject({"name": "not_in_extra_attributes"})
-        }})
-        results = get_categorical_variables(this_trait, sample_list)
-        self.assertEqual(
-            ["ex1", "ex2", "ex3", "not_in_extra_attributes"], results)
-
-    def test_get_trait_units(self):
-        """test for getting trait units"""
-        trait = TraitObject(
-            {"description_fmt": "[this is a description] another test [N/A]"})
-        trait_no_unit_type = TraitObject({"description_fmt": ""})
-        results = get_trait_units(trait)
-        results_no_unit = get_trait_units(trait_no_unit_type)
-        self.assertEqual(results, "this is a descriptionN/A")
-        self.assertEqual(results_no_unit, "value")
-
-    @mock.patch("wqflask.show_trait.show_trait.database_connection")
-    def test_get_nearest_marker(self, mock_db):
-        """test for getting nearest marker with non-empty db"""
-        conn = mock.MagicMock()
-        mock_db.return_value.__enter__.return_value = conn
-        with conn.cursor() as cursor:
-            cursor.fetchall.return_value = [
-                ["Geno1", "Geno2"], ["Geno3"]]
-
-            trait = TraitObject({
-                "locus_chr": "test_chr",
-                "locus_mb": "test_mb"
-            })
-            group_name = TraitObject({"name": "group_name"})
-            this_db = TraitObject({"group": group_name})
-            results_with_item_db = get_nearest_marker(trait, this_db)
-            cursor.execute.assert_called_with(
-                "SELECT Geno.Name FROM Geno, GenoXRef, "
-                "GenoFreeze WHERE Geno.Chr = %s "
-                "AND GenoXRef.GenoId = Geno.Id AND "
-                "GenoFreeze.Id = GenoXRef.GenoFreezeId "
-                "AND GenoFreeze.Name = %s "
-                "ORDER BY ABS( Geno.Mb - %s) LIMIT 1",
-                ('test_chr', 'group_nameGeno', 'test_mb'))
-
-            self.assertEqual(results_with_item_db, "Geno1")
-
-    @mock.patch("wqflask.show_trait.show_trait.database_connection")
-    def test_get_nearest_marker_empty_db(self, mock_db):
-        """test for getting nearest marker with empty db"""
-        conn = mock.MagicMock()
-        mock_db.return_value.__enter__.return_value = conn
-        with conn.cursor() as cursor:
-            cursor.fetchall.return_value = []
-            trait = TraitObject({
-                "locus_chr": "test_chr",
-                "locus_mb": "test_mb"
-            })
-            group_name = TraitObject({"name": "group_name"})
-            this_db = TraitObject({"group": group_name})
-            results_empty_db = get_nearest_marker(trait, this_db)
-            cursor.execute.assert_called_once()
-            self.assertEqual(results_empty_db, "")
-
-    @mock.patch("wqflask.show_trait.show_trait.get_scales_from_genofile")
-    def test_get_genotype_scales_with_genofile_is_list(self, mock_get_scales):
-        """test for getting genotype scales with genofile as list """
-        # where genofile is instance of list
-        genofiles_list = [{"filename": "file1", "location": "~/data/files/f1"},
-                          {"filename": "file2", "location": "~/data/files/f2"},
-                          {"filename": "file3", "location": "~/data/files/f3"}]
-
-        mock_get_scales.side_effect = [[["morgan", "cM"]],
-                                       [["morgan", "cM"]],
-                                       [["physic", "Mb"]]]
-
-        results = get_genotype_scales(genofiles_list)
-        expected_results = {
-            "~/data/files/f1": [["morgan", "cM"]],
-            "~/data/files/f2": [["morgan", "cM"]],
-            "~/data/files/f3": [["physic", "Mb"]]
-        }
-
-        multiple_calls = [mock.call('~/data/files/f1'), mock.call('~/data/files/f2'),
-                          mock.call('~/data/files/f3')]
-        mock_get_scales.assert_has_calls(multiple_calls)
-        self.assertEqual(results, expected_results)
-
-    @mock.patch("wqflask.show_trait.show_trait.get_scales_from_genofile")
-    def test_genotype_scales_with_genofile_other(self, mock_get_scales):
-        """test for getting genotype scales with genofile as a string"""
-        file_location = "~/another_file_location"
-        mock_get_scales.return_value = [["physic", "Mb"]]
-        expected_results = {f"{file_location}": [["physic", "Mb"]]}
-        self.assertEqual(get_genotype_scales(file_location), expected_results)
-        mock_get_scales.assert_called_once_with(file_location)
-
-    @mock.patch("wqflask.show_trait.show_trait.locate_ignore_error")
-    def test_get_scales_from_genofile_found(self, mock_ignore_location):
-        """"add test for get scales from genofile where file is found"""
-        mock_ignore_location.return_value = True
-        geno_file = """
-                #sample line    with no  @scales:other\n
-                #sample line     @scales and :separated   by semicolon\n
-                This attempts    to check whether\n
-                """
-
-        geno_file_string = "@line start with  @ and has @scale:morgan"
-
-        file_location = "~/data/file.geno"
-
-        mock_open_geno_file = mock.mock_open(read_data=geno_file)
-        with mock.patch("builtins.open", mock_open_geno_file):
-            results = get_scales_from_genofile(file_location)
-            self.assertEqual(results, [["morgan", "cM"]])
-
-        mock_open_string = mock.mock_open(read_data=geno_file_string)
-
-        with mock.patch("builtins.open", mock_open_string):
-            result2 = get_scales_from_genofile(file_location)
-            self.assertEqual([['morgan', 'cM']], result2)
-
-    @mock.patch("wqflask.show_trait.show_trait.locate_ignore_error")
-    def test_get_scales_from_genofile_not_found(self, mock_location_ignore):
-        mock_location_ignore.return_value = False
-
-        expected_results = [["physic", "Mb"]]
-        results = get_scales_from_genofile("~/data/file")
-        mock_location_ignore.assert_called_once_with("~/data/file", "genotype")
-        self.assertEqual(results, expected_results)