|
2 | 2 | from datetime import datetime |
3 | 3 | from datetime import timedelta |
4 | 4 |
|
| 5 | +import pandas |
5 | 6 | import pytest |
6 | 7 | import shapely |
7 | 8 | from shapely.geometry import box |
8 | 9 |
|
| 10 | +from stormevents.nhc import nhc_storms |
9 | 11 | from stormevents.stormevent import StormEvent |
| 12 | +from stormevents.stormevent import StormStatus |
10 | 13 | from tests import check_reference_directory |
11 | 14 | from tests import OUTPUT_DIRECTORY |
12 | 15 | from tests import REFERENCE_DIRECTORY |
@@ -212,3 +215,27 @@ def test_storm_event_coops_product_within_region(florence2018): |
212 | 215 |
|
213 | 216 | assert null_tidal_data["t"].sizes == {} |
214 | 217 | assert east_coast_tidal_data.sizes == {"nos_id": 112, "t": 1} |
| 218 | + |
| 219 | + |
| 220 | +def test_status(): |
| 221 | + florence2018 = StormEvent("florence", 2018) |
| 222 | + paine2016 = StormEvent.from_nhc_code("EP172016") |
| 223 | + henri2021 = StormEvent.from_usgs_id(310) |
| 224 | + ida2021 = StormEvent("ida", 2021) |
| 225 | + |
| 226 | + assert florence2018.status == StormStatus.HISTORICAL |
| 227 | + assert paine2016.status == StormStatus.HISTORICAL |
| 228 | + assert henri2021.status == StormStatus.HISTORICAL |
| 229 | + assert ida2021.status == StormStatus.HISTORICAL |
| 230 | + |
| 231 | + storms = nhc_storms() |
| 232 | + latest_storm_entry = storms.iloc[-1] |
| 233 | + latest_storm = StormEvent.from_nhc_code(latest_storm_entry.name) |
| 234 | + age = datetime.today() - latest_storm_entry["end_date"] |
| 235 | + if pandas.isna(latest_storm_entry["end_date"]) or age < timedelta(days=1): |
| 236 | + if datetime.today() - latest_storm_entry["start_date"] > timedelta(days=30): |
| 237 | + assert latest_storm.status == StormStatus.HISTORICAL |
| 238 | + else: |
| 239 | + assert latest_storm.status == StormStatus.REALTIME |
| 240 | + else: |
| 241 | + assert latest_storm.status == StormStatus.HISTORICAL |
0 commit comments