@@ -3340,11 +3340,18 @@ describe("Room", function () {
3340
3340
} ) ;
3341
3341
}
3342
3342
3343
- function predecessorEvent ( newRoomId : string , predecessorRoomId : string ) : MatrixEvent {
3343
+ function predecessorEvent (
3344
+ newRoomId : string ,
3345
+ predecessorRoomId : string ,
3346
+ tombstoneEventId : string | null = null ,
3347
+ ) : MatrixEvent {
3348
+ const content =
3349
+ tombstoneEventId === null
3350
+ ? { predecessor_room_id : predecessorRoomId }
3351
+ : { predecessor_room_id : predecessorRoomId , last_known_event_id : tombstoneEventId } ;
3352
+
3344
3353
return new MatrixEvent ( {
3345
- content : {
3346
- predecessor_room_id : predecessorRoomId ,
3347
- } ,
3354
+ content,
3348
3355
event_id : `predecessor_event_id_pred_${ predecessorRoomId } ` ,
3349
3356
origin_server_ts : 1432735824653 ,
3350
3357
room_id : newRoomId ,
@@ -3380,7 +3387,20 @@ describe("Room", function () {
3380
3387
const useMsc3946 = true ;
3381
3388
expect ( room . findPredecessor ( useMsc3946 ) ) . toEqual ( {
3382
3389
roomId : "otherreplacedroomid" ,
3383
- eventId : null , // m.predecessor does not include an event_id
3390
+ eventId : null , // m.predecessor did not include an event_id
3391
+ } ) ;
3392
+ } ) ;
3393
+
3394
+ it ( "uses the m.predecessor event ID if provided" , ( ) => {
3395
+ const room = new Room ( "roomid" , client ! , "@u:example.com" ) ;
3396
+ room . addLiveEvents ( [
3397
+ roomCreateEvent ( "roomid" , "replacedroomid" ) ,
3398
+ predecessorEvent ( "roomid" , "otherreplacedroomid" , "lstevtid" ) ,
3399
+ ] ) ;
3400
+ const useMsc3946 = true ;
3401
+ expect ( room . findPredecessor ( useMsc3946 ) ) . toEqual ( {
3402
+ roomId : "otherreplacedroomid" ,
3403
+ eventId : "lstevtid" ,
3384
3404
} ) ;
3385
3405
} ) ;
3386
3406
@@ -3399,7 +3419,7 @@ describe("Room", function () {
3399
3419
const room = new Room ( "roomid" , client ! , "@u:example.com" ) ;
3400
3420
room . addLiveEvents ( [
3401
3421
roomCreateEvent ( "roomid" , null ) , // Create event has no predecessor
3402
- predecessorEvent ( "roomid" , "otherreplacedroomid" ) ,
3422
+ predecessorEvent ( "roomid" , "otherreplacedroomid" , "lastevtid" ) ,
3403
3423
] ) ;
3404
3424
// Don't provide an argument for msc3946ProcessDynamicPredecessor -
3405
3425
// we should ignore the predecessor event.
0 commit comments