From c3ab176fbefeae78f8fff07709e51e93663c1e05 Mon Sep 17 00:00:00 2001 From: Graham Lee Date: Mon, 20 Jun 2022 16:09:35 +0100 Subject: [PATCH] Mongo Store correctly uses data model #2714 --- .../reusable_data_service/stores/mongo_store.py | 10 +++++++--- .../tests/test_case_end_to_end.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/data-serving/reusable-data-service/reusable_data_service/stores/mongo_store.py b/data-serving/reusable-data-service/reusable_data_service/stores/mongo_store.py index 2f71ed4c5..3e8f99d32 100644 --- a/data-serving/reusable-data-service/reusable_data_service/stores/mongo_store.py +++ b/data-serving/reusable-data-service/reusable_data_service/stores/mongo_store.py @@ -1,5 +1,6 @@ import os import pymongo +from reusable_data_service.model.case import Case from json import loads from bson.errors import InvalidId from bson.json_util import dumps @@ -28,14 +29,17 @@ def get_case_collection(self): def case_by_id(self, id: str): try: case = self.get_case_collection().find_one({"_id": ObjectId(id)}) - # case includes BSON fields like ObjectID - convert into JSON for use by the app - return loads(dumps(case)) + if case is not None: + # case includes BSON fields like ObjectID - convert into JSON for use by the app + return Case.from_json(dumps(case)) + else: + return None except InvalidId: return None def all_cases(self): cases = self.get_case_collection().find({}) - return loads(dumps(cases)) + return [Case.from_json(dumps(c)) for c in cases] @staticmethod def setup(): diff --git a/data-serving/reusable-data-service/tests/test_case_end_to_end.py b/data-serving/reusable-data-service/tests/test_case_end_to_end.py index 2caf05455..c7d4a6bd9 100644 --- a/data-serving/reusable-data-service/tests/test_case_end_to_end.py +++ b/data-serving/reusable-data-service/tests/test_case_end_to_end.py @@ -38,7 +38,7 @@ def test_get_case_with_known_id(client_with_patched_mongo): result = response.get_json() assert response.status_code == 200 assert result is not None - assert result["confirmation_date"] == "2021-12-31T01:23:45.678Z" + assert result["confirmation_date"] == "Fri, 31 Dec 2021 00:00:00 GMT" def test_get_case_with_poorly_formatted_id(client_with_patched_mongo):