diff --git a/lib/action_account.rb b/lib/action_account.rb index 01ca3984e45..61bb6e8fc13 100644 --- a/lib/action_account.rb +++ b/lib/action_account.rb @@ -80,6 +80,7 @@ def log_text user_reinstated: 'User has been reinstated and the user has been emailed', user_already_suspended: 'User has already been suspended', user_is_not_suspended: 'User is not suspended', + user_already_reinstated: 'User has already been reinstated', } end end @@ -108,6 +109,8 @@ def perform_user_action(args:, config:, action:) if user.suspended? user.reinstate! log_texts << log_text[:user_reinstated] + elsif user.reinstated? + log_texts << (log_text[:user_already_reinstated] + " (at #{user.reinstated_at})") else log_texts << log_text[:user_is_not_suspended] end diff --git a/spec/lib/action_account_spec.rb b/spec/lib/action_account_spec.rb index 474954a44d7..57467056afb 100644 --- a/spec/lib/action_account_spec.rb +++ b/spec/lib/action_account_spec.rb @@ -307,6 +307,21 @@ expect(result.subtask).to eq('reinstate-user') expect(result.uuids).to match_array([user.uuid, suspended_user.uuid]) end + + context 'with a reinstated user' do + let(:user) { create(:user, :reinstated) } + let(:args) { [user.uuid] } + + it 'gives a helpful error if the user has been reinstated' do + message = "User has already been reinstated (at #{user.reinstated_at})" + expect(result.table).to match_array( + [ + ['uuid', 'status', 'reason'], + [user.uuid, message, 'INV1234'], + ], + ) + end + end end end