improve user merge for user observer links
fixes FOO-1591 flag = none test plan: - have two users observing the same student - remove user 1 as an observer - merge user 2 into user 1 - it should work Change-Id: Ic7cecc446e88a62916329d0411fa49d0787f89a1 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258572 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Cody Cutrer <cody@instructure.com> Product-Review: Cody Cutrer <cody@instructure.com> QA-Review: Simon Williams <simon@instructure.com>
This commit is contained in:
parent
d97a457542
commit
c7224cf89f
|
@ -410,6 +410,8 @@ class UserMerge
|
|||
merge_data.build_more_data(observer_links, user: from_user, data: data)
|
||||
|
||||
Shard.partition_by_shard(observer_links) do |shard_observer_links|
|
||||
# restore user observation links that are deleted on the target user but active on the from_user
|
||||
UserObservationLink.where(observer_id: target_user, workflow_state: 'deleted', user_id: shard_observer_links.map(&:user_id)).update_all(workflow_state: 'active')
|
||||
# delete links that are now duplicates between the from_user and target_user
|
||||
UserObservationLink.where(id: shard_observer_links).where(user_id: target_user.as_observer_observation_links.select(:user_id)).destroy_all
|
||||
# delete what would be observing themselves.
|
||||
|
|
|
@ -460,15 +460,22 @@ describe UserMerge do
|
|||
it "should move and uniquify observed users" do
|
||||
student1 = user_model
|
||||
student2 = user_model
|
||||
student3 = user_model
|
||||
add_linked_observer(student1, user1)
|
||||
add_linked_observer(student2, user1)
|
||||
add_linked_observer(student3, user1)
|
||||
add_linked_observer(student2, user2)
|
||||
|
||||
# make sure active link from user 1 comes over even if user 2 has
|
||||
# a destroyed link
|
||||
link = add_linked_observer(student3, user2)
|
||||
link.destroy
|
||||
|
||||
UserMerge.from(user1).into(user2)
|
||||
user1.reload
|
||||
expect(user1.linked_students).to be_empty
|
||||
user2.reload
|
||||
expect(user2.linked_students.sort_by(&:id)).to eql [student1, student2]
|
||||
expect(user2.linked_students.sort_by(&:id)).to eql [student1, student2, student3]
|
||||
end
|
||||
|
||||
it "should move conversations to the new user" do
|
||||
|
|
Loading…
Reference in New Issue