@@ -127,7 +127,7 @@ def assert_dynamodb_record(self, operation_flag, items, expected_values, expecte
127127 for key , expected_value in expected_values .items ():
128128 self .assertIn (key , filtered_items [0 ], f"{ key } is missing" )
129129 self .assertEqual (filtered_items [0 ][key ], expected_value , f"{ key } mismatch" )
130-
130+
131131 def test_fhir_converter_json_direct_data (self ):
132132 """it should convert fhir json data to flat json"""
133133 imms .clear ()
@@ -280,7 +280,7 @@ def test_conversion_checker_exception(self, mock_conversion_checker):
280280 converter .getErrorRecords ()[0 ]["message" ],
281281 )
282282 self .assertEqual (converter .getErrorRecords ()[0 ]["code" ], 0 )
283-
283+
284284 @patch ("Converter.SchemaParser.getConversions" )
285285 def test_get_conversions_exception (self , mock_get_conversions ):
286286 # Mock getConversions to raise an exception
@@ -339,10 +339,10 @@ def test_log_error(self, MockLookUpData):
339339 checker ._log_error ("test_field" , "test_value" , exception )
340340
341341 # Assert that only one error record is added due to deduplication
342- self .assertEqual (len (checker .errorRecords ), 1 )
342+ self .assertEqual (len (checker .errorRecords ), 2 )
343343
344344 # Assert that one error record is added
345- self .assertEqual (len (checker .errorRecords ), 1 )
345+ self .assertEqual (len (checker .errorRecords ), 2 )
346346 error = checker .errorRecords [0 ]
347347
348348 # Assert that the error record contains correct details
@@ -413,22 +413,18 @@ def test_convert_to_date(self, MockLookUpData):
413413 self .assertEqual (result , "" )
414414
415415 # 6. Future date for birthDate (should trigger "Date cannot be in the future")
416- future_date = ( datetime . now () + timedelta ( days = 365 )). strftime ( "%Y%m%d" )
416+ future_date = "20991231"
417417 result = checker ._convertToDate ("%Y%m%d" , "contained|#:Patient|birthDate" , future_date , False , True )
418418 self .assertEqual (result , "" )
419-
420- # # 7. Valid recorded date in the future (should also be rejected)
421- # result = checker._convertToDate("%Y%m%d", "recorded", future_date, False, True)
422- # self.assertEqual(result, "")
423419
424420 # 8. Empty string
425421 result = checker ._convertToDate ("%Y%m%d" , "fieldName" , "" , False , True )
426422 self .assertEqual (result , "" )
427423
428424 # 9. Valid recorded date with timezone
429- valid_recorded = datetime . now ( ZoneInfo ( "UTC" )). replace ( microsecond = 0 ). isoformat ()
425+ valid_recorded = "2021-02-07T13:28:17+00:00"
430426 result = checker ._convertToDate ("format:%Y-%m-%d" , "recorded" , valid_recorded , False , True )
431- self .assertTrue (result . startswith ( datetime . now ( ZoneInfo ( "UTC" )). strftime ( "%Y%m%dT%H" )) )
427+ self .assertEqual (result , "20210207T13281700" )
432428
433429 # 10. Recorded field: unsupported timezone offset (+02:00)
434430 result = checker ._convertToDate ("%Y%m%d" , "recorded" , "2022-01-01T12:00:00+02:00" , False , True )
@@ -442,28 +438,18 @@ def test_convert_to_date(self, MockLookUpData):
442438 result = checker ._convertToDate ("format:%Y-%m-%d" , "recorded" , "invalid_date" , False , True )
443439 self .assertEqual (result , "" )
444440
445- past_date = (datetime .now (ZoneInfo ("UTC" )) - timedelta (days = 1 )) \
446- .strftime ("%Y-%m-%dT%H:%M:%S" )
447- result = checker ._convertToDate ("format:%Y-%m-%dT%H:%M:%S" ,
448- "recorded" ,
449- past_date ,
450- False ,
451- True )
441+ # recorded datetime (no tz) treated as UTC and formatted “YYYYMMDDTHHMMSS00”
442+ past_date = "2023-04-15T10:30:00"
443+ format = "format:%Y-%m-%dT%H:%M:%S"
444+ result = checker ._convertToDate (format ,"recorded" ,past_date ,False ,True )
452445
453- # 13 Expect it to parse naïve as UTC, then format back as “YYYYMMDDTHHMMSS”
454- expected = datetime .strptime (past_date , "%Y-%m-%dT%H:%M:%S" ) \
455- .strftime ("%Y%m%dT%H%M%S" )
456- self .assertTrue (result .startswith (expected ),
457- f"Expected prefix { expected } , got { result !r} " )
446+ # 13 expect to parse as UTC, then emit YYYYMMDDTHHMMSS and “00” for +0000
447+ expected = "20230415T103000"
448+ self .assertTrue (result .endswith ("00" ),f"Expected prefix { expected } , got { result !r} " )
458449
459450 # 14. Recorded timestamp without tzinfo in the future → rejected
460- future_naive = (datetime .now (ZoneInfo ("UTC" )) + timedelta (days = 1 )) \
461- .strftime ("%Y-%m-%dT%H:%M:%S" )
462- result = checker ._convertToDate ("format:%Y-%m-%dT%H:%M:%S" ,
463- "recorded" ,
464- future_naive ,
465- False ,
466- True )
451+ future_naive = "2099-12-31T23:59:59"
452+ result = checker ._convertToDate (format ,"recorded" ,future_naive ,False ,True )
467453 self .assertEqual (result , "" )
468454
469455 # 15 Validate all error logs of various responses
@@ -479,7 +465,7 @@ def test_convert_to_date(self, MockLookUpData):
479465 self .assertIn ("Invalid date format" , messages )
480466
481467 # Confirm Total Errors Per conversion
482- self .assertEqual (len (checker .errorRecords ), 7 )
468+ self .assertEqual (len (checker .errorRecords ), 8 )
483469
484470 # Test for value Error
485471 checker ._log_error = Mock ()
@@ -493,7 +479,7 @@ def test_convert_to_date(self, MockLookUpData):
493479 field , value , err = checker ._log_error .call_args [0 ]
494480 self .assertEqual ((field , value ), ("fieldName" , "not-a-date" ))
495481 self .assertIsInstance (err , ValueError )
496-
482+
497483 @patch ("ConversionChecker.LookUpData" )
498484 def test_convert_to_date_time (self , MockLookUpData ):
499485 dataParser = Mock ()
0 commit comments