1+ import pytest
2+ from main import get_date_time
3+
4+
5+ class TestGetDateTime :
6+
7+ def test_get_date_time_yy_format_with_time (self ):
8+ source_identifier = "sql-to-parquet-23-12-25-143000"
9+ year , month , day , date = get_date_time (source_identifier )
10+
11+ assert year == "2023"
12+ assert month == "12"
13+ assert day == "25"
14+ assert date == "20231225"
15+
16+ def test_get_date_time_yy_format_with_time_backdated (self ):
17+ source_identifier = "sql-to-parquet-23-12-25-143000-backdated"
18+ year , month , day , date = get_date_time (source_identifier )
19+
20+ assert year == "2023"
21+ assert month == "12"
22+ assert day == "25"
23+ assert date == "20231225"
24+
25+ def test_get_date_time_yyyy_format_backdated (self ):
26+ source_identifier = "sql-to-parquet-2023-12-25-backdated"
27+ year , month , day , date = get_date_time (source_identifier )
28+
29+ assert year == "2023"
30+ assert month == "12"
31+ assert day == "25"
32+ assert date == "20231225"
33+
34+ def test_get_date_time_yyyy_format_backdated_different_date (self ):
35+ source_identifier = "sql-to-parquet-2024-01-15-backdated"
36+ year , month , day , date = get_date_time (source_identifier )
37+
38+ assert year == "2024"
39+ assert month == "01"
40+ assert day == "15"
41+ assert date == "20240115"
42+
43+ def test_get_date_time_yy_format_different_time (self ):
44+ source_identifier = "sql-to-parquet-24-03-10-090000"
45+ year , month , day , date = get_date_time (source_identifier )
46+
47+ assert year == "2024"
48+ assert month == "03"
49+ assert day == "10"
50+ assert date == "20240310"
51+
52+ def test_get_date_time_invalid_format_raises_error (self ):
53+ invalid_identifiers = [
54+ "sql-to-parquet-2023-12-25" , # Missing -backdated for yyyy format
55+ "sql-to-parquet-23-12-25" , # Missing time for yy format
56+ "invalid-format-23-12-25-143000" , # Wrong prefix
57+ "sql-to-parquet-23-12-25-14300" , # Wrong time format (5 digits)
58+ "sql-to-parquet-23-12-25-1430000" , # Wrong time format (7 digits)
59+ "sql-to-parquet-2023-12-backdated" , # Missing day
60+ "sql-to-parquet-123-12-25-143000" , # 3-digit year
61+ ]
62+
63+ for invalid_id in invalid_identifiers :
64+ with pytest .raises (ValueError , match = "Invalid source identifier format" ):
65+ get_date_time (invalid_id )
66+
67+ def test_get_date_time_edge_cases (self ):
68+ # Test with single digit month/day (should still work with zero padding)
69+ source_identifier = "sql-to-parquet-23-01-05-000000"
70+ year , month , day , date = get_date_time (source_identifier )
71+
72+ assert year == "2023"
73+ assert month == "01"
74+ assert day == "05"
75+ assert date == "20230105"
76+
77+ def test_get_date_time_leap_year (self ):
78+ # Test leap year date
79+ source_identifier = "sql-to-parquet-2024-02-29-backdated"
80+ year , month , day , date = get_date_time (source_identifier )
81+
82+ assert year == "2024"
83+ assert month == "02"
84+ assert day == "29"
85+ assert date == "20240229"
0 commit comments