Skip to content

Commit 861c20d

Browse files
committed
Remove unnecessary preset_scenario_users flag and improve error message handling
1 parent b456c10 commit 861c20d

File tree

7 files changed

+23
-76
lines changed

7 files changed

+23
-76
lines changed

app/controllers/api/v3/scenario_users_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def index
1818
def create
1919
process_scenario_users(create_new: true) do |scenario_user, _|
2020
unless scenario_user.valid?
21-
add_error(scenario_user.email, scenario_user.errors.messages.keys)
21+
add_error(scenario_user.email, scenario_user.errors.full_messages)
2222
next
2323
end
2424

@@ -41,7 +41,7 @@ def update
4141
scenario_user.update_role(new_role)
4242

4343
unless scenario_user.save
44-
add_error(scenario_user.email, scenario_user.errors.messages.keys)
44+
add_error(scenario_user.email, scenario_user.errors.full_messages)
4545
next
4646
end
4747

@@ -55,7 +55,7 @@ def update
5555
def destroy
5656
process_scenario_users do |scenario_user, _|
5757
unless scenario_user.destroy
58-
add_error(scenario_user.email, scenario_user.errors.messages.keys)
58+
add_error(scenario_user.email, scenario_user.errors.full_messages)
5959
next
6060
end
6161

app/models/scenario.rb

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -363,28 +363,14 @@ def delete_all_users
363363
scenario_users.delete_all
364364
end
365365

366-
def copy_preset_roles(preset_scenario_users = nil)
366+
def copy_preset_roles
367367
return unless parent
368368

369-
if preset_scenario_users.present?
370-
copy_roles_from_user_data(preset_scenario_users)
371-
else
372-
copy_roles_from_parent
373-
end
369+
copy_roles_from_parent
374370
end
375371

376372
private
377373

378-
def copy_roles_from_user_data(users_data)
379-
users_data.each do |user_data|
380-
scenario_users.create(
381-
user_id: user_data['user_id'] || user_data[:user_id],
382-
user_email: user_data['user_email'] || user_data[:user_email],
383-
role_id: user_data['role_id'] || user_data[:role_id]
384-
)
385-
end
386-
end
387-
388374
def copy_roles_from_parent
389375
parent.scenario_users.each do |preset_user|
390376
if (existing_user = scenario_users.find_by(user: preset_user.user))

app/models/scenario_updater.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ def apply(scenario_data, (coupling_state, user_values, balanced_values))
7575
# Post-save
7676
def post_save(scenario_data, persisted)
7777
set_preset_roles = truthy?(scenario_data[:set_preset_roles])
78-
preset_scenario_users = scenario_data[:preset_scenario_users]
79-
_post_saved = yield post_save_operations(set_preset_roles, preset_scenario_users)
78+
_post_saved = yield post_save_operations(set_preset_roles)
8079
Success(persisted)
8180
end
8281

@@ -149,9 +148,8 @@ def persist_scenario(attributes)
149148
service(:PersistScenario).call(scenario, attributes, skip_validation)
150149
end
151150

152-
def post_save_operations(set_preset_roles, preset_scenario_users)
153-
service(:PostSaveOperations).call(scenario, set_preset_roles, preset_scenario_users,
154-
current_user)
151+
def post_save_operations(set_preset_roles)
152+
service(:PostSaveOperations).call(scenario, set_preset_roles, current_user)
155153
end
156154

157155
# Helper to instantiate services

app/models/scenario_updater/services/post_save_operations.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ class PostSaveOperations
88

99
TRUTHY_VALUES = Set.new([true, 'true', '1']).freeze
1010

11-
def call(scenario, set_preset_roles, preset_scenario_users, current_user)
12-
copy_preset_roles_if_requested(scenario, set_preset_roles, preset_scenario_users)
11+
def call(scenario, set_preset_roles, current_user)
12+
copy_preset_roles_if_requested(scenario, set_preset_roles)
1313
update_version_tag(scenario, current_user)
1414

1515
Success(scenario)
1616
end
1717

1818
private
1919

20-
def copy_preset_roles_if_requested(scenario, set_preset_roles, preset_scenario_users)
21-
should_copy = TRUTHY_VALUES.include?(set_preset_roles) || preset_scenario_users.present?
22-
scenario.copy_preset_roles(preset_scenario_users) if should_copy
20+
def copy_preset_roles_if_requested(scenario, set_preset_roles)
21+
should_copy = TRUTHY_VALUES.include?(set_preset_roles)
22+
scenario.copy_preset_roles if should_copy
2323
end
2424

2525
def update_version_tag(scenario, current_user)

spec/models/scenario_spec.rb

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -868,38 +868,5 @@
868868
it 'sets the collaborator of the preset' do
869869
expect { subject }.to(change { scenario.owner?(preset_collaborator) })
870870
end
871-
872-
context 'with preset_scenario_users data' do
873-
subject do
874-
scenario.copy_preset_roles(users_data)
875-
scenario.reload
876-
end
877-
878-
let(:user1) { create(:user) }
879-
let(:user2) { create(:user) }
880-
881-
let(:users_data) do
882-
[
883-
{ user_id: user1.id, user_email: nil, role_id: 3 },
884-
{ user_id: nil, user_email: '[email protected]', role_id: 2 }
885-
]
886-
end
887-
888-
it 'creates scenario users from the provided data' do
889-
expect { subject }.to change(scenario.scenario_users, :count).by(2)
890-
end
891-
892-
it 'sets the owner from user_id' do
893-
subject
894-
expect(scenario).to be_owner(user1)
895-
end
896-
897-
it 'creates pending user with email' do
898-
subject
899-
pending_user = scenario.scenario_users.find_by(user_email: '[email protected]')
900-
expect(pending_user).to be_present
901-
expect(pending_user.role_id).to eq(2)
902-
end
903-
end
904871
end
905872
end

spec/models/scenario_updater/services/post_save_operations_spec.rb

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,14 @@
77
let(:service) { described_class.new }
88

99
it 'copies preset roles if requested' do
10-
expect(scenario).to receive(:copy_preset_roles).with(nil)
11-
service.call(scenario, true, nil, 'user')
12-
end
13-
14-
it 'copies preset roles with user data' do
15-
users_data = [{ user_id: 1, user_email: nil, role_id: 3 }]
16-
expect(scenario).to receive(:copy_preset_roles).with(users_data)
17-
service.call(scenario, false, users_data, 'user')
10+
expect(scenario).to receive(:copy_preset_roles).with(no_args)
11+
service.call(scenario, true, 'user')
1812
end
1913

2014
it 'updates version tag' do
2115
version_tag = double('VersionTag')
2216
allow(scenario).to receive(:scenario_version_tag).and_return(version_tag)
2317
expect(version_tag).to receive(:update).with(user: 'user')
24-
service.call(scenario, false, nil, 'user')
18+
service.call(scenario, false, 'user')
2519
end
2620
end

spec/requests/api/v3/scenario_users_controller_spec.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
require 'spec_helper'
24

35
RSpec.describe 'Api::V3::ScenarioUsers', type: :request, api: true do
@@ -100,7 +102,7 @@
100102
end
101103

102104
it 'returns an error' do
103-
expect(json['errors']['[email protected]']).to include('role_id')
105+
expect(json['errors']['[email protected]']).to include('Role unknown')
104106
end
105107
end
106108

@@ -118,7 +120,7 @@
118120
end
119121

120122
it 'returns an error' do
121-
expect(json['errors']['viewer']).to include('user_email')
123+
expect(json['errors']['viewer']).to include('User email is invalid')
122124
end
123125
end
124126

@@ -222,7 +224,7 @@
222224

223225
it 'returns an error' do
224226
expect(json['errors']['']).to include(
225-
'base'
227+
'Last owner cannot be altered'
226228
)
227229
end
228230
end
@@ -289,7 +291,7 @@
289291
end
290292

291293
it 'returns an error' do
292-
expect(json['errors']['']).to include('role_id')
294+
expect(json['errors']['']).to include('Role unknown')
293295
end
294296
end
295297
end
@@ -362,7 +364,7 @@
362364

363365
it 'returns an error' do
364366
expect(json['errors']['']).to include(
365-
'base'
367+
'Last owner cannot be altered'
366368
)
367369
end
368370
end

0 commit comments

Comments
 (0)