From ed863447cf761e7c2b354479ead76f48ce21efc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Thu, 28 Jul 2016 12:08:40 +0200 Subject: [PATCH] Comment rating: fixed bug where new ratings weren't returned on no-op. --- .../application/modules/nodes/custom/comment.py | 16 ++++++++-------- tests/test_patch.py | 16 ++++++++++------ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pillar/application/modules/nodes/custom/comment.py b/pillar/application/modules/nodes/custom/comment.py index a1009c04..139b39c1 100644 --- a/pillar/application/modules/nodes/custom/comment.py +++ b/pillar/application/modules/nodes/custom/comment.py @@ -82,15 +82,15 @@ def patch_comment(node_id, patch): action = actions[patch['op']] mongo_update = action() - if not mongo_update: - return jsonify({'_status': 'OK', 'result': 'no-op'}) - - log.info('Running %s', mongo_update) - if rating: - result = nodes_coll.update_one({'_id': node_id, 'properties.ratings.user': user_id}, - mongo_update) + if mongo_update: + log.info('Running %s', mongo_update) + if rating: + result = nodes_coll.update_one({'_id': node_id, 'properties.ratings.user': user_id}, + mongo_update) + else: + result = nodes_coll.update_one({'_id': node_id}, mongo_update) else: - result = nodes_coll.update_one({'_id': node_id}, mongo_update) + result = 'no-op' # Fetch the new ratings, so the client can show these without querying again. node = nodes_coll.find_one(node_id, diff --git a/tests/test_patch.py b/tests/test_patch.py index feb2ab76..367ee878 100644 --- a/tests/test_patch.py +++ b/tests/test_patch.py @@ -36,9 +36,11 @@ class PatchCommentTest(AbstractPillarTest): def test_upvote_other_comment(self): # Patch the node - self.patch(self.node_url, - json={'op': 'upvote'}, - auth_token='token') + res = self.patch(self.node_url, + json={'op': 'upvote'}, + auth_token='token').json() + self.assertEqual(1, res['properties']['rating_positive']) + self.assertEqual(0, res['properties']['rating_negative']) # Get the node again, to inspect its changed state. patched_node = self.get(self.node_url, auth_token='token').json() @@ -55,9 +57,11 @@ class PatchCommentTest(AbstractPillarTest): def test_downvote_other_comment(self): # Patch the node - self.patch(self.node_url, - json={'op': 'downvote'}, - auth_token='token').json() + res = self.patch(self.node_url, + json={'op': 'downvote'}, + auth_token='token').json() + self.assertEqual(0, res['properties']['rating_positive']) + self.assertEqual(1, res['properties']['rating_negative']) # Get the node again, to inspect its changed state. patched_node = self.get(self.node_url, auth_token='token').json()