about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorBonfaceKilz2021-03-01 11:47:21 +0300
committerBonfaceKilz2021-03-08 21:09:58 +0300
commit52e3569cca6b24d1318034f5ab004795e70135f5 (patch)
tree8d65ba9802bc617b6b6936248aea426b1c5df3bd /tests
parentb9d9ece5da00828fbe8c9984c8c43fd1659faeb9 (diff)
downloadgenenetwork3-52e3569cca6b24d1318034f5ab004795e70135f5.tar.gz
Fix failing tests
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/test_gemma.py69
-rw-r--r--tests/unit/computations/test_gemma.py1
2 files changed, 63 insertions, 7 deletions
diff --git a/tests/integration/test_gemma.py b/tests/integration/test_gemma.py
index 598c91f..1f59530 100644
--- a/tests/integration/test_gemma.py
+++ b/tests/integration/test_gemma.py
@@ -1,4 +1,5 @@
 """Integration tests for gemma API endpoints"""
+import os
 import unittest
 
 from dataclasses import dataclass
@@ -17,7 +18,14 @@ class MockRedis:
 class GemmaAPITest(unittest.TestCase):
     """Test cases for the Gemma API"""
     def setUp(self):
-        self.app = create_app().test_client()
+        self.app = create_app({
+            "APP_DEFAULTS": {
+                "GENODIR": os.path.abspath(
+                    os.path.join(os.path.dirname(__file__),
+                                 "test_data/")),
+                "TMPDIR": "/tmp",
+                "REDIS_JOB_QUEUE": "GN3::job-queue",
+                "GEMMA_WRAPPER_CMD": "gemma-wrapper"}}).test_client()
 
     @mock.patch("gn3.api.gemma.run_cmd")
     def test_get_version(self, mock_run_cmd):
@@ -31,9 +39,9 @@ class GemmaAPITest(unittest.TestCase):
     @mock.patch("gn3.api.gemma.redis.Redis")
     @mock.patch("gn3.api.gemma.queue_cmd")
     @mock.patch("gn3.api.gemma.generate_gemma_computation_cmd")
-    def test_run_gemma(self, mock_gemma_computation_cmd,
-                       mock_queue_cmd, mock_redis):
-        """Test that gemma composes the command correctly"""
+    def test_run_gemma_no_loco(self, mock_gemma_computation_cmd,
+                               mock_queue_cmd, mock_redis):
+        """Test that gemma composes the command correctly without loco"""
         _redis_conn = MockRedis(redis=mock.MagicMock(), hget=mock.MagicMock())
         mock_redis.return_value = _redis_conn
         mock_gemma_computation_cmd.side_effect = [
@@ -42,7 +50,9 @@ class GemmaAPITest(unittest.TestCase):
              "test.txt -a genofile_snps.txt "
              "-gk > /tmp/gn2/"
              "bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt"),
-            ("gemma-wrapper --json -- "
+            ("gemma-wrapper --json --input /tmp/gn2/"
+             "bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt -- "
+             "-a genofile_snps.txt -lmm 9 "
              "-g genofile.txt -p "
              "test.txt -a genofile_snps.txt "
              "-gk > /tmp/gn2/"
@@ -66,7 +76,9 @@ class GemmaAPITest(unittest.TestCase):
                             "genofile.txt -p test.txt "
                             "-a genofile_snps.txt -gk > "
                             "/tmp/gn2/bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt "
-                            "&& gemma-wrapper --json -- -g "
+                            "&& gemma-wrapper --json --input "
+                            "/tmp/gn2/bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt"
+                            " -- -a genofile_snps.txt -lmm 9 -g "
                             "genofile.txt -p test.txt "
                             "-a genofile_snps.txt "
                             "-gk > "
@@ -78,7 +90,50 @@ class GemmaAPITest(unittest.TestCase):
             response.get_json(),
             {"unique_id": 'my-unique-id',
              "status": "queued",
-             "output_file": "BXD_GWA_9lo8zwOOXbfB73EcyXxAYQ.txt"})
+             "output_file": "BXD_GWA_WzxVcfhKAn4fJnSWpsBq0g.txt"})
+
+    @mock.patch("gn3.api.gemma.redis.Redis")
+    @mock.patch("gn3.api.gemma.queue_cmd")
+    def test_run_gemma_with_loco(self,
+                                 mock_queue_cmd, mock_redis):
+        """Test that gemma composes the command correctly with loco"""
+        _redis_conn = MockRedis(redis=mock.MagicMock(), hget=mock.MagicMock())
+        mock_redis.return_value = _redis_conn
+        mock_queue_cmd.return_value = "my-unique-id"
+        response = self.app.post("/gemma/k-gwa-computation", json={
+            "trait_filename": os.path.abspath(os.path.join(
+                os.path.dirname(__file__),
+                "test_data/"
+            )),
+            "geno_filename": "BXD_geno.txt.gz",
+            "values": ["X", "N/A", "X"],
+            "dataset_groupname": "BXD",
+            "trait_name": "Height",
+            "email": "me@me.com",
+            "dataset_name": "BXD",
+            "loco": "1,2,3,4,5,6"
+        })
+        mock_queue_cmd.called_with(
+            conn=_redis_conn,
+            email="me@me.com",
+            job_queue="GN3::job-queue",
+            cmd=("gemma-wrapper --json -- -g "
+                 "genofile.txt -p test.txt "
+                 "-a genofile_snps.txt -gk > "
+                 "/tmp/gn2/bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt "
+                 "&& gemma-wrapper --json --input "
+                 "/tmp/gn2/bxd_K_gUFhGu4rLG7k+CXLPk1OUg.txt"
+                 " -- -a genofile_snps.txt -lmm 9 -g "
+                 "genofile.txt -p test.txt "
+                 "-a genofile_snps.txt "
+                 "-gk > "
+                 "/tmp/gn2/"
+                 "bxd_GWA_gUFhGu4rLG7k+CXLPk1OUg.txt"))
+        self.assertEqual(
+            response.get_json(),
+            {"unique_id": 'my-unique-id',
+             "status": "queued",
+             "output_file": "BXD_GWA_WzxVcfhKAn4fJnSWpsBq0g.txt"})
 
     @mock.patch("gn3.api.gemma.redis.Redis")
     def test_check_cmd_status(self, mock_redis):
diff --git a/tests/unit/computations/test_gemma.py b/tests/unit/computations/test_gemma.py
index a7884ea..b5ffbfd 100644
--- a/tests/unit/computations/test_gemma.py
+++ b/tests/unit/computations/test_gemma.py
@@ -38,6 +38,7 @@ class TestGemma(unittest.TestCase):
         self.assertEqual(
             generate_gemma_computation_cmd(
                 gemma_cmd="gemma-wrapper",
+                gemma_wrapper_kwargs=None,
                 gemma_kwargs={
                     "geno_filename": "genofile.txt",
                     "trait_filename": "test.txt",