# edited by glg
from pypos.core.utils.scanner_settings_utils import read_scanner_settings, save_scanner_settings


def test_scanner_settings_roundtrip_backend_mode():
    original = read_scanner_settings()
    try:
        saved = save_scanner_settings(
            {
                "enabled": True,
                "max_inter_char_ms": 70,
                "min_length": 7,
                "require_enter_suffix": True,
                "duplicate_guard_ms": 220,
                "backend_mode": "rawinput",
                "rawinput_enabled": True,
                "rawinput_whitelist": ["hid#vid_05e0&pid_1200", "scanner_outlet_01"],
            }
        )
        assert saved["enabled"] is True
        assert saved["max_inter_char_ms"] == 70
        assert saved["min_length"] == 7
        assert saved["require_enter_suffix"] is True
        assert saved["duplicate_guard_ms"] == 220
        assert saved["backend_mode"] == "rawinput"
        assert saved["rawinput_enabled"] is True
        assert saved["rawinput_whitelist"] == ["hid#vid_05e0&pid_1200", "scanner_outlet_01"]
    finally:
        save_scanner_settings(original)


def test_scanner_settings_invalid_backend_mode_fallback_wedge():
    original = read_scanner_settings()
    try:
        saved = save_scanner_settings({"backend_mode": "invalid_mode"})
        assert saved["backend_mode"] == "wedge"
    finally:
        save_scanner_settings(original)
