aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/schema/tests.rs')
-rw-r--r--src/api/schema/tests.rs75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/api/schema/tests.rs b/src/api/schema/tests.rs
index 663f3fc4..e4a7f2a3 100644
--- a/src/api/schema/tests.rs
+++ b/src/api/schema/tests.rs
@@ -50,6 +50,7 @@ fn request_uses_dot_method_names() {
let request = Request {
id: "req_1".into(),
method: Method::WorkspaceCreate(WorkspaceCreateParams {
+ source_workspace_id: None,
cwd: Some("/tmp".into()),
focus: true,
label: Some("api".into()),
@@ -273,6 +274,54 @@ fn request_round_trips_for_agent_explain() {
}
#[test]
+fn integration_list_request_and_response_round_trip() {
+ let request = Request {
+ id: "req_integrations".into(),
+ method: Method::IntegrationList(EmptyParams::default()),
+ };
+ let json = serde_json::to_value(&request).unwrap();
+ assert_eq!(json["method"], "integration.list");
+ assert_eq!(serde_json::from_value::<Request>(json).unwrap(), request);
+
+ let response = SuccessResponse {
+ id: "req_integrations".into(),
+ result: ResponseResult::IntegrationList {
+ integrations: vec![IntegrationInfo {
+ target: IntegrationTarget::Codex,
+ label: "codex".into(),
+ command: "codex".into(),
+ available: true,
+ state: IntegrationState::Outdated,
+ }],
+ },
+ };
+ let json = serde_json::to_value(&response).unwrap();
+ assert_eq!(json["result"]["type"], "integration_list");
+ assert_eq!(json["result"]["integrations"][0]["state"], "outdated");
+ assert_eq!(
+ serde_json::from_value::<SuccessResponse>(json).unwrap(),
+ response
+ );
+}
+
+#[test]
+fn command_invoke_request_round_trips_without_command_text() {
+ let request = Request {
+ id: "req_command".into(),
+ method: Method::CommandInvoke(CommandInvokeParams {
+ command_id: "cmd_0123456789abcdef0123456789abcdef".into(),
+ workspace_id: Some("w1".into()),
+ tab_id: Some("w1:t1".into()),
+ pane_id: Some("w1:p1".into()),
+ selection: None,
+ }),
+ };
+ let json = serde_json::to_value(&request).unwrap();
+ assert_eq!(json["method"], "command.invoke");
+ assert_eq!(serde_json::from_value::<Request>(json).unwrap(), request);
+}
+
+#[test]
fn notification_show_request_parses() {
let json = r#"{"id":"req_1","method":"notification.show","params":{"title":"build failed","body":"api workspace","position":"top-left","sound":"request"}}"#;
let request: Request = serde_json::from_str(json).unwrap();
@@ -1264,6 +1313,32 @@ fn event_wait_parses_typed_match() {
}
#[test]
+fn pane_link_activate_round_trips() {
+ let request = Request {
+ id: "req_pane_link".into(),
+ method: Method::PaneLinkActivate(PaneLinkActivateParams {
+ pane_id: "w1:p1".into(),
+ viewport_row: 3,
+ col: 7,
+ content_revision: Some(42),
+ offset_from_bottom: Some(5),
+ }),
+ };
+ let json = serde_json::to_value(&request).unwrap();
+ assert_eq!(json["method"], "pane.link.activate");
+ let restored: Request = serde_json::from_value(json).unwrap();
+ assert_eq!(restored, request);
+
+ let response = ResponseResult::PaneLinkActivated {
+ url: Some("https://example.test".into()),
+ handled: false,
+ };
+ let json = serde_json::to_string(&response).unwrap();
+ let restored: ResponseResult = serde_json::from_str(&json).unwrap();
+ assert_eq!(restored, response);
+}
+
+#[test]
fn plugin_action_list_and_invoke_round_trips() {
let list = Request {
id: "req_plugin_action_list".into(),