test_slot_preset_key.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. """Unit tests for slot-preset key derivation.
  2. Regression coverage for #1053: the backend's get_slot_presets response
  3. must use the same keying scheme as the frontend's getGlobalTrayId
  4. (amsHelpers.ts) so that AMS-HT mappings round-trip correctly.
  5. """
  6. from backend.app.api.routes.printers import _slot_preset_key
  7. def test_regular_ams_uses_global_tray_id():
  8. assert _slot_preset_key(0, 0) == 0
  9. assert _slot_preset_key(0, 3) == 3
  10. assert _slot_preset_key(1, 1) == 5
  11. assert _slot_preset_key(2, 2) == 10
  12. assert _slot_preset_key(3, 3) == 15
  13. def test_ams_ht_keyed_by_ams_id():
  14. # AMS-HT is single-slot and shares its global tray id with the unit id;
  15. # frontend getGlobalTrayId(amsId, 0, false) returns amsId for 128-135.
  16. assert _slot_preset_key(128, 0) == 128
  17. assert _slot_preset_key(129, 0) == 129
  18. assert _slot_preset_key(135, 0) == 135
  19. def test_external_spool_uses_multiplied_id():
  20. # External (ams_id=255) matches PrintersPage lookup: 255 * 4 + tray_id.
  21. assert _slot_preset_key(255, 0) == 1020
  22. assert _slot_preset_key(255, 1) == 1021