test_actions.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pytest
  2. from datetime import date, timedelta
  3. from room_cal.actions.fetch_feed import fetch_feed
  4. from room_cal.actions.fetch_reservations import fetch_reservations
  5. from room_cal.service_api import ServiceAPI
  6. from room_cal.closed import Closed
  7. @pytest.mark.asyncio
  8. async def test_fetch_feed_fire():
  9. """Run the Fire ical-feed fetch-feed over a past window and verify marked dates are Closed."""
  10. start = date.today() - timedelta(days=90)
  11. end = date.today() - timedelta(days=1)
  12. result = await fetch_feed(start, end, feed_name='Fire')
  13. if not result.data:
  14. pytest.skip("No Fire events in the past 90 days — nothing to verify")
  15. closed = Closed()
  16. for d in result.data:
  17. result = await closed.get(d)
  18. assert result is not None, f"Expected Closed event on {d} after Fire sync"
  19. assert result.services, f"Empty closed_services on {d}"
  20. @pytest.mark.live
  21. async def test_fetch_reservations():
  22. api = ServiceAPI()
  23. scan_start = date.today() - timedelta(days=90)
  24. scan_end = date.today() - timedelta(days=1)
  25. all_res = await api.get_reservations(scan_start, scan_end)
  26. if not all_res:
  27. pytest.skip("No past reservations found in the last 90 days")
  28. r = all_res[0]
  29. start = r['start_date']
  30. end = min(r['end_date'], start + timedelta(days=2))
  31. result = await fetch_reservations(start, end, api=api)
  32. for r in result.data:
  33. assert r['reservation_id']
  34. assert r['service'] in ('airbnb', 'booking')
  35. assert r['checkin_date'] < r['checkout_date']
  36. assert r['guest_name']