use super::*; use anyhow::Result; use codex_protocol::protocol::TurnAbortReason; use pretty_assertions::assert_eq; use serde_json::json; #[test] fn client_response_payload_serializes_without_an_intermediate_json_value() -> Result<()> { let payload = ClientResponsePayload::ThreadArchive(v2::ThreadArchiveResponse {}); assert_eq!(serde_json::to_string(&payload)?, "{}"); let Some(ClientResponse::ThreadArchive { request_id, response: _, }) = payload.into_client_response(RequestId::Integer(7)) else { panic!("expected thread/archive client response"); }; assert_eq!(request_id, RequestId::Integer(7)); Ok(()) } #[test] fn interrupt_conversation_payload_stays_jsonrpc_only() -> Result<()> { let payload = ClientResponsePayload::InterruptConversation(v1::InterruptConversationResponse { abort_reason: TurnAbortReason::Interrupted, }); assert_eq!( serde_json::to_value(&payload)?, json!({ "abortReason": "interrupted", }) ); assert!( payload .into_client_response(RequestId::Integer(8)) .is_none() ); Ok(()) }