1
1
use std:: { future:: ready, ops:: ControlFlow , time:: Duration } ;
2
2
3
3
use assert_matches:: assert_matches;
4
- use assert_matches2:: assert_let;
5
4
use matrix_sdk:: {
5
+ assert_let_timeout, assert_next_matches_with_timeout,
6
6
event_cache:: {
7
- paginator:: PaginatorState , BackPaginationOutcome , EventCacheError , EventsOrigin ,
8
- RoomEventCacheUpdate , TimelineHasBeenResetWhilePaginating ,
7
+ paginator:: PaginatorState , BackPaginationOutcome , EventCacheError , RoomEventCacheUpdate ,
8
+ TimelineHasBeenResetWhilePaginating ,
9
9
} ,
10
10
test_utils:: { assert_event_matches_msg, logged_in_client_with_server, mocks:: MatrixMockServer } ,
11
11
} ;
@@ -15,7 +15,7 @@ use matrix_sdk_test::{
15
15
} ;
16
16
use ruma:: { event_id, events:: AnyTimelineEvent , room_id, serde:: Raw , user_id} ;
17
17
use serde_json:: json;
18
- use tokio:: { spawn, time :: timeout } ;
18
+ use tokio:: spawn;
19
19
use wiremock:: {
20
20
matchers:: { header, method, path_regex, query_param} ,
21
21
Mock , MockServer , ResponseTemplate ,
@@ -104,13 +104,11 @@ async fn test_event_cache_receives_events() {
104
104
server. reset ( ) . await ;
105
105
106
106
// It does receive one update,
107
- let update = timeout ( Duration :: from_secs ( 2 ) , subscriber. recv ( ) )
108
- . await
109
- . expect ( "timeout after receiving a sync update" )
110
- . expect ( "should've received a room event cache update" ) ;
107
+ assert_let_timeout ! (
108
+ Ok ( RoomEventCacheUpdate :: AddTimelineEvents { events, .. } ) = subscriber. recv( )
109
+ ) ;
111
110
112
111
// Which contains the event that was sent beforehand.
113
- assert_let ! ( RoomEventCacheUpdate :: AddTimelineEvents { events, .. } = update) ;
114
112
assert_eq ! ( events. len( ) , 1 ) ;
115
113
assert_event_matches_msg ( & events[ 0 ] , "bonjour monde" ) ;
116
114
@@ -177,14 +175,8 @@ async fn test_ignored_unignored() {
177
175
} )
178
176
. await ;
179
177
180
- // It does receive one update,
181
- let update = timeout ( Duration :: from_secs ( 2 ) , subscriber. recv ( ) )
182
- . await
183
- . expect ( "timeout after receiving a sync update" )
184
- . expect ( "should've received a room event cache update" ) ;
185
-
186
- // Which notifies about the clear.
187
- assert_matches ! ( update, RoomEventCacheUpdate :: Clear ) ;
178
+ // It does receive one update, which notifies about the clear.
179
+ assert_let_timeout ! ( Ok ( RoomEventCacheUpdate :: Clear ) = subscriber. recv( ) ) ;
188
180
189
181
// Receiving new events still works.
190
182
server
@@ -198,12 +190,9 @@ async fn test_ignored_unignored() {
198
190
. await ;
199
191
200
192
// We do receive one update,
201
- let update = timeout ( Duration :: from_secs ( 2 ) , subscriber. recv ( ) )
202
- . await
203
- . expect ( "timeout after receiving a sync update" )
204
- . expect ( "should've received a room event cache update" ) ;
205
-
206
- assert_let ! ( RoomEventCacheUpdate :: AddTimelineEvents { events, .. } = update) ;
193
+ assert_let_timeout ! (
194
+ Ok ( RoomEventCacheUpdate :: AddTimelineEvents { events, .. } ) = subscriber. recv( )
195
+ ) ;
207
196
assert_eq ! ( events. len( ) , 1 ) ;
208
197
assert_event_matches_msg ( & events[ 0 ] , "i don't like this dexter" ) ;
209
198
@@ -817,10 +806,7 @@ async fn test_limited_timeline_resets_pagination() {
817
806
818
807
// And the paginator state delives this as an update, and is internally
819
808
// consistent with it:
820
- assert_eq ! (
821
- timeout( Duration :: from_secs( 1 ) , pagination_status. next( ) ) . await ,
822
- Ok ( Some ( PaginatorState :: Idle ) )
823
- ) ;
809
+ assert_next_matches_with_timeout ! ( pagination_status, PaginatorState :: Idle ) ;
824
810
assert ! ( pagination. hit_timeline_start( ) ) ;
825
811
826
812
// When a limited sync comes back from the server,
@@ -834,22 +820,15 @@ async fn test_limited_timeline_resets_pagination() {
834
820
}
835
821
836
822
// We receive an update about the limited timeline.
837
- assert_matches ! (
838
- timeout( Duration :: from_secs( 1 ) , room_stream. recv( ) ) . await ,
839
- Ok ( Ok ( RoomEventCacheUpdate :: Clear ) )
840
- ) ;
823
+ assert_let_timeout ! ( Ok ( RoomEventCacheUpdate :: Clear ) = room_stream. recv( ) ) ;
841
824
842
825
// The paginator state is reset: status set to Initial, hasn't hit the timeline
843
826
// start.
844
827
assert ! ( !pagination. hit_timeline_start( ) ) ;
845
828
assert_eq ! ( pagination_status. get( ) , PaginatorState :: Initial ) ;
846
829
847
830
// We receive an update about the paginator status.
848
- let next_state = timeout ( Duration :: from_secs ( 1 ) , pagination_status. next ( ) )
849
- . await
850
- . expect ( "timeout" )
851
- . expect ( "no update" ) ;
852
- assert_eq ! ( next_state, PaginatorState :: Initial ) ;
831
+ assert_next_matches_with_timeout ! ( pagination_status, PaginatorState :: Initial ) ;
853
832
854
833
assert ! ( room_stream. is_empty( ) ) ;
855
834
}
@@ -906,15 +885,11 @@ async fn test_limited_timeline_with_storage() {
906
885
)
907
886
. await ;
908
887
909
- let update = timeout ( Duration :: from_secs ( 2 ) , subscriber. recv ( ) )
910
- . await
911
- . expect ( "timeout after receiving a sync update" )
912
- . expect ( "should've received a room event cache update" ) ;
913
-
914
- assert_matches ! ( update, RoomEventCacheUpdate :: AddTimelineEvents { events, origin: EventsOrigin :: Sync } => {
915
- assert_eq!( events. len( ) , 1 ) ;
916
- assert_event_matches_msg( & events[ 0 ] , "gappy!" ) ;
917
- } ) ;
888
+ assert_let_timeout ! (
889
+ Ok ( RoomEventCacheUpdate :: AddTimelineEvents { events, .. } ) = subscriber. recv( )
890
+ ) ;
891
+ assert_eq ! ( events. len( ) , 1 ) ;
892
+ assert_event_matches_msg ( & events[ 0 ] , "gappy!" ) ;
918
893
919
894
// That's all, folks!
920
895
assert ! ( subscriber. is_empty( ) ) ;
0 commit comments