Skip to content

Commit d98705f

Browse files
authored
Merge pull request #1028 from cmu-delphi/leonlu2/test_signal_wildcard
Leonlu2/test signal wildcard
2 parents 0666298 + 2044e69 commit d98705f

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

integrations/server/test_covidcast.py

+32
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,18 @@ def _insert_placeholder_set_three(self):
6363
self._insert_rows(rows)
6464
return rows
6565

66+
def _insert_placeholder_set_four(self):
67+
rows = [
68+
self._make_placeholder_row(source='src1', signal=str(i)*5, value=i*1., stderr=i*10., sample_size=i*100.)[0]
69+
for i in [1, 2, 3]
70+
] + [
71+
# signal intended to overlap with the signal above
72+
self._make_placeholder_row(source='src2', signal=str(i-3)*5, value=i*1., stderr=i*10., sample_size=i*100.)[0]
73+
for i in [4, 5, 6]
74+
]
75+
self._insert_rows(rows)
76+
return rows
77+
6678
def test_round_trip(self):
6779
"""Make a simple round-trip with some sample data."""
6880

@@ -225,6 +237,26 @@ def test_location_wildcard(self):
225237
'message': 'success',
226238
})
227239

240+
def test_signal_wildcard(self):
241+
"""Select all signals with a wildcard query."""
242+
243+
# insert placeholder data
244+
rows = self._insert_placeholder_set_four()
245+
expected_signals = [
246+
self.expected_from_row(r) for r in rows[:3]
247+
]
248+
249+
# make the request
250+
response, _ = self.request_based_on_row(rows[0], signals="*")
251+
252+
self.maxDiff = None
253+
# assert that the right data came back
254+
self.assertEqual(response, {
255+
'result': 1,
256+
'epidata': expected_signals,
257+
'message': 'success',
258+
})
259+
228260
def test_geo_value(self):
229261
"""test different variants of geo types: single, *, multi."""
230262

src/server/endpoints/covidcast.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ def parse_source_signal_pairs() -> List[SourceSignalPair]:
4949
ds = request.values.get("data_source")
5050
if ds:
5151
# old version
52-
require_any("signal", "signals")
52+
require_any("signal", "signals", empty=True)
5353
signals = extract_strings(("signals", "signal"))
54+
if len(signals) == 1 and signals[0] == "*":
55+
return [SourceSignalPair(ds, True)]
5456
return [SourceSignalPair(ds, signals)]
5557

5658
if ":" not in request.values.get("signal", ""):

0 commit comments

Comments
 (0)