diff --git a/tests/parsers/agilent_gen5/plate_number_test.py b/tests/parsers/agilent_gen5/plate_number_test.py index 552f5ea12..2e8324c2d 100644 --- a/tests/parsers/agilent_gen5/plate_number_test.py +++ b/tests/parsers/agilent_gen5/plate_number_test.py @@ -1,3 +1,4 @@ +from datetime import timedelta, timezone from typing import Optional import pytest @@ -5,30 +6,43 @@ from allotropy.exceptions import AllotropeConversionError from allotropy.parser_factory import get_parser, Vendor from allotropy.parsers.agilent_gen5.plate_data import PlateNumber +from allotropy.parsers.utils.timestamp_parser import TimestampParser -TIMESTAMP_PARSER = get_parser(Vendor.AGILENT_GEN5).timestamp_parser +PARSER_UTC = get_parser(Vendor.AGILENT_GEN5).timestamp_parser +PARSER_UTC_MINUS_5 = get_parser( + Vendor.AGILENT_GEN5, timezone(timedelta(hours=-5)) +).timestamp_parser @pytest.mark.parametrize( - "date_,time_,expected", + "date_,time_,expected,timestamp_parser", [ - ("1/2/2024", "10:48:38 AM", "2024-01-02T10:48:38+00:00"), - ("1/31/2024", "10:48:38 AM", "2024-01-31T10:48:38+00:00"), - ("2/1/2024", "10:48:38 AM", "2024-02-01T10:48:38+00:00"), - ("1/31/2024", "10:48:38", "2024-01-31T10:48:38+00:00"), - ("31/1/2024", "10:48:38", "2024-01-31T10:48:38+00:00"), - ("2/1/2024", "10:48:38", "2024-02-01T10:48:38+00:00"), - ("2/1/2024", "10:48:38 EST", "2024-02-01T10:48:38-05:00"), - ("mydate", "mytime", None), + ("1/2/2024", "10:48:38 AM", "2024-01-02T10:48:38+00:00", PARSER_UTC), + ("1/31/2024", "10:48:38 AM", "2024-01-31T10:48:38+00:00", PARSER_UTC), + ("2/1/2024", "10:48:38 AM", "2024-02-01T10:48:38+00:00", PARSER_UTC), + ("1/31/2024", "10:48:38", "2024-01-31T10:48:38+00:00", PARSER_UTC), + ("31/1/2024", "10:48:38", "2024-01-31T10:48:38+00:00", PARSER_UTC), + ("2/1/2024", "10:48:38", "2024-02-01T10:48:38+00:00", PARSER_UTC), + ("2/1/2024", "10:48:38 EST", "2024-02-01T10:48:38-05:00", PARSER_UTC), + ("mydate", "mytime", None, PARSER_UTC), + ("1/2/2024", "10:48:38 AM", "2024-01-02T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("1/31/2024", "10:48:38 AM", "2024-01-31T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("2/1/2024", "10:48:38 AM", "2024-02-01T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("1/31/2024", "10:48:38", "2024-01-31T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("31/1/2024", "10:48:38", "2024-01-31T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("2/1/2024", "10:48:38", "2024-02-01T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("2/1/2024", "10:48:38 EST", "2024-02-01T10:48:38-05:00", PARSER_UTC_MINUS_5), + ("mydate", "mytime", None, PARSER_UTC), + ("mydate", "mytime", None, PARSER_UTC_MINUS_5), ], ) def test_plate_number_parse_datetime( - date_: str, time_: str, expected: Optional[str] + date_: str, time_: str, expected: Optional[str], timestamp_parser: TimestampParser ) -> None: if expected: - datetime_ = PlateNumber._parse_datetime(date_, time_, TIMESTAMP_PARSER) + datetime_ = PlateNumber._parse_datetime(date_, time_, timestamp_parser) assert datetime_ == expected else: expected_error_message = f"Could not parse time '{date_} {time_}'" with pytest.raises(AllotropeConversionError, match=expected_error_message): - PlateNumber._parse_datetime(date_, time_, TIMESTAMP_PARSER) + PlateNumber._parse_datetime(date_, time_, PARSER_UTC)