Skip to content

Commit 9d15292

Browse files
committed
update unittests to cover files on merging
1 parent ae060cd commit 9d15292

2 files changed

Lines changed: 26 additions & 10 deletions

File tree

osf/models/user.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,9 @@ def merge_user(self, user):
733733
# Capture content to SHARE reindex BEFORE merge transfers contributors
734734
# After merge, user.contributed and user.preprints will be empty
735735
nodes_to_reindex = list(user.contributed)
736+
node_ids_to_reindex = [node.id for node in nodes_to_reindex]
736737
preprints_to_reindex = list(user.preprints.all())
738+
preprint_ids_to_reindex = [preprint.id for preprint in preprints_to_reindex]
737739

738740
# Move over the other user's attributes
739741
# TODO: confirm
@@ -883,11 +885,11 @@ def merge_user(self, user):
883885
node_ctype = ContentType.objects.get_for_model(AbstractNode)
884886
preprint_ctype = ContentType.objects.get_for_model(Preprint)
885887
nodes_files_to_reindex = OsfStorageFile.objects.filter(
886-
target_object_id__in=user.contributed.values_list('id', flat=True), target_content_type=node_ctype,
888+
target_object_id__in=node_ids_to_reindex, target_content_type=node_ctype,
887889
guids__isnull=False
888890
)
889891
preprints_files_to_reindex = OsfStorageFile.objects.filter(
890-
target_object_id__in=user.preprints.values_list('id', flat=True), target_content_type=preprint_ctype,
892+
target_object_id__in=preprint_ids_to_reindex, target_content_type=preprint_ctype,
891893
guids__isnull=False
892894
)
893895
for file in nodes_files_to_reindex.iterator(chunk_size=100):

osf_tests/test_user.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ def test_merge_drafts(self, user):
445445
@mock.patch('api.share.utils.update_share')
446446
def test_merge_user_triggers_share_reindex(self, mock_update_share):
447447
from osf.models import Preprint
448+
from addons.osfstorage.models import OsfStorageFile
448449

449450
user = AuthUserFactory()
450451
user2 = AuthUserFactory()
@@ -457,26 +458,39 @@ def test_merge_user_triggers_share_reindex(self, mock_update_share):
457458
preprint_two = PreprintFactory(title='preprint_two')
458459
preprint_two.add_contributor(user2)
459460

461+
node_file = OsfStorageFile.create(
462+
target=node_one, path='/node_file.txt', name='node_file.txt', materialized_path='/node_file.txt'
463+
)
464+
node_file.save(skip_search=True)
465+
node_file.get_guid(create=True)
466+
467+
preprint_file = OsfStorageFile.create(
468+
target=preprint_one, path='/preprint_file.txt', name='preprint_file.txt',
469+
materialized_path='/preprint_file.txt'
470+
)
471+
preprint_file.save(skip_search=True)
472+
preprint_file.get_guid(create=True)
473+
460474
user.merge_user(user2)
461475

476+
all_reindexed = [call[0][0] for call in mock_update_share.call_args_list]
462477
# 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-
]
478+
nodes_reindexed = [node_reindexed for node_reindexed in all_reindexed if isinstance(node_reindexed, AbstractNode)]
467479
assert len(nodes_reindexed) == 2
468480
assert node_one in nodes_reindexed
469481
assert node_two in nodes_reindexed
470482

471483
# 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-
]
484+
preprints_reindexed = [preprint_reindexed for preprint_reindexed in all_reindexed if isinstance(preprint_reindexed, Preprint)]
476485
assert len(preprints_reindexed) == 2
477486
assert preprint_one in preprints_reindexed
478487
assert preprint_two in preprints_reindexed
479488

489+
# Verify update_share was called for files belonging to user2's nodes and preprints
490+
files_reindexed = [file_reindexed for file_reindexed in all_reindexed if isinstance(file_reindexed, OsfStorageFile)]
491+
assert node_file in files_reindexed
492+
assert preprint_file in files_reindexed
493+
480494
def test_cant_create_user_without_username(self):
481495
u = OSFUser() # No username given
482496
with pytest.raises(ValidationError):

0 commit comments

Comments
 (0)