Skip to content

Commit 82c9fba

Browse files
committed
Fix account merge not transferring editorship of all merged accounts
1 parent 1432149 commit 82c9fba

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

app/models/user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ def merge(*others)
336336
other.activities.update_all(trackable_id: id, trackable_type: self.class.name)
337337
other.subscriptions.update_all(user_id: id)
338338
new_collaborations += other.collaborations
339-
new_editable_ids = other.editable_ids
339+
new_editable_ids |= other.editable_ids
340340
attrs.reverse_merge!(other.attributes)
341341
end
342342
self.editable_ids = self.editable_ids | new_editable_ids

test/models/user_test.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,10 @@ class UserTest < ActiveSupport::TestCase
340340
provider = content_providers(:goblet)
341341
provider.add_editor(user1)
342342
provider.add_editor(user2)
343+
provider2 = content_providers(:iann)
344+
provider2.add_editor(user2)
345+
provider3 = content_providers(:two)
346+
provider3.add_editor(user3)
343347

344348
# Collaborations
345349
workflow1 = workflows(:one)
@@ -348,12 +352,13 @@ class UserTest < ActiveSupport::TestCase
348352
workflow1.collaborators << user2
349353
workflow2.collaborators << user3
350354

351-
352355
# Test
353356
assert_no_difference('Event.count') do
354357
assert_no_difference('Material.count') do
355358
assert_no_difference('Subscription.count') do
356359
assert_difference('provider.editors.count', -1) do
360+
assert_no_difference('provider2.editors.count') do
361+
assert_no_difference('provider3.editors.count') do
357362
assert_difference('Collaboration.count', -1) do
358363
assert_difference('User.count', -2) do
359364
assert user1.merge(user2, user3)
@@ -365,6 +370,8 @@ class UserTest < ActiveSupport::TestCase
365370
end
366371
end
367372
end
373+
end
374+
end
368375

369376
assert_equal 'base_user', user1.username
370377
assert_equal user1_id, user1.id
@@ -387,7 +394,9 @@ class UserTest < ActiveSupport::TestCase
387394
assert_equal user1, subscription1.reload.user
388395
assert_equal user1, subscription2.reload.user
389396

390-
assert_includes provider.reload.editors, user1
397+
assert_equal [user1], provider.reload.editors
398+
assert_equal [user1], provider2.reload.editors
399+
assert_equal [user1], provider3.reload.editors
391400

392401
assert_equal [user1], workflow1.reload.collaborators.to_a
393402
assert_equal [user1], workflow2.reload.collaborators.to_a

0 commit comments

Comments
 (0)