aboutsummaryrefslogtreecommitdiff
path: root/tests/integration/test_traits.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/test_traits.py')
-rw-r--r--tests/integration/test_traits.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/integration/test_traits.py b/tests/integration/test_traits.py
new file mode 100644
index 0000000..410ba22
--- /dev/null
+++ b/tests/integration/test_traits.py
@@ -0,0 +1,72 @@
+"""module contains integration tests for trait endpoints"""
+from unittest import TestCase
+from unittest import mock
+
+from gn3.app import create_app
+
+
+class TraitIntegrationTest(TestCase):
+ """class contains integration tests for\
+ traits"""
+
+ def setUp(self):
+ self.app = create_app().test_client()
+
+ @mock.patch("gn3.api.traits.fetch_trait")
+ @mock.patch("gn3.api.traits.database_connector")
+ def test_create_trait(self, mock_database, mock_fetch_trait):
+ """test the endpoint for creating traits\
+ endpoint requires trait name and dataset name"""
+ mock_database.return_value = (mock.Mock(), mock.Mock())
+ trait_results = {
+ "dataset": None,
+ "trait_name": "1449593_at",
+ "trait_data": {
+ "BXD11": 8.464,
+ "BXD12": 8.414,
+ "BXD13": 8.753,
+ "BXD15": 8.5,
+ "BXD16": 8.832
+ }
+
+ }
+ mock_fetch_trait.return_value = trait_results
+
+ results = self.app.get(
+ "/api/trait/1449593_at/HC_M2_0606_P", follow_redirects=True)
+
+ trait_data = results.get_json()
+
+ self.assertEqual(mock_database.call_count, 1)
+ self.assertEqual(results.status_code, 200)
+ self.assertEqual(trait_data, trait_results)
+
+ @mock.patch("gn3.api.traits.get_trait_info_data")
+ def test_retrieve_trait_info(self, mock_get_trait_info):
+ """integration test for endpoints for retrieving\
+ trait info expects the dataset of trait to have been
+ created"""
+
+ trait_post_data = {
+ "trait": {"trait_name": ""},
+ "trait_dataset": {"dataset_name": ""}
+ }
+
+ expected_api_results = {
+ "description": "trait description",
+ "chr": "",
+ "locus": "",
+ "mb": "",
+ "abbreviation": "trait_abbreviation",
+ "trait_display_name": "trait_name"
+
+ }
+ mock_get_trait_info.return_value = expected_api_results
+
+ trait_info = self.app.post(
+ "/api/trait/trait_info/144_at", json=trait_post_data, follow_redirects=True)
+
+ trait_info_results = trait_info.get_json()
+
+ self.assertEqual(trait_info.status_code, 200)
+ self.assertEqual(trait_info_results, expected_api_results)