From c6e15534d913874f6e7d10fb38d78ebfbca1a5f1 Mon Sep 17 00:00:00 2001 From: dhakim87 Date: Fri, 13 Nov 2020 16:45:22 -0800 Subject: [PATCH] Defaulted emails to empty list rather than None, added unit test exercising new route with no project, a valid project, and an invalid project --- microsetta_private_api/admin/admin_impl.py | 2 +- .../admin/tests/test_admin_api.py | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/microsetta_private_api/admin/admin_impl.py b/microsetta_private_api/admin/admin_impl.py index 7f5255b5..739258eb 100644 --- a/microsetta_private_api/admin/admin_impl.py +++ b/microsetta_private_api/admin/admin_impl.py @@ -307,7 +307,7 @@ def get_daklapack_articles(token_info): def query_email_stats(body, token_info): validate_admin_access(token_info) - email_list = body.get("emails") + email_list = body.get("emails", []) project = body.get("project") results = [] diff --git a/microsetta_private_api/admin/tests/test_admin_api.py b/microsetta_private_api/admin/tests/test_admin_api.py index 8a44237f..98ae90ef 100644 --- a/microsetta_private_api/admin/tests/test_admin_api.py +++ b/microsetta_private_api/admin/tests/test_admin_api.py @@ -716,6 +716,34 @@ def test_get_daklapack_articles(self): self.assertEqual(len(article_dicts_list), len(response_obj)) self.assertEqual(FIRST_DAKLAPACK_ARTICLE, response_obj[0]) + def test_email_stats(self): + with Transaction() as t: + accts = AccountRepo(t) + acct1 = accts.get_account("65dcd6c8-69fa-4de8-a33a-3de4957a0c79") + acct2 = accts.get_account("556f5dc4-8cf2-49ae-876c-32fbdfb005dd") + + # execute articles get + for project in [None, "American Gut Project", "NotAProj"]: + response = self.client.post( + "/api/admin/account_email_summary", + headers=MOCK_HEADERS, + content_type='application/json', + data=json.dumps({ + "emails": [acct1.email, acct2.email], + "project": project + }) + ) + self.assertEqual(200, response.status_code) + result = json.loads(response.data) + self.assertEqual(result[0]["account_id"], + "65dcd6c8-69fa-4de8-a33a-3de4957a0c79") + self.assertEqual(result[1]["account_id"], + "556f5dc4-8cf2-49ae-876c-32fbdfb005dd") + if project is None or project == "American Gut Project": + self.assertEqual(result[0]["sample-is-valid"], 1) + else: + self.assertEqual(result[0].get("sample-is-valid", 0), 0) + def test_metadata_qiita_compatible_invalid(self): data = json.dumps({'sample_barcodes': ['bad']}) response = self.client.post('/api/admin/metadata/qiita-compatible',