test_sensor_queries.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import pytest
  2. from flexmeasures.data.models.time_series import Sensor
  3. @pytest.mark.parametrize("n", [1, 3])
  4. def test_closest_sensor(run_as_cli, add_nearby_weather_sensors, n):
  5. """Check that the closest temperature sensor to our wind sensor returns
  6. the one that is on the same spot as the wind sensor itself.
  7. (That's where we set it up in our conftest.)
  8. And check that the 2nd and 3rd closest are the farther temperature sensors we set up, in the case of 3 sensors.
  9. """
  10. wind_sensor = add_nearby_weather_sensors["wind"]
  11. closest_sensor_or_sensors = Sensor.find_closest(
  12. generic_asset_type_name=wind_sensor.generic_asset.generic_asset_type.name,
  13. n=n,
  14. sensor_name="temperature",
  15. latitude=wind_sensor.generic_asset.latitude,
  16. longitude=wind_sensor.generic_asset.longitude,
  17. )
  18. if n == 1:
  19. assert closest_sensor_or_sensors.location == wind_sensor.generic_asset.location
  20. assert (
  21. closest_sensor_or_sensors.generic_asset.generic_asset_type.name
  22. == wind_sensor.generic_asset.generic_asset_type.name
  23. )
  24. elif n == 3:
  25. assert (
  26. closest_sensor_or_sensors[0].location == wind_sensor.generic_asset.location
  27. )
  28. assert (
  29. closest_sensor_or_sensors[1]
  30. == add_nearby_weather_sensors["farther_temperature"]
  31. )
  32. assert (
  33. closest_sensor_or_sensors[2]
  34. == add_nearby_weather_sensors["even_farther_temperature"]
  35. )
  36. for sensor in closest_sensor_or_sensors:
  37. assert (
  38. sensor.generic_asset.generic_asset_type.name
  39. == wind_sensor.generic_asset.generic_asset_type.name
  40. )