import pytest from pydantic import ValidationError from src.api.endpoints import external_stage_code from src.schemas.models import ProcessRequest_chat def test_client_mode_defaults_to_direct(): request = ProcessRequest_chat( sessionId="session-1", timeStamp="1", text="你好", ) assert request.clientMode == "direct" def test_browser_addon_client_mode_is_accepted(): request = ProcessRequest_chat( sessionId="session-1", timeStamp="1", text="你好", clientMode="browser_addon", ) assert request.clientMode == "browser_addon" def test_unknown_client_mode_is_rejected(): with pytest.raises(ValidationError): ProcessRequest_chat( sessionId="session-1", timeStamp="1", text="你好", clientMode="unknown", ) @pytest.mark.parametrize("client_mode", ["", " ", None]) def test_empty_client_mode_defaults_to_direct(client_mode): request = ProcessRequest_chat( sessionId="session-1", timeStamp="1", text="你好", clientMode=client_mode, ) assert request.clientMode == "direct" @pytest.mark.parametrize( ("client_mode", "raw_code", "expected"), [ ("direct", "0001", "0001"), ("direct", "1002", "1002"), ("browser_addon", "0001", "browser_addon.0001"), ("browser_addon", "1002", "browser_addon.1002"), ], ) def test_external_stage_code(client_mode, raw_code, expected): assert external_stage_code(client_mode, raw_code) == expected