##// END OF EJS Templates
Error when adding user to group where he is already assigned (#18665)....
Jean-Philippe Lang -
r13403:c0800b330c85
parent child
Show More
@@ -637,12 +637,14 class ApplicationController < ActionController::Base
637 637 end
638 638
639 639 # Renders API response on validation failure
640 # for an object or an array of objects
640 641 def render_validation_errors(objects)
641 if objects.is_a?(Array)
642 @error_messages = objects.map {|object| object.errors.full_messages}.flatten
643 else
644 @error_messages = objects.errors.full_messages
645 end
642 messages = Array.wrap(objects).map {|object| object.errors.full_messages}.flatten
643 render_api_errors(messages)
644 end
645
646 def render_api_errors(*messages)
647 @error_messages = messages.flatten
646 648 render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil
647 649 end
648 650
@@ -99,12 +99,18 class GroupsController < ApplicationController
99 99 end
100 100
101 101 def add_users
102 @users = User.where(:id => (params[:user_id] || params[:user_ids])).to_a
103 @group.users << @users if request.post?
102 @users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a
103 @group.users << @users
104 104 respond_to do |format|
105 105 format.html { redirect_to edit_group_path(@group, :tab => 'users') }
106 106 format.js
107 format.api { render_api_ok }
107 format.api {
108 if @users.any?
109 render_api_ok
110 else
111 render_api_errors "#{l(:label_user)} #{l('activerecord.errors.messages.invalid')}"
112 end
113 }
108 114 end
109 115 end
110 116
@@ -185,6 +185,19 class Redmine::ApiTest::GroupsTest < Redmine::ApiTest::Base
185 185 assert_include User.find(5), Group.find(10).users
186 186 end
187 187
188 test "POST /groups/:id/users.xml should not add the user if already added" do
189 Group.find(10).users << User.find(5)
190
191 assert_no_difference 'Group.find(10).users.count' do
192 post '/groups/10/users.xml', {:user_id => 5}, credentials('admin')
193 assert_response :unprocessable_entity
194 end
195
196 assert_select 'errors' do
197 assert_select 'error', :text => /User is invalid/
198 end
199 end
200
188 201 test "DELETE /groups/:id/users/:user_id.xml should remove user from the group" do
189 202 assert_difference 'Group.find(10).users.count', -1 do
190 203 delete '/groups/10/users/8.xml', {}, credentials('admin')
General Comments 0
You need to be logged in to leave comments. Login now