From 0666434ec89ce945991817a5f56342bad6128381 Mon Sep 17 00:00:00 2001 From: Hare Date: Wed, 28 Oct 2026 17:59:19 +0900 Subject: [PATCH] test: align signed native fixtures with current Ticket input contracts --- .../tests/subject_authorization_tests.rs | 4 ++-- .../src/server_ticket_tools_backend_tests.rs | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/crates/workspace-server/src/server/tests/subject_authorization_tests.rs b/crates/workspace-server/src/server/tests/subject_authorization_tests.rs index 6b80d8f9f..bb98783ae 100644 --- a/crates/workspace-server/src/server/tests/subject_authorization_tests.rs +++ b/crates/workspace-server/src/server/tests/subject_authorization_tests.rs @@ -1997,10 +1997,10 @@ async fn native_wip_ticket_create_uses_same_signed_authorization_before_real_bac .as_array() .unwrap() .iter() - .find(|interface| interface["reference"]["name"] == "yoi.ticket/collection/v1") + .find(|interface| interface["reference"]["name"] == "yoi.ticket/collection/v2") .expect("native Ticket collection interface")["reference"] .clone(); - let args = json!({"path":"/tickets","interface":reference,"operation":"create","arguments":{"title":"Native authorized Ticket"}}).to_string(); + let args = json!({"path":"/tickets","interface":reference,"operation":"create","arguments":{"content":{"title":"Native authorized Ticket"}}}).to_string(); assert!( invoke .execute(&args, ToolExecutionContext::direct()) diff --git a/crates/workspace-server/src/server_ticket_tools_backend_tests.rs b/crates/workspace-server/src/server_ticket_tools_backend_tests.rs index 7562c53ab..c1cd028eb 100644 --- a/crates/workspace-server/src/server_ticket_tools_backend_tests.rs +++ b/crates/workspace-server/src/server_ticket_tools_backend_tests.rs @@ -196,6 +196,26 @@ impl TicketSurface { let reference_field = if name == "ShowTicket" { "id" } else { "ticket" }; let path = format!("/tickets/{}", input[reference_field].as_str().unwrap()); input.as_object_mut().unwrap().remove(reference_field); + match name { + "ShowTicket" => { + let mut page = serde_json::Map::new(); + for (legacy, native) in [("event_limit", "limit"), ("event_cursor", "cursor")] { + if let Some(value) = input.as_object_mut().unwrap().remove(legacy) { + page.insert(native.into(), value); + } + } + if !page.is_empty() { + input["page"] = page.into(); + } + } + "TicketAssignmentAnswer" => { + let fields = input.as_object_mut().unwrap(); + let assignment_id = fields.remove("assignment_id").unwrap(); + let expected_last_event_id = fields.remove("expected_last_event_id").unwrap(); + input["observed"] = serde_json::json!({"assignment_id":assignment_id,"expected_last_event_id":expected_last_event_id}); + } + _ => {} + } // Observe the real item representation before invoking a mutation. Tracking // reads alone do not establish the Ticket WIP object validator. Explicit // refresh also reconciles stale observations after an unknown result;