@@ -1210,6 +1210,46 @@ mod tests {
1210
1210
assert_eq ! ( events. len( ) , 3 ) ;
1211
1211
}
1212
1212
1213
+ #[ tokio:: test]
1214
+ async fn test_fetch_events_wait_for_events ( ) {
1215
+ let ( relay, _mock) = setup_event_fetching_relay ( 5 ) . await ;
1216
+
1217
+ let events = relay
1218
+ . fetch_events (
1219
+ Filter :: new ( ) . kind ( Kind :: TextNote ) ,
1220
+ Duration :: from_secs ( 15 ) ,
1221
+ ReqExitPolicy :: WaitForEvents ( 2 ) ,
1222
+ )
1223
+ . await
1224
+ . unwrap ( ) ;
1225
+ assert_eq ! ( events. len( ) , 2 ) ; // Requested all text notes but exit after receive 2
1226
+
1227
+ // Task to send additional event
1228
+ let r = relay. clone ( ) ;
1229
+ tokio:: spawn ( async move {
1230
+ tokio:: time:: sleep ( Duration :: from_secs ( 2 ) ) . await ;
1231
+
1232
+ // Signer
1233
+ let keys = Keys :: generate ( ) ;
1234
+
1235
+ // Build and send event
1236
+ let event = EventBuilder :: metadata ( & Metadata :: new ( ) . name ( "Test" ) )
1237
+ . sign_with_keys ( & keys)
1238
+ . unwrap ( ) ;
1239
+ r. send_event ( & event) . await . unwrap ( ) ;
1240
+ } ) ;
1241
+
1242
+ let events = relay
1243
+ . fetch_events (
1244
+ Filter :: new ( ) . kind ( Kind :: Metadata ) ,
1245
+ Duration :: from_secs ( 5 ) ,
1246
+ ReqExitPolicy :: WaitForEvents ( 1 ) ,
1247
+ )
1248
+ . await
1249
+ . unwrap ( ) ;
1250
+ assert_eq ! ( events. len( ) , 1 ) ;
1251
+ }
1252
+
1213
1253
#[ tokio:: test]
1214
1254
async fn test_fetch_events_wait_for_events_after_eose ( ) {
1215
1255
let ( relay, _mock) = setup_event_fetching_relay ( 10 ) . await ;
0 commit comments