From 1ac30b0b65e3febb438ea372889535268ba81cb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com> Date: Wed, 28 Feb 2018 23:45:46 +0100 Subject: [PATCH] Test util for stripping random values before snapshotting. --- .../snapshots/snap_test_create_report.py | 6 ++++-- tests/mutations/test_create_report.py | 16 +++++++--------- tests/utils.py | 10 ++++++++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/tests/mutations/snapshots/snap_test_create_report.py b/tests/mutations/snapshots/snap_test_create_report.py index 96c83fc..3b98ccd 100644 --- a/tests/mutations/snapshots/snap_test_create_report.py +++ b/tests/mutations/snapshots/snap_test_create_report.py @@ -32,7 +32,8 @@ snapshots['test_full_report 1'] = { 'extra': '{"movies": 1}', 'firstName': 'Winston', 'id': 'QXV0aG9yOjE=', - 'lastName': 'Wolfe' + 'lastName': 'Wolfe', + 'totalReports': 1 }, 'body': 'I visited Tesla factory and talked with Elon Musk.', 'date': '2018-01-01 00:00:00+00:00', @@ -57,7 +58,8 @@ snapshots['test_is_draft 1'] = { 'extra': '{"movies": 1}', 'firstName': 'Winston', 'id': 'QXV0aG9yOjE=', - 'lastName': 'Wolfe' + 'lastName': 'Wolfe', + 'totalReports': 0 }, 'body': 'Niel deGrasse Tyson just visited me...', 'date': '2018-01-03 00:00:00+00:00', diff --git a/tests/mutations/test_create_report.py b/tests/mutations/test_create_report.py index 9552ee2..d09fc27 100644 --- a/tests/mutations/test_create_report.py +++ b/tests/mutations/test_create_report.py @@ -5,7 +5,7 @@ import re from openlobby.core.models import Report from ..dummy import prepare_author -from ..utils import call_api +from ..utils import call_api, strip_value pytestmark = [pytest.mark.django_db, pytest.mark.usefixtures('django_es')] @@ -54,6 +54,7 @@ def test_full_report(client, snapshot): id firstName lastName + totalReports extra } } @@ -81,12 +82,10 @@ def test_full_report(client, snapshot): # published date is set on save, changing between test runs, so we strip it # from snapshot - published = response['data']['createReport']['report']['published'] - response['data']['createReport']['report']['published'] = '__STRIPPED__' + published = strip_value(response, 'data', 'createReport', 'report', 'published') # strip random ID from snapshot and check it - id = response['data']['createReport']['report']['id'] - response['data']['createReport']['report']['id'] = '__STRIPPED__' + id = strip_value(response, 'data', 'createReport', 'report', 'id') assert re.match(r'\w+', id) snapshot.assert_match(response) @@ -155,6 +154,7 @@ def test_is_draft(client, snapshot): id firstName lastName + totalReports extra } } @@ -183,12 +183,10 @@ def test_is_draft(client, snapshot): # published date is set on save, changing between test runs, so we strip it # from snapshot - published = response['data']['createReport']['report']['published'] - response['data']['createReport']['report']['published'] = '__STRIPPED__' + published = strip_value(response, 'data', 'createReport', 'report', 'published') # strip random ID from snapshot and check it - id = response['data']['createReport']['report']['id'] - response['data']['createReport']['report']['id'] = '__STRIPPED__' + id = strip_value(response, 'data', 'createReport', 'report', 'id') assert re.match(r'\w+', id) snapshot.assert_match(response) diff --git a/tests/utils.py b/tests/utils.py index f807f17..2f03456 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -13,3 +13,13 @@ def call_api(client, query, input=None, username=None): res = client.post('/graphql', {'query': query, 'variables': variables}, HTTP_AUTHORIZATION=auth_header) return res.json() + + +def strip_value(data, *path): + element = path[0] + value = data.get(element) + if len(path) == 1: + data[element] = '__STRIPPED__' + return value + else: + return strip_value(value, *path[1:]) -- GitLab