Skip to content

Commit bbfaf8b

Browse files
committed
make tests for InputDataset base class
1 parent 4ed33e9 commit bbfaf8b

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

tests/models/test_instruments.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import datetime
2+
from unittest.mock import patch
3+
4+
import pytest
5+
6+
from virtualship.models.instruments import InputDataset
7+
from virtualship.models.space_time_region import (
8+
SpaceTimeRegion,
9+
SpatialRange,
10+
TimeRange,
11+
)
12+
13+
14+
class DummyInputDataset(InputDataset):
15+
"""A minimal InputDataset subclass for testing purposes."""
16+
17+
def get_datasets_dict(self):
18+
"""Return a dummy datasets dict for testing."""
19+
return {
20+
"dummy": {
21+
"dataset_id": "test_id",
22+
"variables": ["var1"],
23+
"output_filename": "dummy.nc",
24+
}
25+
}
26+
27+
28+
@pytest.fixture
29+
def dummy_space_time_region():
30+
spatial_range = SpatialRange(
31+
minimum_longitude=0,
32+
maximum_longitude=1,
33+
minimum_latitude=0,
34+
maximum_latitude=1,
35+
minimum_depth=0,
36+
maximum_depth=10,
37+
)
38+
base_time = datetime.datetime.strptime("1950-01-01", "%Y-%m-%d")
39+
time_range = TimeRange(
40+
start_time=base_time,
41+
end_time=base_time + datetime.timedelta(hours=1),
42+
)
43+
return SpaceTimeRegion(
44+
spatial_range=spatial_range,
45+
time_range=time_range,
46+
)
47+
48+
49+
def test_inputdataset_abstract_instantiation():
50+
# instantiation should not be allowed
51+
with pytest.raises(TypeError):
52+
InputDataset(
53+
name="test",
54+
latlon_buffer=0,
55+
datetime_buffer=0,
56+
min_depth=0,
57+
max_depth=10,
58+
data_dir=".",
59+
credentials={"username": "u", "password": "p"},
60+
space_time_region=None,
61+
)
62+
63+
64+
def test_dummyinputdataset_initialization(dummy_space_time_region):
65+
ds = DummyInputDataset(
66+
name="test",
67+
latlon_buffer=0.5,
68+
datetime_buffer=1,
69+
min_depth=0,
70+
max_depth=10,
71+
data_dir=".",
72+
credentials={"username": "u", "password": "p"},
73+
space_time_region=dummy_space_time_region,
74+
)
75+
assert ds.name == "test"
76+
assert ds.latlon_buffer == 0.5
77+
assert ds.datetime_buffer == 1
78+
assert ds.min_depth == 0
79+
assert ds.max_depth == 10
80+
assert ds.data_dir == "."
81+
assert ds.credentials["username"] == "u"
82+
83+
84+
@patch("virtualship.models.instruments.copernicusmarine.subset")
85+
def test_download_data_calls_subset(mock_subset, dummy_space_time_region):
86+
ds = DummyInputDataset(
87+
name="test",
88+
latlon_buffer=0.5,
89+
datetime_buffer=1,
90+
min_depth=0,
91+
max_depth=10,
92+
data_dir=".",
93+
credentials={"username": "u", "password": "p"},
94+
space_time_region=dummy_space_time_region,
95+
)
96+
ds.download_data()
97+
assert mock_subset.called

0 commit comments

Comments
 (0)