diff options
Diffstat (limited to 'src/api')
| -rw-r--r-- | src/api/schema.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/api/schema.rs b/src/api/schema.rs index 42a9c259..38393141 100644 --- a/src/api/schema.rs +++ b/src/api/schema.rs @@ -405,12 +405,21 @@ pub enum ResponseResult { WorkspaceInfo { workspace: WorkspaceInfo, }, + WorkspaceCreated { + workspace: WorkspaceInfo, + tab: TabInfo, + root_pane: PaneInfo, + }, WorkspaceList { workspaces: Vec<WorkspaceInfo>, }, TabInfo { tab: TabInfo, }, + TabCreated { + tab: TabInfo, + root_pane: PaneInfo, + }, TabList { tabs: Vec<TabInfo>, }, @@ -865,6 +874,40 @@ mod tests { } #[test] + fn create_response_round_trips_with_root_pane() { + let response = SuccessResponse { + id: "req_2".into(), + result: ResponseResult::TabCreated { + tab: TabInfo { + tab_id: "w_1:2".into(), + workspace_id: "w_1".into(), + number: 2, + label: "review".into(), + focused: false, + pane_count: 1, + agent_status: AgentStatus::Unknown, + }, + root_pane: PaneInfo { + pane_id: "w_1-3".into(), + workspace_id: "w_1".into(), + tab_id: "w_1:2".into(), + focused: false, + cwd: Some("/tmp/review".into()), + agent: None, + agent_status: AgentStatus::Unknown, + revision: 0, + }, + }, + }; + + let json = serde_json::to_string(&response).unwrap(); + assert!(json.contains("\"type\":\"tab_created\"")); + assert!(json.contains("\"root_pane\"")); + let restored: SuccessResponse = serde_json::from_str(&json).unwrap(); + assert_eq!(restored, response); + } + + #[test] fn error_response_round_trips() { let response = ErrorResponse { id: "req_1".into(), |
