Skip to content

Commit 626f51e

Browse files
committed
fix(brp): allow params and id to be undefined
1 parent a66cedd commit 626f51e

1 file changed

Lines changed: 40 additions & 2 deletions

File tree

crates/bevy_remote/src/lib.rs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,8 +1126,8 @@ impl<'de> Deserialize<'de> for BrpRequest {
11261126
return Err(de::Error::missing_field("jsonrpc"));
11271127
}
11281128
let method = method.ok_or_else(|| de::Error::missing_field("method"))?;
1129-
let id = id.ok_or_else(|| de::Error::missing_field("id"))?;
1130-
let params = params.ok_or_else(|| de::Error::missing_field("params"))?;
1129+
let id = id.flatten();
1130+
let params = params.flatten();
11311131
Ok(BrpRequest { method, id, params })
11321132
}
11331133
}
@@ -1449,3 +1449,41 @@ fn remove_closed_watching_requests(mut requests: ResMut<RemoteWatchingRequests>)
14491449
}
14501450
}
14511451
}
1452+
1453+
#[cfg(test)]
1454+
mod tests {
1455+
use crate::BrpRequest;
1456+
use serde_json::json;
1457+
1458+
#[test]
1459+
fn deserialize_brp_request_params_optional() {
1460+
let request_json: &str = r#"{
1461+
"jsonrpc": "2.0",
1462+
"method": "world.list_components",
1463+
"id": 1
1464+
}"#;
1465+
1466+
let request: BrpRequest = serde_json::from_str(request_json).unwrap();
1467+
1468+
assert_eq!(request.method, "world.list_components");
1469+
assert_eq!(request.id, Some(json!(1)));
1470+
assert_eq!(request.params, None);
1471+
}
1472+
1473+
#[test]
1474+
fn deserialize_brp_request_id_optional() {
1475+
let request_json: &str = r#"{
1476+
"jsonrpc": "2.0",
1477+
"method": "world.list_components",
1478+
"params": {
1479+
"number": 5
1480+
}
1481+
}"#;
1482+
1483+
let request: BrpRequest = serde_json::from_str(request_json).unwrap();
1484+
1485+
assert_eq!(request.method, "world.list_components");
1486+
assert_eq!(request.id, None);
1487+
assert_eq!(request.params, Some(json!({ "number": 5 })));
1488+
}
1489+
}

0 commit comments

Comments
 (0)