use super::*; use pretty_assertions::assert_eq; use serde_json::json; #[test] fn desktop_question_reply_accepts_single_and_batched_envelopes() { let reply = json!({"questionItemId": "[\"request_user_input_async\",\"item\",0]", "question": "Which environment?", "answer": "Staging", "extra": true}); for payload in [reply.clone(), json!([reply])] { let text = format!( " \n\n{payload}\n\n " ); assert_eq!( display_text(&text).as_deref(), Some("> Which environment?\n\nStaging") ); } let text = "[{\"questionItemId\":\"one\",\"question\":\"First?\",\"answer\":\"Yes\"},{\"questionItemId\":\"two\",\"question\":\"Second?\",\"answer\":\"No\"}]"; assert_eq!( display_text(text).as_deref(), Some("> First?\n\nYes\n\n> Second?\n\nNo") ); } #[test] fn malformed_or_embedded_question_envelopes_remain_ordinary_text() { for text in [ "> Which environment?\n\nStaging", "[]", "[{\"questionItemId\":\"one\",\"question\":\"First?\",\"answer\":\"Yes\"},null]", "Quoted: {\"questionItemId\":\"one\",\"question\":\"First?\",\"answer\":\"Yes\"}", "{\"questionItemId\":\"one\",\"question\":\"First?\",\"answer\":\"Yes\"} trailing text", ] { assert_eq!(parse(text), None, "{text}"); } }