aboutsummaryrefslogtreecommitdiff
path: root/src/api/schema.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/schema.rs')
-rw-r--r--src/api/schema.rs43
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(),