Skip to content

Commit 25e6c43

Browse files
committed
SDK-1229: Add date_parser test suite for datetime_with_microsecond
1 parent 97d0125 commit 25e6c43

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

yoti_python_sdk/date_parser.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ def from_iso_format(string):
1919

2020
def datetime_with_microsecond(string):
2121
# Python2 does not have a way of parsing date formats.
22-
# TODO Deprecate this once Python2 support is dropped.
22+
# Deprecate this once Python2 support is dropped.
2323
time_split = re.split("[^0-9]", string)
2424
parts = len(time_split)
2525
if parts <= 6:
2626
if logging.getLogger().propagate:
2727
logging.warning(ERROR_PARSING_DATE)
2828
return None
2929

30-
year = int(time_split[0]) if parts > 0 else 0
31-
month = int(time_split[1]) if parts > 1 else 0
32-
day = int(time_split[2]) if parts > 2 else 0
33-
hour = int(time_split[3]) if parts > 3 else 0
34-
minute = int(time_split[4]) if parts > 4 else 0
35-
second = int(time_split[5]) if parts > 5 else 0
36-
microsecond = int(float("0." + time_split[6]) * 1e6) if parts > 6 else 0
3730
try:
31+
year = int(time_split[0])
32+
month = int(time_split[1])
33+
day = int(time_split[2])
34+
hour = int(time_split[3])
35+
minute = int(time_split[4])
36+
second = int(time_split[5])
37+
microsecond = int(float("0." + time_split[6]) * 1e6)
3838
return datetime(year, month, day, hour, minute, second, microsecond)
3939
except ValueError:
4040
if logging.getLogger().propagate:
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from datetime import datetime
5+
from yoti_python_sdk import date_parser
6+
import pytest
7+
8+
9+
@pytest.mark.parametrize(
10+
"string,expected",
11+
[
12+
("2006-11-02T15:04:05.010Z", datetime(2006, 11, 2, 15, 4, 5, 10000)),
13+
("2006-09-02T15:04:05.010Z", datetime(2006, 9, 2, 15, 4, 5, 10000)),
14+
("2006-9-02T15:04:05.010Z", datetime(2006, 9, 2, 15, 4, 5, 10000)),
15+
("200006-11-02T15:04:05.010Z", None),
16+
("2006-13-02T15:04:05.010Z", None),
17+
("2006-09-31T15:04:05.010Z", None),
18+
("2006-11-02T15:04:05", None),
19+
("2006-11-02T15:04", None),
20+
("2006-11-02T15", None),
21+
("2006-11-02", None),
22+
("2006-11", None),
23+
("2006", None),
24+
("This is not a date", None),
25+
],
26+
)
27+
def test_datetime_with_microsecond_should_handle_missing_and_invalid(string, expected):
28+
output = date_parser.datetime_with_microsecond(string)
29+
assert output == expected

0 commit comments

Comments
 (0)