Skip to content

Commit 652dc86

Browse files
committed
Refactor NWIS tests to use external JSON mock data
1 parent fd013ff commit 652dc86

3 files changed

Lines changed: 98 additions & 45 deletions

File tree

tests/data/nwis_iv_empty_mock.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"value": {
3+
"timeSeries": []
4+
}
5+
}

tests/data/nwis_iv_mock.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{
2+
"value": {
3+
"timeSeries": [
4+
{
5+
"sourceInfo": {
6+
"siteCode": [
7+
{
8+
"value": "03339000"
9+
}
10+
]
11+
},
12+
"variable": {
13+
"variableCode": [
14+
{
15+
"value": "00060"
16+
}
17+
],
18+
"options": {
19+
"option": [
20+
{
21+
"value": "mean"
22+
}
23+
]
24+
}
25+
},
26+
"values": [
27+
{
28+
"method": [
29+
{
30+
"methodDescription": "mean"
31+
}
32+
],
33+
"value": [
34+
{
35+
"value": "1.0",
36+
"dateTime": "2018-01-24T00:00:00Z",
37+
"qualifiers": "A"
38+
}
39+
]
40+
}
41+
]
42+
},
43+
{
44+
"sourceInfo": {
45+
"siteCode": [
46+
{
47+
"value": "05447500"
48+
}
49+
]
50+
},
51+
"variable": {
52+
"variableCode": [
53+
{
54+
"value": "00060"
55+
}
56+
],
57+
"options": {
58+
"option": [
59+
{
60+
"value": "mean"
61+
}
62+
]
63+
}
64+
},
65+
"values": [
66+
{
67+
"method": [
68+
{
69+
"methodDescription": "mean"
70+
}
71+
],
72+
"value": [
73+
{
74+
"value": "2.0",
75+
"dateTime": "2018-01-24T00:00:00Z",
76+
"qualifiers": "A"
77+
}
78+
]
79+
}
80+
]
81+
}
82+
]
83+
}
84+
}

tests/nwis_test.py

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22
from unittest import mock
33

4+
import json
45
import numpy as np
56
import pandas as pd
67
import pytest
@@ -26,6 +27,12 @@
2627
SITENO_COL = "site_no"
2728

2829

30+
def _load_mock_json(file_name):
31+
"""Helper to load mock JSON from tests/data."""
32+
with open(f"tests/data/{file_name}") as f:
33+
return json.load(f)
34+
35+
2936
def _test_iv_service(requests_mock):
3037
"""Mocked test of instantaneous value service"""
3138
start = START_DATE
@@ -39,50 +46,7 @@ def _test_iv_service(requests_mock):
3946
f"startDT={start}&endDT={end}&sites=03339000%2C05447500%2C03346500"
4047
)
4148
# We use a very simple JSON structure just to satisfy the parser
42-
mock_json = {
43-
"value": {
44-
"timeSeries": [
45-
{
46-
"sourceInfo": {"siteCode": [{"value": "03339000"}]},
47-
"variable": {
48-
"variableCode": [{"value": "00060"}],
49-
"options": {"option": [{"value": "mean"}]},
50-
},
51-
"values": [
52-
{
53-
"method": [{"methodDescription": "mean"}],
54-
"value": [
55-
{
56-
"value": "1.0",
57-
"dateTime": "2018-01-24T00:00:00Z",
58-
"qualifiers": "A",
59-
}
60-
],
61-
}
62-
],
63-
},
64-
{
65-
"sourceInfo": {"siteCode": [{"value": "05447500"}]},
66-
"variable": {
67-
"variableCode": [{"value": "00060"}],
68-
"options": {"option": [{"value": "mean"}]},
69-
},
70-
"values": [
71-
{
72-
"method": [{"methodDescription": "mean"}],
73-
"value": [
74-
{
75-
"value": "2.0",
76-
"dateTime": "2018-01-24T00:00:00Z",
77-
"qualifiers": "A",
78-
}
79-
],
80-
}
81-
],
82-
},
83-
]
84-
}
85-
}
49+
mock_json = _load_mock_json("nwis_iv_mock.json")
8650

8751
requests_mock.get(mock_url, json=mock_json)
8852

@@ -263,7 +227,7 @@ def test_empty_timeseries(requests_mock):
263227
f"https://waterservices.usgs.gov/nwis/iv?format=json&"
264228
f"startDT={start}&endDT={end}&sites={sites}"
265229
)
266-
mock_json = {"value": {"timeSeries": []}}
230+
mock_json = _load_mock_json("nwis_iv_empty_mock.json")
267231
requests_mock.get(mock_url, json=mock_json)
268232

269233
df = get_record(sites=sites, service="iv", start=start, end=end)

0 commit comments

Comments
 (0)