test_scheduled_drying_model.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. """Tests for the ScheduledDrying model (#2638)."""
  2. import pytest
  3. from backend.app.models.scheduled_drying import ScheduledDrying
  4. @pytest.mark.asyncio
  5. async def test_scheduled_drying_defaults(db_session, printer_factory):
  6. printer = await printer_factory()
  7. row = ScheduledDrying(printer_id=printer.id, ams_id=0, temp=65, duration_hours=8)
  8. db_session.add(row)
  9. await db_session.commit()
  10. await db_session.refresh(row)
  11. assert row.id is not None
  12. assert row.status == "pending"
  13. assert row.start_after is None
  14. assert row.rotate_tray is False
  15. assert row.filament == ""
  16. assert row.created_at is not None
  17. assert row.started_at is None
  18. def test_printer_fk_declares_cascade_delete():
  19. """Verify the model declares CASCADE delete on printer FK (enforced in PostgreSQL)."""
  20. fk = next(iter(ScheduledDrying.__table__.c.printer_id.foreign_keys))
  21. assert fk.ondelete == "CASCADE"
  22. def test_created_by_fk_declares_set_null():
  23. """Verify the model declares SET NULL on created_by FK (enforced in PostgreSQL)."""
  24. fk = next(iter(ScheduledDrying.__table__.c.created_by_id.foreign_keys))
  25. assert fk.ondelete == "SET NULL"