1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| import dateparser
import pytest
from extract_date_from_pdf import extract_first_date
@pytest.mark.parametrize("string_with_date,expected_date", [
("01.01.2020", "2020-01-01"),
("01.01.20", "2020-01-01"),
("2224.05.2020123 01.01.2020", "2020-05-24"),
("abc24.05.2020xyz 01.01.2020", "2020-05-24"),
("24.05.2020 01.01.2020", "2020-05-24"),
("2020-05-24 01.01.2020", "2020-05-24"),
("24 August 2020 01.01.2020", "2020-08-24"),
("24 Aug 2020 01.01.2020", "2020-08-24"),
("24. Aug. 2020 01.01.2020", "2020-08-24"),
("August 24 2020 01.01.2020", "2020-08-24"),
("August 24. 2020 01.01.2020", "2020-08-24"),
("Aug 24. 2020 01.01.2020", "2020-08-24"),
("24. Mai 2020 01.01.2020", "2020-05-24"),
("1. März 2020 01.01.2020", "2020-03-01"),
("1. Dezember 2020 01.01.2020", "2020-12-01"),
("1. December 2020 01.01.2020", "2020-01-01"), # Unsupported combination of German order and English month
("December 01 2020 01.01.2020", "2020-12-01"),
("Dezember 01 2020 01.01.2020", "2020-01-01"), # Unsupported combination of English order and German month
])
def test_dates(string_with_date, expected_date):
# act
result = extract_first_date(text=string_with_date).strftime("%Y-%m-%d")
# assert
assert result == expected_date
@pytest.mark.parametrize("string_with_date,expected_date", [
("01.01.2020", None),
("13.03.20", None),
("2224.05.2020123 01.01.2020", None),
("abc24.05.2020xyz 01.01.2020", None),
("24.05.2020 01.01.2020", None),
("2020-05-24 01.01.2020", None),
("24 August 2020 01.01.2020", None),
("24 Aug 2020 01.01.2020", None),
("24. Aug. 2020 01.01.2020", None),
("August 24 2020 01.01.2020", None),
("August 24. 2020 01.01.2020", None),
("Aug 24. 2020 01.01.2020", None),
("24. Mai 2020 01.01.2020", None),
("1. März 2020 01.01.2020", None),
("1. Dezember 2020 01.01.2020", None),
("1. December 2020 01.01.2020", None),
("December 01 2020 01.01.2020", None),
("Dezember 01 2020 01.01.2020", None),
])
def test_If_latest_date_is_before_all_dates_Then_none_is_returned(string_with_date, expected_date):
# arrange
latest_date = dateparser.parse("2019-01-01")
# act
result = extract_first_date(text=string_with_date, before=latest_date)
# assert
assert result == None
@pytest.mark.parametrize("string_with_date,expected_date", [
("2224.05.2020123 01.01.2020", "2020-01-01"),
("abc24.05.2020xyz 01.01.2020", "2020-01-01"),
("24.05.2020 01.01.2020", "2020-01-01"),
("2020-05-24 01.01.2020", "2020-01-01"),
("24 August 2020 01.01.2020", "2020-01-01"),
("24 Aug 2020 01.01.2020", "2020-01-01"),
("24. Aug. 2020 01.01.2020", "2020-01-01"),
("August 24 2020 01.01.2020", "2020-01-01"),
("August 24. 2020 01.01.2020", "2020-01-01"),
("Aug 24. 2020 01.01.2020", "2020-01-01"),
("24. Mai 2020 01.01.2020", "2020-01-01"),
("1. März 2020 01.01.2020", "2020-01-01"),
("1. Dezember 2020 01.01.2020", "2020-01-01"),
("1. December 2020 01.01.2020", "2020-01-01"),
("December 01 2020 01.01.2020", "2020-01-01"),
("Dezember 01 2020 01.01.2020", "2020-01-01"),
])
def test_If_latest_date_is_provided_Then_match_before_earliest_date_is_returned(string_with_date, expected_date):
# arrange
latest_date = dateparser.parse("2020-02-01")
# act
result = extract_first_date(text=string_with_date, before=latest_date).strftime("%Y-%m-%d")
# assert
assert result == dateparser.parse(expected_date).strftime("%Y-%m-%d")
|
If you liked this post, please, do share it:
Thanks, for reading (and sharing)! 🥳