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
510use 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