test_services.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from datetime import date, timedelta
  2. import pytest
  3. from room_cal.service_api import ServiceAPI
  4. async def test_price_roundtrip():
  5. api = ServiceAPI()
  6. # Find an available (not booked) date with prices set on all services.
  7. scan_start = date.today() + timedelta(days=1)
  8. scan_end = scan_start + timedelta(days=90)
  9. target = None
  10. d = scan_start
  11. while d <= scan_end:
  12. if await api.get_available(d):
  13. prices = await api.get_prices(d)
  14. if all(p is not None for p in prices.values()):
  15. target = d
  16. originals = dict(prices)
  17. break
  18. d += timedelta(days=1)
  19. if target is None:
  20. pytest.skip("No available priced date found in the next 90 days")
  21. await api.set_prices(target, {k: v - 1.00 for k, v in originals.items()})
  22. updated = await api.get_prices(target)
  23. for key, original in originals.items():
  24. assert updated[key] == pytest.approx(original - 1.00)
  25. await api.set_prices(target, originals)
  26. restored = await api.get_prices(target)
  27. for key, original in originals.items():
  28. assert restored[key] == pytest.approx(original)