diff --git a/geomagio/api/ws/Observatory.py b/geomagio/api/ws/Observatory.py index 2b1797e0012f07e93ede82d586551e2cd948b173..28f148650e7bd4e0db21680ed04013c5244a4cce 100644 --- a/geomagio/api/ws/Observatory.py +++ b/geomagio/api/ws/Observatory.py @@ -15,6 +15,7 @@ class Observatory(BaseModel): elevation: Optional[int] = None latitude: Optional[float] = None longitude: Optional[float] = None + sensor_sampling_rate: Optional[float] = None # Rather than use validator for populating the agency short name we resorted to using the __init__ function here because the validator mehtod would not overwrite the default None values assigned to agency above. # logic I followed is here https://stackoverflow.com/questions/76286148/how-do-custom-init-functions-work-in-pydantic-with-inheritance @@ -73,7 +74,7 @@ class Observatory(BaseModel): "agency": self.agency, "agency_name": self.agency_name, "sensor_orientation": self.sensor_orientation, - "sensor_sampling_rate": 0.01, + "sensor_sampling_rate": self.sensor_sampling_rate, "declination_base": self.declination_base, }, "geometry": ( @@ -103,6 +104,7 @@ for observatory_code, observatory_data in DEFAULT_METADATA.items(): agency_name=metadata["agency_name"], sensor_orientation=metadata["sensor_orientation"], declination_base=metadata.get("declination_base"), + sensor_sampling_rate=metadata["sensor_sampling_rate"], ) OBSERVATORIES.append(observatory) diff --git a/test/api_test/ws_test/elements_test.py b/test/api_test/ws_test/elements_test.py new file mode 100644 index 0000000000000000000000000000000000000000..5549fb76f7c0db2155369e57d9c0581e1da9ae04 --- /dev/null +++ b/test/api_test/ws_test/elements_test.py @@ -0,0 +1,22 @@ +from fastapi.testclient import TestClient + +from geomagio.api.ws import app + +client = TestClient(app) + + +def test_get_elements(): + response = client.get("/elements/") + + assert response.status_code == 200 + + body = response.json() + assert body["type"] == "FeatureCollection" + + elements = body["features"] + for e in elements: + assert e["type"] == "Feature" + assert e["id"] != None + assert e["properties"]["name"] != None + assert e["properties"]["units"] != None + assert e["geometry"] == None diff --git a/test/api_test/ws_test/observatories_test.py b/test/api_test/ws_test/observatories_test.py new file mode 100644 index 0000000000000000000000000000000000000000..807d7d0e346128b49cc3676a8329457afb6b253e --- /dev/null +++ b/test/api_test/ws_test/observatories_test.py @@ -0,0 +1,41 @@ +from fastapi.testclient import TestClient + +from geomagio.api.ws import app + +client = TestClient(app) + + +def test_get_all_observatories(): + response = client.get("/observatories/") + + assert response.status_code == 200 + body = response.json() + assert body["type"] == "FeatureCollection" + + observatories = body["features"] + for o in observatories: + assert o["type"] == "Feature" + assert o["id"] != None + assert o["properties"]["name"] != None + assert o["properties"]["agency"] != None + assert o["properties"]["agency_name"] != None + assert o["properties"]["sensor_orientation"] != None + assert o["properties"]["sensor_sampling_rate"] != None + + +def test_get_observatory_by_id(): + response = client.get("/observatories/SIT") + + assert response.status_code == 200 + + body = response.json() + assert body["type"] == "Feature" + assert body["id"] == "SIT" + assert body["properties"]["name"] == "Sitka" + assert body["properties"]["agency"] == "USGS" + assert body["properties"]["agency_name"] == "United States Geological Survey (USGS)" + assert body["properties"]["sensor_orientation"] == "HDZF" + assert body["properties"]["sensor_sampling_rate"] == 100.0 + assert body["properties"]["declination_base"] == 12349 + assert body["geometry"]["type"] == "Point" + assert body["geometry"]["coordinates"] == [224.675, 57.058, 24] diff --git a/test/api_test/ws_test/variometers_test.py b/test/api_test/ws_test/variometers_test.py new file mode 100644 index 0000000000000000000000000000000000000000..41b2544650732420d93e6608fae0e1686fcbdfb3 --- /dev/null +++ b/test/api_test/ws_test/variometers_test.py @@ -0,0 +1,44 @@ +from fastapi.testclient import TestClient + +from geomagio.api.ws import app + +client = TestClient(app) + + +def test_get_all_variometers(): + response = client.get("/variometers/") + + assert response.status_code == 200 + body = response.json() + assert body["type"] == "FeatureCollection" + + variometers = body["features"] + for v in variometers: + assert v["type"] == "Feature" + assert v["id"] != None + assert v["properties"]["name"] != None + assert v["properties"]["agency"] != None + assert v["properties"]["agency_name"] != None + assert v["properties"]["sensor_orientation"] != None + assert v["properties"]["sensor_sampling_rate"] == None + assert v["properties"]["declination_base"] == None + assert v["geometry"]["type"] == "Point" + assert len(v["geometry"]["coordinates"]) > 0 + + +def test_get_variometer_by_id(): + response = client.get("/variometers/DWPF") + + assert response.status_code == 200 + + body = response.json() + assert body["type"] == "Feature" + assert body["id"] == "DWPF" + assert body["properties"]["name"] == "Disney Wilderness Preserve, Florida, USA" + assert body["properties"]["agency"] == "USGS" + assert body["properties"]["agency_name"] == "United States Geological Survey (USGS)" + assert body["properties"]["sensor_orientation"] == "HDZF" + assert body["properties"]["sensor_sampling_rate"] == None + assert body["properties"]["declination_base"] == None + assert body["geometry"]["type"] == "Point" + assert body["geometry"]["coordinates"] == [-81.4327, 28.1103, 30]