Skip to content

Commit 1edd88d

Browse files
committed
Fix widget action format and add test
1 parent 0506014 commit 1edd88d

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

crates/matrix-sdk/src/widget/machine/driver_req.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ pub(crate) struct SendEventRequest {
220220
/// Raw content of an event.
221221
pub(crate) content: Box<RawJsonValue>,
222222
/// Addition send event parameters to send a future
223+
#[serde(flatten)]
223224
pub(crate) future_parameters: Option<FutureParameters>,
224225
}
225226

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1-
use ruma::owned_room_id;
1+
use std::time::Duration;
22

3-
use crate::widget::machine::{IncomingMessage, WidgetMachine};
3+
use ruma::{api::client::future::FutureParameters, events::TimelineEventType};
4+
5+
use crate::widget::machine::{
6+
from_widget::FromWidgetRequest,
7+
incoming::{IncomingWidgetMessage, IncomingWidgetMessageKind},
8+
};
49

510
use super::WIDGET_ID;
611

712
#[test]
8-
fn process_send_event() {
9-
let (mut machine, _) = WidgetMachine::new(
10-
WIDGET_ID.to_owned(),
11-
owned_room_id!("!a98sd12bjh:example.org"),
12-
true,
13-
None,
14-
);
15-
16-
let actions = machine.process(IncomingMessage::WidgetMessage(json_string!({
13+
fn parse_future_action() {
14+
let raw = json_string!({
1715
"api": "fromWidget",
1816
"widgetId": WIDGET_ID,
1917
"requestId": "send_event-request-id",
@@ -25,6 +23,19 @@ fn process_send_event() {
2523
"state_key": "_@abc:example.org_VFKPEKYWMP",
2624
"type": "org.matrix.msc3401.call.member",
2725
},
28-
})));
29-
println!("{:?}", actions);
26+
});
27+
if let IncomingWidgetMessageKind::Request(a) =
28+
serde_json::from_str::<IncomingWidgetMessage>(&raw).unwrap().kind
29+
{
30+
if let FromWidgetRequest::SendEvent(b) = a.deserialize().unwrap() {
31+
let FutureParameters::Timeout { timeout, group_id } = b.future_parameters.unwrap()
32+
else {
33+
panic!()
34+
};
35+
assert_eq!(timeout, Duration::from_millis(10000));
36+
assert_eq!(group_id, None);
37+
assert_eq!(b.event_type, TimelineEventType::CallMember);
38+
assert_eq!(b.state_key.unwrap(), "_@abc:example.org_VFKPEKYWMP".to_owned());
39+
}
40+
}
3041
}

0 commit comments

Comments
 (0)