test_slicer_settings.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """Unit tests for preferred_slicer setting in AppSettings schema."""
  2. import pytest
  3. from backend.app.schemas.settings import AppSettings, AppSettingsUpdate
  4. @pytest.mark.unit
  5. class TestPreferredSlicerSchema:
  6. """Tests for the preferred_slicer field in settings schemas."""
  7. def test_default_value_is_bambu_studio(self):
  8. """Default preferred_slicer should be bambu_studio."""
  9. settings = AppSettings()
  10. assert settings.preferred_slicer == "bambu_studio"
  11. def test_set_to_orcaslicer(self):
  12. """Should accept orcaslicer as a valid value."""
  13. settings = AppSettings(preferred_slicer="orcaslicer")
  14. assert settings.preferred_slicer == "orcaslicer"
  15. def test_set_to_bambu_studio_explicit(self):
  16. """Should accept bambu_studio as an explicit value."""
  17. settings = AppSettings(preferred_slicer="bambu_studio")
  18. assert settings.preferred_slicer == "bambu_studio"
  19. def test_update_schema_default_is_none(self):
  20. """AppSettingsUpdate preferred_slicer should default to None."""
  21. update = AppSettingsUpdate()
  22. assert update.preferred_slicer is None
  23. def test_update_schema_accepts_value(self):
  24. """AppSettingsUpdate should accept a preferred_slicer value."""
  25. update = AppSettingsUpdate(preferred_slicer="orcaslicer")
  26. assert update.preferred_slicer == "orcaslicer"
  27. def test_serialization_roundtrip(self):
  28. """Settings should survive serialization roundtrip."""
  29. settings = AppSettings(preferred_slicer="orcaslicer")
  30. data = settings.model_dump()
  31. restored = AppSettings(**data)
  32. assert restored.preferred_slicer == "orcaslicer"
  33. def test_partial_update_preserves_other_fields(self):
  34. """Updating preferred_slicer should not affect other fields."""
  35. update = AppSettingsUpdate(preferred_slicer="orcaslicer")
  36. data = update.model_dump(exclude_none=True)
  37. assert data == {"preferred_slicer": "orcaslicer"}