Fix user assignment creation for new objects [SCI-12187]

This commit is contained in:
Oleksii Kriuchykhin 2025-07-31 17:27:30 +02:00
parent 1f08b80513
commit 9c58856e1b
2 changed files with 11 additions and 6 deletions

View file

@ -53,8 +53,12 @@ module Assignable
false
end
def role_for_user(user)
user_assignments.find_by(user: user)&.user_role
def role_for_user(user, team)
user_assignments.find_by(user: user, team: team)&.user_role ||
user_group_assignments.joins(user_group: :user_group_memberships)
.where(team: team, user_groups: { user_group_memberships: { user_id: user.id } })
.last&.user_role ||
team_assignments.find_by(team: team)&.user_role
end
def manually_assigned_users
@ -116,7 +120,7 @@ module Assignable
role = if top_level_assignable?
UserRole.find_predefined_owner_role
else
permission_parent.user_assignments.find_by(user: created_by).user_role
permission_parent.role_for_user(created_by, team)
end
UserAssignment.create!(

View file

@ -12,7 +12,7 @@ describe Experiments::MoveToProjectService do
create :project, team: team, created_by: user
end
let(:experiment) do
create :experiment, :with_tasks, name: 'MyExp', project: project
create :experiment, :with_tasks, name: 'MyExp', project: project, created_by: user
end
let(:service_call) do
Experiments::MoveToProjectService.call(experiment_id: experiment.id,
@ -95,8 +95,9 @@ describe Experiments::MoveToProjectService do
end
it 'returns error if teams is not the same' do
t = create :team
project.update(team: t)
another_team = create :team
wrong_project = create :project, team: another_team
service_call = Experiments::MoveToProjectService.call(experiment_id: experiment.id, project_id: wrong_project.id, user_id: user.id)
expect(service_call.errors).to have_key(:target_project_not_valid)
end