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