use serde::Deserialize;
use crate::orchestration::parse_json_payload;
#[derive(Debug, Deserialize)]
struct Expected {
#[allow(dead_code)]
required_field: String,
}
fn multibyte_payload(pad_chars: usize) -> serde_json::Value {
serde_json::json!({ "unexpected": "æ".repeat(pad_chars) })
}
#[test]
fn multibyte_payload_excerpt_reports_a_typed_error_instead_of_panicking() {
for pad_chars in 400..460 {
let error = parse_json_payload::<Expected>(multibyte_payload(pad_chars), "orchestration")
.expect_err("payload is missing `required_field`");
let message = format!("{error:?}");
assert!(
message.contains("orchestration parse error"),
"expected a typed parse error, got: {message}"
);
}
}
#[test]
fn short_payloads_are_quoted_in_full() {
let error = parse_json_payload::<Expected>(serde_json::json!({ "unexpected": "æøå" }), "test")
.expect_err("payload is missing `required_field`");
let message = format!("{error:?}");
assert!(message.contains("æøå"), "message was: {message}");
assert!(!message.contains('…'), "message was: {message}");
}