@@ -40,6 +40,7 @@ def setUp(self):
40
40
hs .get_application_service_scheduler .return_value = self .mock_scheduler
41
41
hs .get_clock .return_value = MockClock ()
42
42
self .handler = ApplicationServicesHandler (hs )
43
+ self .event_source = hs .get_event_sources ()
43
44
44
45
def test_notify_interested_services (self ):
45
46
interested_service = self ._mkservice (is_interested = True )
@@ -252,6 +253,38 @@ async def get_3pe_protocol(service, unusedProtocol):
252
253
},
253
254
)
254
255
256
+ def test_notify_interested_services_ephemeral (self ):
257
+ interested_service = self ._mkservice (is_interested = True )
258
+ services = [interested_service ]
259
+
260
+ self .mock_store .get_app_services .return_value = services
261
+ self .mock_store .get_type_stream_id_for_appservice .return_value = make_awaitable (579 )
262
+
263
+ event = Mock (event_id = "event_1" )
264
+ self .event_source .sources .receipt .get_new_events_as .return_value = make_awaitable (([event ], None ))
265
+
266
+ self .handler .notify_interested_services_ephemeral ("receipt_key" , 580 )
267
+ self .mock_scheduler .submit_ephemeral_events_for_as .assert_called_once_with (
268
+ interested_service , [event ]
269
+ )
270
+ self .mock_store .set_type_stream_id_for_appservice .assert_called_once_with (
271
+ interested_service , "read_receipt" , 580 ,
272
+ )
273
+
274
+ def test_notify_interested_services_ephemeral_out_of_order (self ):
275
+ interested_service = self ._mkservice (is_interested = True )
276
+ services = [interested_service ]
277
+
278
+ self .mock_store .get_app_services .return_value = services
279
+ self .mock_store .get_type_stream_id_for_appservice .return_value = make_awaitable (580 )
280
+
281
+ event = Mock (event_id = "event_1" )
282
+ self .event_source .sources .receipt .get_new_events_as .return_value = make_awaitable (([event ], None ))
283
+
284
+ self .handler .notify_interested_services_ephemeral ("receipt_key" , 579 )
285
+ self .mock_scheduler .submit_ephemeral_events_for_as .assert_not_called ()
286
+ self .mock_store .set_type_stream_id_for_appservice .assert_not_called ()
287
+
255
288
def _mkservice (self , is_interested , protocols = None ):
256
289
service = Mock ()
257
290
service .is_interested .return_value = make_awaitable (is_interested )
0 commit comments