test_services.py 1.1 KB

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