Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
use super::*;
|
||||
use serde_json::Value;
|
||||
|
||||
#[test]
|
||||
fn block_context_serializes_id_as_block_id() {
|
||||
let ctx = BlockContext {
|
||||
id: "test-block-123".to_string().into(),
|
||||
index: 0.into(),
|
||||
command: "ls".to_string(),
|
||||
output: "file.txt".to_string(),
|
||||
exit_code: 0.into(),
|
||||
is_auto_attached: false,
|
||||
started_ts: None,
|
||||
finished_ts: None,
|
||||
pwd: None,
|
||||
shell: None,
|
||||
username: None,
|
||||
hostname: None,
|
||||
git_branch: None,
|
||||
os: None,
|
||||
session_id: None,
|
||||
};
|
||||
|
||||
let json: Value = serde_json::to_value(&ctx).unwrap();
|
||||
// The `id` field should serialize as `block_id` on the wire.
|
||||
assert!(
|
||||
json.get("block_id").is_some(),
|
||||
"expected 'block_id' key in JSON"
|
||||
);
|
||||
assert!(json.get("id").is_none(), "should not have 'id' key in JSON");
|
||||
assert_eq!(json["block_id"], "test-block-123");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_context_omits_none_environment_fields_with_default() {
|
||||
let ctx = BlockContext {
|
||||
id: "b1".to_string().into(),
|
||||
index: 0.into(),
|
||||
command: "echo hi".to_string(),
|
||||
output: "hi".to_string(),
|
||||
exit_code: 0.into(),
|
||||
is_auto_attached: false,
|
||||
started_ts: None,
|
||||
finished_ts: None,
|
||||
pwd: None,
|
||||
shell: None,
|
||||
username: None,
|
||||
hostname: None,
|
||||
git_branch: None,
|
||||
os: None,
|
||||
session_id: None,
|
||||
};
|
||||
|
||||
let json_str = serde_json::to_string(&ctx).unwrap();
|
||||
// Environment fields with None should still serialize (serde default, not skip_serializing_if).
|
||||
// They appear as null in the JSON.
|
||||
let json: Value = serde_json::from_str(&json_str).unwrap();
|
||||
assert!(json.get("pwd").is_some());
|
||||
assert!(json["pwd"].is_null());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_context_deserializes_without_environment_fields() {
|
||||
// Simulates deserializing a BlockContext from an older format that doesn't
|
||||
// have environment fields. The #[serde(default)] attributes should handle this.
|
||||
let json = r#"{
|
||||
"block_id": "b1",
|
||||
"index": 0,
|
||||
"command": "ls",
|
||||
"output": "file.txt",
|
||||
"exit_code": 0,
|
||||
"is_auto_attached": false
|
||||
}"#;
|
||||
|
||||
let ctx: BlockContext = serde_json::from_str(json).unwrap();
|
||||
assert_eq!(ctx.id, BlockId::from("b1".to_string()));
|
||||
assert_eq!(ctx.command, "ls");
|
||||
assert!(ctx.pwd.is_none());
|
||||
assert!(ctx.shell.is_none());
|
||||
assert!(ctx.session_id.is_none());
|
||||
}
|
||||
Reference in New Issue
Block a user