From 6d2d648126b112ca1455c6e1f2d344a4d8d27c1d Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Mon, 2 Nov 2020 11:06:36 +0300
Subject: add tests for show trait module

---
 .../tests/wqflask/show_trait/test_show_trait.py    | 267 +++++++++++++++++++++
 1 file changed, 267 insertions(+)
 create mode 100644 wqflask/tests/wqflask/show_trait/test_show_trait.py

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
new file mode 100644
index 00000000..37eae06e
--- /dev/null
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -0,0 +1,267 @@
+"""test for wqflask/show_trait/test_show_trait.py"""
+
+
+import unittest
+from unittest import mock
+from wqflask import app
+from wqflask.show_trait.show_trait import check_if_attr_exists
+from wqflask.show_trait.show_trait import requests
+
+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
+
+class TraitObject:
+    def __init__(self, obj):
+        for key, value in obj.items():
+            setattr(self, key, value)
+
+
+class TestTraits(unittest.TestCase):
+    def setUp(self):
+        self.app_context = app.app_context()
+        self.app_context.push()
+
+    def tearDown(self):
+        self.app_context.pop()
+
+    def test_check_if_attr_exists_truthy(self):
+        """"test if attributes exists with true return"""
+        trait_obj = TraitObject({"id_type": "id"})
+        trait_obj2 = TraitObject({"sample_name": ['samp1']})
+        results = check_if_attr_exists(trait_obj, "id_type")
+        result2 = check_if_attr_exists(trait_obj2, "sample_name")
+        self.assertIsInstance(trait_obj, TraitObject)
+        self.assertEqual(results, True)
+        self.assertEqual(result2, True)
+
+    def test_check_if_attr_exists_empty_attr(self):
+        """test if attributes exists with empty attributes"""
+        trait_obj = TraitObject({"sample": ""})
+        trait_obj2 = TraitObject({"group": None})
+        result = check_if_attr_exists(trait_obj, "sample")
+        result2 = check_if_attr_exists(trait_obj, "group")
+        self.assertEqual(result, False)
+        self.assertEqual(result2, False)
+
+    def test_check_if_attr_exists_falsey(self):
+        """check if attribute exists with empty attributes"""
+        trait_obj = TraitObject({})
+        results = check_if_attr_exists(trait_obj, "any")
+        self.assertEqual(results, False)
+
+    @mock.patch("wqflask.show_trait.show_trait.requests.get")
+    @mock.patch("wqflask.show_trait.show_trait.check_if_attr_exists")
+    def test_get_ncbi_summary_request_success(self, mock_exists, mock_get):
+        """test for getting ncbi summary with 
+        successful request"""
+        trait = TraitObject({"geneid": "id"})
+        mock_exists.return_value = True
+        content_json_string = """{
+          "result":{
+            "id":{
+              "summary":"this is a summary of the geneid"
+            }
+          }
+        }
+        """
+
+        get_return_obj = TraitObject({"content": content_json_string})
+
+        mock_get.return_value = get_return_obj
+
+        results = get_ncbi_summary(trait)
+        mock_exists.assert_called_once()
+        mock_get.assert_called_once_with(f"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id={trait.geneid}&retmode=json")
+
+        self.assertEqual(results, "this is a summary of the geneid")
+
+    @mock.patch("wqflask.show_trait.show_trait.requests.get")
+    @mock.patch("wqflask.show_trait.show_trait.check_if_attr_exists")
+    def test_get_ncbi_summary_request_fail(self, mock_exists, mock_get_fail):
+        """test for getting ncbi summary with request fail"""
+        trait = TraitObject({"geneid": "id"})
+        mock_exists.return_value = True
+        mock_get_fail.side_effect = Exception("an error occurred")
+        content_json_string = """{
+          "result":{
+            "id":{
+              "summary":"this is a summary of the geneid"
+            }
+          }
+        }
+        """
+
+        results = get_ncbi_summary(trait)
+        self.assertEqual(results, None)
+
+    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.assertEqual(has_num_cases(create_trait), False)
+
+    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.assertEqual(has_num_cases(create_trait), True)
+        self.assertEqual(has_num_cases(create_trait2), False)
+
+    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, "750px")
+        expected_no_numcase = (450, "670px")
+        expected_one_sample = (250, "540px")
+
+        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):
+        pass
+
+    def test_get_trait_units(self):
+        """test for gettting 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.g")
+    def test_get_nearest_marker(self, mock_db):
+        """test for getting nearest marker with non-empty db"""
+
+        mock_db.db.execute.return_value.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)
+
+        called_with_value = """SELECT Geno.Name
+               FROM Geno, GenoXRef, GenoFreeze
+               WHERE Geno.Chr = 'test_chr' AND
+                     GenoXRef.GenoId = Geno.Id AND
+                     GenoFreeze.Id = GenoXRef.GenoFreezeId AND
+                     GenoFreeze.Name = 'group_nameGeno'
+               ORDER BY ABS( Geno.Mb - test_mb) LIMIT 1"""
+
+        mock_db.db.execute.assert_called_with(called_with_value)
+
+        self.assertEqual(results_with_item_db, "Geno1")
+
+    @mock.patch("wqflask.show_trait.show_trait.g")
+    def test_get_nearest_marker_empty_db(self, mock_db):
+        """test for getting nearest marker with empty db"""
+        mock_db.db.execute.return_value.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)
+        mock_db.db.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 strig"""
+        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)
+
+
+
+
+
+
+
+    
-- 
cgit v1.2.3


From 62996d6b521379576992172fdee99468cb0260c9 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Mon, 2 Nov 2020 13:35:59 +0300
Subject: add  function docstring

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index 37eae06e..1b5d2265 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -45,7 +45,7 @@ class TestTraits(unittest.TestCase):
         self.assertEqual(result2, True)
 
     def test_check_if_attr_exists_empty_attr(self):
-        """test if attributes exists with empty attributes"""
+        """test if attributes exists with false return"""
         trait_obj = TraitObject({"sample": ""})
         trait_obj2 = TraitObject({"group": None})
         result = check_if_attr_exists(trait_obj, "sample")
@@ -248,7 +248,7 @@ class TestTraits(unittest.TestCase):
 
     @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 strig"""
+        """test for getting genotype scales with genofile as a string"""
         file_location = "~/another_file_location"
         mock_get_scales.return_value = [["physic","Mb"]]
 
-- 
cgit v1.2.3


From 2883f17236081bc11faf4c4202393998bde0924d Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Mon, 2 Nov 2020 13:50:25 +0300
Subject: add better formatting

---
 .../tests/wqflask/show_trait/test_show_trait.py    | 47 +++++++++-------------
 1 file changed, 20 insertions(+), 27 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index 1b5d2265..408797b9 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -20,6 +20,7 @@ from wqflask.show_trait.show_trait import get_nearest_marker
 
 from wqflask.show_trait.show_trait import get_genotype_scales
 
+
 class TraitObject:
     def __init__(self, obj):
         for key, value in obj.items():
@@ -141,7 +142,7 @@ class TestTraits(unittest.TestCase):
     def test_get_table_widths(self):
         """test for getting table widths"""
         sample_groups = [TraitObject({'se_exists': True, "attributes": ["attr1", "attr2", "attr3"]}
-                                    ), TraitObject(
+                                     ), TraitObject(
             {"se_exists": False, "attributes": ["at1", "at2"]
              })]
 
@@ -221,47 +222,39 @@ class TestTraits(unittest.TestCase):
         mock_db.db.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):
+    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"}]
+        # 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"]]]
+        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"]]
+            "~/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')]
-
+        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)
-
+        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):
+    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"]]
+        mock_get_scales.return_value = [["physic", "Mb"]]
 
-        expected_results = {f"{file_location}":[["physic","Mb"]]}
+        expected_results = {f"{file_location}": [["physic", "Mb"]]}
 
-
-        self.assertEqual(get_genotype_scales(file_location),expected_results)
+        self.assertEqual(get_genotype_scales(file_location), expected_results)
         mock_get_scales.assert_called_once_with(file_location)
-
-
-
-
-
-
-
-    
-- 
cgit v1.2.3


From 251113ee34819afdc3e2abc63d59a01bd6a560cb Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 10:32:36 +0300
Subject: use assertTrue and assertFalse in while testing boolean

---
 .../tests/wqflask/show_trait/test_show_trait.py    | 38 ++++++++--------------
 1 file changed, 13 insertions(+), 25 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index 408797b9..a2ef71dd 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -1,24 +1,12 @@
 """test for wqflask/show_trait/test_show_trait.py"""
 
-
 import unittest
 from unittest import mock
 from wqflask import app
-from wqflask.show_trait.show_trait import check_if_attr_exists
-from wqflask.show_trait.show_trait import requests
-
-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 (check_if_attr_exists, get_ncbi_summary,
+                                           has_num_cases, get_table_widths,
+                                           get_categorical_variables,
+                                           get_trait_units, get_nearest_marker, get_genotype_scales, requests)
 
 
 class TraitObject:
@@ -42,8 +30,8 @@ class TestTraits(unittest.TestCase):
         results = check_if_attr_exists(trait_obj, "id_type")
         result2 = check_if_attr_exists(trait_obj2, "sample_name")
         self.assertIsInstance(trait_obj, TraitObject)
-        self.assertEqual(results, True)
-        self.assertEqual(result2, True)
+        self.assertTrue(results, True)
+        self.assertTrue(result2, True)
 
     def test_check_if_attr_exists_empty_attr(self):
         """test if attributes exists with false return"""
@@ -51,14 +39,14 @@ class TestTraits(unittest.TestCase):
         trait_obj2 = TraitObject({"group": None})
         result = check_if_attr_exists(trait_obj, "sample")
         result2 = check_if_attr_exists(trait_obj, "group")
-        self.assertEqual(result, False)
-        self.assertEqual(result2, False)
+        self.assertFalse(result, False)
+        self.assertFalse(result2, False)
 
     def test_check_if_attr_exists_falsey(self):
         """check if attribute exists with empty attributes"""
         trait_obj = TraitObject({})
         results = check_if_attr_exists(trait_obj, "any")
-        self.assertEqual(results, False)
+        self.assertFalse(results, False)
 
     @mock.patch("wqflask.show_trait.show_trait.requests.get")
     @mock.patch("wqflask.show_trait.show_trait.check_if_attr_exists")
@@ -110,7 +98,7 @@ class TestTraits(unittest.TestCase):
         create_dataset = TraitObject({"type": "ProbeSet"})
         create_trait = TraitObject({"dataset": create_dataset})
 
-        self.assertEqual(has_num_cases(create_trait), False)
+        self.assertFalse(has_num_cases(create_trait), False)
 
     def test_hash_num_cases_no_probeset(self):
         """test for hash num cases with dataset.type not Probeset"""
@@ -136,8 +124,8 @@ class TestTraits(unittest.TestCase):
 
         results = has_num_cases(create_trait)
 
-        self.assertEqual(has_num_cases(create_trait), True)
-        self.assertEqual(has_num_cases(create_trait2), False)
+        self.assertTrue(has_num_cases(create_trait), True)
+        self.assertFalse(has_num_cases(create_trait2), False)
 
     def test_get_table_widths(self):
         """test for getting table widths"""
@@ -171,7 +159,7 @@ class TestTraits(unittest.TestCase):
         pass
 
     def test_get_trait_units(self):
-        """test for gettting trait units"""
+        """test for getting trait units"""
         trait = TraitObject(
             {"description_fmt": "[this is a description] another test [N/A]"})
 
-- 
cgit v1.2.3


From ef0c9bb30523b32decc163dcb62c125e7ba5a076 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 16:50:23 +0300
Subject: switch from assertTrue/False to assertIs to make the tests tighter

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index a2ef71dd..f666912b 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -1,5 +1,4 @@
 """test for wqflask/show_trait/test_show_trait.py"""
-
 import unittest
 from unittest import mock
 from wqflask import app
@@ -30,8 +29,9 @@ class TestTraits(unittest.TestCase):
         results = check_if_attr_exists(trait_obj, "id_type")
         result2 = check_if_attr_exists(trait_obj2, "sample_name")
         self.assertIsInstance(trait_obj, TraitObject)
-        self.assertTrue(results, True)
-        self.assertTrue(result2, True)
+        self.assertIs(results, True)
+        self.assertIs(result2, True)
+        
 
     def test_check_if_attr_exists_empty_attr(self):
         """test if attributes exists with false return"""
@@ -39,14 +39,14 @@ class TestTraits(unittest.TestCase):
         trait_obj2 = TraitObject({"group": None})
         result = check_if_attr_exists(trait_obj, "sample")
         result2 = check_if_attr_exists(trait_obj, "group")
-        self.assertFalse(result, False)
-        self.assertFalse(result2, False)
+        self.assertIs(result, False)
+        self.assertIs(result2, False)
 
     def test_check_if_attr_exists_falsey(self):
         """check if attribute exists with empty attributes"""
         trait_obj = TraitObject({})
         results = check_if_attr_exists(trait_obj, "any")
-        self.assertFalse(results, False)
+        self.assertIs(results, False)
 
     @mock.patch("wqflask.show_trait.show_trait.requests.get")
     @mock.patch("wqflask.show_trait.show_trait.check_if_attr_exists")
@@ -124,8 +124,8 @@ class TestTraits(unittest.TestCase):
 
         results = has_num_cases(create_trait)
 
-        self.assertTrue(has_num_cases(create_trait), True)
-        self.assertFalse(has_num_cases(create_trait2), False)
+        self.assertIs(has_num_cases(create_trait), True)
+        self.assertIs(has_num_cases(create_trait2), False)
 
     def test_get_table_widths(self):
         """test for getting table widths"""
-- 
cgit v1.2.3


From 7da9a5206800d305f97b025e180300ca451ac92d Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 17:08:05 +0300
Subject: switch from assertFalse to assertIs

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index f666912b..ec45d558 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -31,7 +31,6 @@ class TestTraits(unittest.TestCase):
         self.assertIsInstance(trait_obj, TraitObject)
         self.assertIs(results, True)
         self.assertIs(result2, True)
-        
 
     def test_check_if_attr_exists_empty_attr(self):
         """test if attributes exists with false return"""
@@ -98,7 +97,7 @@ class TestTraits(unittest.TestCase):
         create_dataset = TraitObject({"type": "ProbeSet"})
         create_trait = TraitObject({"dataset": create_dataset})
 
-        self.assertFalse(has_num_cases(create_trait), False)
+        self.assertIs(has_num_cases(create_trait), False)
 
     def test_hash_num_cases_no_probeset(self):
         """test for hash num cases with dataset.type not Probeset"""
-- 
cgit v1.2.3


From 4b6d964ccf484225f568361b3bc6136a758cd475 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 20:15:39 +0300
Subject: add tests for the get_categorical_variables function

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index ec45d558..f7133292 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -155,7 +155,22 @@ class TestTraits(unittest.TestCase):
         self.assertEqual(get_categorical_variables(trait, sample_list), [])
 
     def test_get_categorical_variables_with_sample_attributes(self):
-        pass
+        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"""
-- 
cgit v1.2.3


From 68f71e11343789266ccac6e079dd0bc1b16d407f Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 20:23:19 +0300
Subject: add pep8 formatting

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index f7133292..f41b7288 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -155,6 +155,7 @@ class TestTraits(unittest.TestCase):
         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"}}),
@@ -169,6 +170,8 @@ class TestTraits(unittest.TestCase):
 
             }})
 
+        #
+
         results=get_categorical_variables(this_trait,sample_list)
         self.assertEqual(["ex1","ex2","ex3","not_in_extra_attributes"],results)
 
-- 
cgit v1.2.3


From 8630b727d80f52b3e846c9eb3bf7dd4e844fa626 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Tue, 3 Nov 2020 20:34:00 +0300
Subject: remove unnecessary comments

---
 .../tests/wqflask/show_trait/test_show_trait.py    | 35 +++++++++++-----------
 1 file changed, 17 insertions(+), 18 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index f41b7288..c617e9f2 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -156,24 +156,23 @@ class TestTraits(unittest.TestCase):
 
     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)
+        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"""
-- 
cgit v1.2.3


From 23915d8102b8a05930cf3fd16d651a460ebd2f58 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Wed, 4 Nov 2020 09:49:13 +0300
Subject: remove whitespace and assertIs

---
 .../tests/wqflask/show_trait/test_show_trait.py    | 30 ++++++++++++----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index c617e9f2..04c68045 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -2,11 +2,15 @@
 import unittest
 from unittest import mock
 from wqflask import app
-from wqflask.show_trait.show_trait import (check_if_attr_exists, get_ncbi_summary,
-                                           has_num_cases, get_table_widths,
-                                           get_categorical_variables,
-                                           get_trait_units, get_nearest_marker, get_genotype_scales, requests)
-
+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 requests
 
 class TraitObject:
     def __init__(self, obj):
@@ -29,8 +33,8 @@ class TestTraits(unittest.TestCase):
         results = check_if_attr_exists(trait_obj, "id_type")
         result2 = check_if_attr_exists(trait_obj2, "sample_name")
         self.assertIsInstance(trait_obj, TraitObject)
-        self.assertIs(results, True)
-        self.assertIs(result2, True)
+        self.assertTrue(results)
+        self.assertTrue(result2)
 
     def test_check_if_attr_exists_empty_attr(self):
         """test if attributes exists with false return"""
@@ -38,14 +42,14 @@ class TestTraits(unittest.TestCase):
         trait_obj2 = TraitObject({"group": None})
         result = check_if_attr_exists(trait_obj, "sample")
         result2 = check_if_attr_exists(trait_obj, "group")
-        self.assertIs(result, False)
-        self.assertIs(result2, False)
+        self.assertFalse(result)
+        self.assertFalse(result2)
 
     def test_check_if_attr_exists_falsey(self):
         """check if attribute exists with empty attributes"""
         trait_obj = TraitObject({})
         results = check_if_attr_exists(trait_obj, "any")
-        self.assertIs(results, False)
+        self.assertFalse(results)
 
     @mock.patch("wqflask.show_trait.show_trait.requests.get")
     @mock.patch("wqflask.show_trait.show_trait.check_if_attr_exists")
@@ -97,7 +101,7 @@ class TestTraits(unittest.TestCase):
         create_dataset = TraitObject({"type": "ProbeSet"})
         create_trait = TraitObject({"dataset": create_dataset})
 
-        self.assertIs(has_num_cases(create_trait), False)
+        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"""
@@ -123,8 +127,8 @@ class TestTraits(unittest.TestCase):
 
         results = has_num_cases(create_trait)
 
-        self.assertIs(has_num_cases(create_trait), True)
-        self.assertIs(has_num_cases(create_trait2), False)
+        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"""
-- 
cgit v1.2.3


From 9d2134202c0435ad4a18e0ac74ce4a99508f1a76 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Wed, 4 Nov 2020 09:57:35 +0300
Subject: remove whitespace

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index 04c68045..f82a4c04 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -3,7 +3,7 @@ import unittest
 from unittest import mock
 from wqflask import app
 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 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
@@ -12,6 +12,7 @@ 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 requests
 
+
 class TraitObject:
     def __init__(self, obj):
         for key, value in obj.items():
@@ -169,9 +170,7 @@ class TestTraits(unittest.TestCase):
             "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"}),
-
-
+            "sample_attribute_4": TraitObject({"name": "not_in_extra_attributes"})
         }})
 
         results = get_categorical_variables(this_trait, sample_list)
-- 
cgit v1.2.3


From 1ef7c3cd7bc148bac8a6b47f62ba02c3819bf1f3 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Wed, 4 Nov 2020 10:08:32 +0300
Subject: remove whitespace in line 119-120

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index f82a4c04..70061e2d 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -117,8 +117,6 @@ class TestTraits(unittest.TestCase):
             "nm1": TraitObject({"num_cases": False}),
             "nm2": TraitObject({"num_cases": False}),
             "nm3": TraitObject({"num_cases": False})
-
-
         }
 
         create_trait = TraitObject(
-- 
cgit v1.2.3


From f90e77fab78c4504ac9dabb188459ab5d03ac287 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Wed, 4 Nov 2020 10:15:05 +0300
Subject: remove extra whitespace

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 21 ---------------------
 1 file changed, 21 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index 70061e2d..ce850c8b 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -67,11 +67,8 @@ class TestTraits(unittest.TestCase):
           }
         }
         """
-
         get_return_obj = TraitObject({"content": content_json_string})
-
         mock_get.return_value = get_return_obj
-
         results = get_ncbi_summary(trait)
         mock_exists.assert_called_once()
         mock_get.assert_called_once_with(f"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gene&id={trait.geneid}&retmode=json")
@@ -93,7 +90,6 @@ class TestTraits(unittest.TestCase):
           }
         }
         """
-
         results = get_ncbi_summary(trait)
         self.assertEqual(results, None)
 
@@ -101,13 +97,11 @@ class TestTraits(unittest.TestCase):
         """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}),
@@ -125,7 +119,6 @@ class TestTraits(unittest.TestCase):
             {"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))
 
@@ -144,7 +137,6 @@ class TestTraits(unittest.TestCase):
         expected_with_numcase = (450, "750px")
         expected_no_numcase = (450, "670px")
         expected_one_sample = (250, "540px")
-
         self.assertEqual(results_with_numcase, expected_with_numcase)
         self.assertEqual(result_no_numcase, expected_no_numcase)
         self.assertEqual(results_one_sample,
@@ -154,7 +146,6 @@ class TestTraits(unittest.TestCase):
         """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):
@@ -179,9 +170,7 @@ class TestTraits(unittest.TestCase):
         """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")
@@ -195,13 +184,9 @@ class TestTraits(unittest.TestCase):
             ["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)
-
         called_with_value = """SELECT Geno.Name
                FROM Geno, GenoXRef, GenoFreeze
                WHERE Geno.Chr = 'test_chr' AND
@@ -218,11 +203,9 @@ class TestTraits(unittest.TestCase):
     def test_get_nearest_marker_empty_db(self, mock_db):
         """test for getting nearest marker with empty db"""
         mock_db.db.execute.return_value.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)
         mock_db.db.execute.assert_called_once()
         self.assertEqual(results_empty_db, "")
@@ -240,7 +223,6 @@ class TestTraits(unittest.TestCase):
                                        [["physic", "Mb"]]]
 
         results = get_genotype_scales(genofiles_list)
-
         expected_results = {
             "~/data/files/f1": [["morgan", "cM"]],
             "~/data/files/f2": [["morgan", "cM"]],
@@ -249,7 +231,6 @@ class TestTraits(unittest.TestCase):
 
         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)
 
@@ -258,8 +239,6 @@ class TestTraits(unittest.TestCase):
         """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)
-- 
cgit v1.2.3


From 3f08f54fe3d42eca0ccf98831e4e339defa17720 Mon Sep 17 00:00:00 2001
From: Alexanderlacuna
Date: Wed, 4 Nov 2020 10:25:50 +0300
Subject: correct a typo

---
 wqflask/tests/wqflask/show_trait/test_show_trait.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/wqflask/tests/wqflask/show_trait/test_show_trait.py b/wqflask/tests/wqflask/show_trait/test_show_trait.py
index ce850c8b..24150738 100644
--- a/wqflask/tests/wqflask/show_trait/test_show_trait.py
+++ b/wqflask/tests/wqflask/show_trait/test_show_trait.py
@@ -112,7 +112,6 @@ class TestTraits(unittest.TestCase):
             "nm2": TraitObject({"num_cases": False}),
             "nm3": TraitObject({"num_cases": False})
         }
-
         create_trait = TraitObject(
             {"dataset": create_dataset, "data": construct_data})
         create_trait2 = TraitObject(
@@ -161,7 +160,6 @@ class TestTraits(unittest.TestCase):
             "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)
-- 
cgit v1.2.3