From 1fb56ff33f3a3bb635b5fabe0c4d502caa8c2d84 Mon Sep 17 00:00:00 2001 From: grobolom Date: Wed, 14 Jun 2017 18:24:10 -0400 Subject: [PATCH] Add tests, some better output, pytest and mock requirements --- scrounger/app/db/helpers.py | 2 + scrounger/app/scrounger.py | 4 +- scrounger/app/tests/test_graphql.py | 85 +++++++++++++++++++++++++++++ scrounger/requirements-dev.txt | 5 ++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 scrounger/app/tests/test_graphql.py create mode 100644 scrounger/requirements-dev.txt diff --git a/scrounger/app/db/helpers.py b/scrounger/app/db/helpers.py index 938027c..2028cca 100644 --- a/scrounger/app/db/helpers.py +++ b/scrounger/app/db/helpers.py @@ -32,6 +32,8 @@ def save_new_prs(new_prs): db.session.commit() + return len(new_prs.values()) + def get_new_prs(url, headers): new_prs = {} diff --git a/scrounger/app/scrounger.py b/scrounger/app/scrounger.py index a5550d5..792c50a 100644 --- a/scrounger/app/scrounger.py +++ b/scrounger/app/scrounger.py @@ -69,9 +69,9 @@ def update(): new_prs = get_new_prs(url, headers) drop_existing_prs() - save_new_prs(new_prs) + total = save_new_prs(new_prs) - return 'success' + return 'updated {} prs'.format(total) , 200 @app.route('/healthcheck') diff --git a/scrounger/app/tests/test_graphql.py b/scrounger/app/tests/test_graphql.py new file mode 100644 index 0000000..2da352e --- /dev/null +++ b/scrounger/app/tests/test_graphql.py @@ -0,0 +1,85 @@ +import json + +from app.graphql import flatten_response + +GRAPHQL_RESPONSE = """ +{ + "data": { + "organization" : { + "repositories": { + "nodes": [ + { + "name": "some-repo", + "pullRequests" : { + "nodes": [ + { + "title": "some-title", + "updatedAt": "some-timestamp", + "url": "some-url", + "author": { + "login": "some-login", + "avatarUrl": "some-avatar-url" + }, + "assignees": { + "nodes": [ + { + "login": "some-other-login", + "avatarUrl": "some-other-avatar-url" + } + ] + }, + "reviewRequests": { + "nodes": [ + { + "login": "some-third-login", + "avatarUrl": "some-third-avatar-url" + } + ] + }, + "labels": { + "nodes": [ + { + "name": "some-label" + }, + { + "name": "some-other-label" + } + ] + } + } + ] + } + } + ] + } + } + } +} +""" + +EXPECTED_RESULT = { + "some-title": { + "title": "some-title", + "repo_name": "some-repo", + "updated_at": "some-timestamp", + "html_url": "some-url", + "user": { + "login": "some-login", + "avatar_url": "some-avatar-url", + }, + "labels": [ + { "name": "some-label" }, + { "name": "some-other-label" } + ], + "assignees": [ + { + "login": "some-other-login", + "avatar_url": "some-other-avatar-url", + }, + ], + }, +} + +def test_flatten_response(): + response = json.loads(GRAPHQL_RESPONSE) + assert flatten_response(response) == EXPECTED_RESULT diff --git a/scrounger/requirements-dev.txt b/scrounger/requirements-dev.txt new file mode 100644 index 0000000..8483521 --- /dev/null +++ b/scrounger/requirements-dev.txt @@ -0,0 +1,5 @@ +-r requirements.txt + +mock +pytest +pytest-watch