Skip to content

Commit a9b3220

Browse files
committed
test for expiresAt
1 parent 192946c commit a9b3220

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

delta_backend/tests/test_convert.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import json
2+
import os
23
import unittest
34
from copy import deepcopy
5+
from datetime import datetime
46
from unittest.mock import patch, Mock
57
from moto import mock_aws
68
from boto3 import resource as boto3_resource
@@ -83,18 +85,23 @@ def get_event(event_name=EventName.CREATE, operation="operation", supplier="EMIS
8385
def assert_dynamodb_record(self, operation_flag, action_flag, items, expected_values, expected_imms, response):
8486
"""
8587
Asserts that a record with the expected structure exists in DynamoDB.
86-
Ignores dynamically generated fields like PK, DateTimeStamp, and ExpiresAt.
88+
Ignores the dynamically generated field PK.
8789
Ensures that the 'Imms' field matches exactly.
90+
Ensures that the ExpiresAt field has been calculated correctly.
8891
"""
8992
self.assertTrue(response)
9093

91-
filtered_items = [
92-
{k: v for k, v in item.items() if k not in ["PK", "DateTimeStamp", "ExpiresAt"]}
94+
unfiltered_items = [
95+
{k: v for k, v in item.items()}
9396
for item in items
9497
if item.get("Operation") == operation_flag
9598
and item.get("Imms", {}).get("ACTION_FLAG") == action_flag
9699
]
97100

101+
filtered_items = [
102+
{k: v for k, v in item.items() if k not in ["PK", "DateTimeStamp", "ExpiresAt"]}
103+
for item in unfiltered_items
104+
]
98105
self.assertGreater(len(filtered_items), 0, f"No matching item found for {operation_flag}")
99106

100107
imms_data = filtered_items[0]["Imms"]
@@ -108,6 +115,12 @@ def assert_dynamodb_record(self, operation_flag, action_flag, items, expected_va
108115
self.assertIn(key, filtered_items[0], f"{key} is missing")
109116
self.assertEqual(filtered_items[0][key], expected_value, f"{key} mismatch")
110117

118+
# Check that the value of ExpiresAt is DELTA_TTL days after DateTimeStamp
119+
expected_seconds = int(os.environ["DELTA_TTL"]) * 24 * 60 * 60
120+
date_time = int(datetime.fromisoformat(unfiltered_items[0]["DateTimeStamp"]).timestamp())
121+
expires_at = unfiltered_items[0]["ExpiresAt"]
122+
self.assertEqual(expires_at - date_time, expected_seconds)
123+
111124
def test_fhir_converter_json_direct_data(self):
112125
"""it should convert fhir json data to flat json"""
113126
json_data = json.dumps(ValuesForTests.json_data)

0 commit comments

Comments
 (0)