@@ -442,6 +442,41 @@ def test_merge_drafts(self, user):
442442 assert not draft_five .has_permission (user2 , permissions .READ )
443443 assert not draft_five .is_contributor (user2 )
444444
445+ @mock .patch ('api.share.utils.update_share' )
446+ def test_merge_user_triggers_share_reindex (self , mock_update_share ):
447+ from osf .models import Preprint
448+
449+ user = AuthUserFactory ()
450+ user2 = AuthUserFactory ()
451+
452+ node_one = ProjectFactory (creator = user2 , title = 'node_one' )
453+ node_two = ProjectFactory (title = 'node_two' )
454+ node_two .add_contributor (user2 )
455+
456+ preprint_one = PreprintFactory (creator = user2 , title = 'preprint_one' )
457+ preprint_two = PreprintFactory (title = 'preprint_two' )
458+ preprint_two .add_contributor (user2 )
459+
460+ user .merge_user (user2 )
461+
462+ # Verify update_share was called for both nodes
463+ nodes_reindexed = [
464+ call [0 ][0 ] for call in mock_update_share .call_args_list
465+ if isinstance (call [0 ][0 ], AbstractNode )
466+ ]
467+ assert len (nodes_reindexed ) == 2
468+ assert node_one in nodes_reindexed
469+ assert node_two in nodes_reindexed
470+
471+ # Verify update_share was called for both preprints
472+ preprints_reindexed = [
473+ call [0 ][0 ] for call in mock_update_share .call_args_list
474+ if isinstance (call [0 ][0 ], Preprint )
475+ ]
476+ assert len (preprints_reindexed ) == 2
477+ assert preprint_one in preprints_reindexed
478+ assert preprint_two in preprints_reindexed
479+
445480 def test_cant_create_user_without_username (self ):
446481 u = OSFUser () # No username given
447482 with pytest .raises (ValidationError ):
0 commit comments