55import pytest
66
77from mdverse_scrapers .models .dataset import DatasetMetadata
8- from mdverse_scrapers .models .enums import DatasetRepoProjectName
8+ from mdverse_scrapers .models .date import DATETIME_FORMAT
9+ from mdverse_scrapers .models .enums import DatasetSourceName
910
1011
1112# --------------------------------------
1415def test_dataset_metadata_minimal_required_fields ():
1516 """Test creating DatasetMetadata with only required fields."""
1617 metadata = DatasetMetadata (
17- dataset_repository_name = DatasetRepoProjectName .ZENODO ,
18+ dataset_repository_name = DatasetSourceName .ZENODO ,
1819 dataset_id_in_repository = "123" ,
1920 dataset_url_in_repository = "https://zenodo.org/record/123" ,
2021 title = "Test Dataset" ,
2122 )
22- assert metadata .dataset_repository_name == DatasetRepoProjectName .ZENODO
23+ assert metadata .dataset_repository_name == DatasetSourceName .ZENODO
2324 assert metadata .dataset_id_in_repository == "123"
2425 assert metadata .dataset_url_in_repository == "https://zenodo.org/record/123"
2526 assert metadata .title == "Test Dataset"
@@ -43,7 +44,7 @@ def test_dataset_metadata_minimal_required_fields():
4344def test_empty_to_none (field , value , expected ):
4445 """Test that empty strings/lists are converted to None."""
4546 data = {
46- "dataset_repository_name" : DatasetRepoProjectName .ZENODO ,
47+ "dataset_repository_name" : DatasetSourceName .ZENODO ,
4748 "dataset_id_in_repository" : "123" ,
4849 "dataset_url_in_repository" : "https://zenodo.org/record/123" ,
4950 "title" : "Test Dataset" ,
@@ -60,14 +61,14 @@ def test_format_dates_with_datetime_objects():
6061 """Test that datetime objects are correctly converted to ISO string format."""
6162 now = datetime (2026 , 1 , 23 , 12 , 0 , 0 )
6263 metadata = DatasetMetadata (
63- dataset_repository_name = DatasetRepoProjectName .ZENODO ,
64+ dataset_repository_name = DatasetSourceName .ZENODO ,
6465 dataset_id_in_repository = "123" ,
6566 dataset_url_in_repository = "https://zenodo.org/record/123" ,
6667 title = "Test Dataset" ,
6768 date_created = now ,
6869 date_last_updated = now ,
6970 )
70- formatted = now .strftime ("%Y-%m-%dT%H:%M:%S" )
71+ formatted = now .strftime (DATETIME_FORMAT )
7172 assert metadata .date_created == formatted
7273 assert metadata .date_last_updated == formatted
7374
@@ -76,7 +77,7 @@ def test_format_dates_with_iso_strings():
7677 """Test that ISO string dates are normalized to '%Y-%m-%dT%H:%M:%S' format."""
7778 expected_date = "2026-01-23T00:00:00"
7879 metadata = DatasetMetadata (
79- dataset_repository_name = DatasetRepoProjectName .ZENODO ,
80+ dataset_repository_name = DatasetSourceName .ZENODO ,
8081 dataset_id_in_repository = "123" ,
8182 dataset_url_in_repository = "https://zenodo.org/record/123" ,
8283 title = "Test Dataset" ,
@@ -91,15 +92,15 @@ def test_format_dates_with_iso_strings():
9192def test_fill_project_fields ():
9293 """Test that project fields are populated from repository fields when missing."""
9394 metadata = DatasetMetadata (
94- dataset_repository_name = DatasetRepoProjectName .ZENODO ,
95+ dataset_repository_name = DatasetSourceName .ZENODO ,
9596 dataset_id_in_repository = "repo_123" ,
9697 dataset_url_in_repository = "https://zenodo.org/record/repo_123" ,
9798 dataset_project_name = None ,
9899 dataset_id_in_project = None ,
99100 dataset_url_in_project = None ,
100101 title = "Test Dataset" ,
101102 )
102- assert metadata .dataset_project_name == DatasetRepoProjectName .ZENODO
103+ assert metadata .dataset_project_name == DatasetSourceName .ZENODO
103104 assert metadata .dataset_id_in_project == "repo_123"
104105 assert metadata .dataset_url_in_project == "https://zenodo.org/record/repo_123"
105106
@@ -108,7 +109,7 @@ def test_fill_project_fields_from_repository_invalid_mapping():
108109 """Test that ValueError is raised when repository cannot map to a project."""
109110 with pytest .raises (AttributeError , match = "type object" ):
110111 _ = DatasetMetadata (
111- dataset_repository_name = DatasetRepoProjectName . REPO ,
112+ dataset_repository_name = DatasetSourceName . DUMMY ,
112113 dataset_id_in_repository = "123" ,
113114 dataset_url_in_repository = "https://example.com/123" ,
114115 title = "Test Dataset" ,
@@ -119,7 +120,7 @@ def test_date_last_fetched_is_recent():
119120 """Test that date_last_fetched is a recent datetime."""
120121 time_1 = datetime .now ()
121122 metadata = DatasetMetadata (
122- dataset_repository_name = DatasetRepoProjectName .ZENODO ,
123+ dataset_repository_name = DatasetSourceName .ZENODO ,
123124 dataset_id_in_repository = "123" ,
124125 dataset_url_in_repository = "https://zenodo.org/record/123" ,
125126 title = "Test Dataset" ,
@@ -136,7 +137,7 @@ def test_date_last_fetched_is_recent():
136137def test_dataset_metadata_full_scenario ():
137138 """Test a realistic scenario with mixed missing fields and validators."""
138139 metadata = DatasetMetadata (
139- dataset_repository_name = DatasetRepoProjectName .FIGSHARE ,
140+ dataset_repository_name = DatasetSourceName .FIGSHARE ,
140141 dataset_id_in_repository = "fig_456" ,
141142 dataset_url_in_repository = "https://figshare.com/articles/fig_456" ,
142143 dataset_project_name = None ,
@@ -156,7 +157,7 @@ def test_dataset_metadata_full_scenario():
156157 assert metadata .external_links is None
157158 assert metadata .license is None
158159 # Check project fields filled
159- assert metadata .dataset_project_name == DatasetRepoProjectName .FIGSHARE
160+ assert metadata .dataset_project_name == DatasetSourceName .FIGSHARE
160161 assert metadata .dataset_id_in_project == "fig_456"
161162 assert metadata .dataset_url_in_project == "https://figshare.com/articles/fig_456"
162163 # Check date_last_fetched is filled
0 commit comments