@@ -0,0 +1,1 | |||||
|
1 | Element.update('tab-content-memberships', '<%= escape_javascript(render :partial => 'users/memberships') %>'); |
@@ -0,0 +1,6 | |||||
|
1 | <% if @membership.valid? %> | |||
|
2 | Element.update("tab-content-memberships", '<%= escape_javascript(render :partial => 'users/memberships') %>'); | |||
|
3 | new Effect.Highlight("member-<%= @membership.id %>") | |||
|
4 | <% else %> | |||
|
5 | alert('<%= escape_javascript l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')) %>'); | |||
|
6 | <% end %> |
@@ -183,21 +183,8 class UsersController < ApplicationController | |||||
183 | @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) |
|
183 | @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) | |
184 | @membership.save |
|
184 | @membership.save | |
185 | respond_to do |format| |
|
185 | respond_to do |format| | |
186 | if @membership.valid? |
|
186 | format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' } | |
187 | format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' } |
|
187 | format.js | |
188 | format.js { |
|
|||
189 | render(:update) {|page| |
|
|||
190 | page.replace_html "tab-content-memberships", :partial => 'users/memberships' |
|
|||
191 | page.visual_effect(:highlight, "member-#{@membership.id}") |
|
|||
192 | } |
|
|||
193 | } |
|
|||
194 | else |
|
|||
195 | format.js { |
|
|||
196 | render(:update) {|page| |
|
|||
197 | page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', '))) |
|
|||
198 | } |
|
|||
199 | } |
|
|||
200 | end |
|
|||
201 | end |
|
188 | end | |
202 | end |
|
189 | end | |
203 |
|
190 | |||
@@ -208,7 +195,7 class UsersController < ApplicationController | |||||
208 | end |
|
195 | end | |
209 | respond_to do |format| |
|
196 | respond_to do |format| | |
210 | format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' } |
|
197 | format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' } | |
211 | format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} } |
|
198 | format.js | |
212 | end |
|
199 | end | |
213 | end |
|
200 | end | |
214 |
|
201 |
@@ -363,38 +363,45 class UsersControllerTest < ActionController::TestCase | |||||
363 | def test_create_membership_js_format |
|
363 | def test_create_membership_js_format | |
364 | assert_difference 'Member.count' do |
|
364 | assert_difference 'Member.count' do | |
365 | post :edit_membership, :id => 7, :membership => {:project_id => 3, :role_ids => [2]}, :format => 'js' |
|
365 | post :edit_membership, :id => 7, :membership => {:project_id => 3, :role_ids => [2]}, :format => 'js' | |
|
366 | assert_response :success | |||
|
367 | assert_template 'edit_membership' | |||
|
368 | assert_equal 'text/javascript', response.content_type | |||
366 | end |
|
369 | end | |
367 | assert_response :success |
|
|||
368 | assert_select_rjs :replace_html, 'tab-content-memberships' |
|
|||
369 | member = Member.first(:order => 'id DESC') |
|
370 | member = Member.first(:order => 'id DESC') | |
370 | assert_equal User.find(7), member.principal |
|
371 | assert_equal User.find(7), member.principal | |
371 | assert_equal [2], member.role_ids |
|
372 | assert_equal [2], member.role_ids | |
372 | assert_equal 3, member.project_id |
|
373 | assert_equal 3, member.project_id | |
|
374 | assert_include 'tab-content-memberships', response.body | |||
373 | end |
|
375 | end | |
374 |
|
376 | |||
375 | def test_create_membership_js_format_with_failure |
|
377 | def test_create_membership_js_format_with_failure | |
376 | assert_no_difference 'Member.count' do |
|
378 | assert_no_difference 'Member.count' do | |
377 | post :edit_membership, :id => 7, :membership => {:project_id => 3}, :format => 'js' |
|
379 | post :edit_membership, :id => 7, :membership => {:project_id => 3}, :format => 'js' | |
|
380 | assert_response :success | |||
|
381 | assert_template 'edit_membership' | |||
|
382 | assert_equal 'text/javascript', response.content_type | |||
378 | end |
|
383 | end | |
379 | assert_response :success |
|
384 | assert_include 'alert', response.body, "Alert message not sent" | |
380 |
assert |
|
385 | assert_include 'Role can\\\'t be empty', response.body, "Error message not sent" | |
381 | assert @response.body.match(/role can't be empty/i), "Error message not sent" |
|
|||
382 | end |
|
386 | end | |
383 |
|
387 | |||
384 | def test_update_membership |
|
388 | def test_update_membership | |
385 | assert_no_difference 'Member.count' do |
|
389 | assert_no_difference 'Member.count' do | |
386 | put :edit_membership, :id => 2, :membership_id => 1, :membership => { :role_ids => [2]} |
|
390 | put :edit_membership, :id => 2, :membership_id => 1, :membership => { :role_ids => [2]} | |
|
391 | assert_redirected_to :action => 'edit', :id => '2', :tab => 'memberships' | |||
387 | end |
|
392 | end | |
388 | assert_redirected_to :action => 'edit', :id => '2', :tab => 'memberships' |
|
|||
389 | assert_equal [2], Member.find(1).role_ids |
|
393 | assert_equal [2], Member.find(1).role_ids | |
390 | end |
|
394 | end | |
391 |
|
395 | |||
392 | def test_update_membership_js_format |
|
396 | def test_update_membership_js_format | |
393 | assert_no_difference 'Member.count' do |
|
397 | assert_no_difference 'Member.count' do | |
394 | put :edit_membership, :id => 2, :membership_id => 1, :membership => {:role_ids => [2]}, :format => 'js' |
|
398 | put :edit_membership, :id => 2, :membership_id => 1, :membership => {:role_ids => [2]}, :format => 'js' | |
|
399 | assert_response :success | |||
|
400 | assert_template 'edit_membership' | |||
|
401 | assert_equal 'text/javascript', response.content_type | |||
395 | end |
|
402 | end | |
396 | assert_response :success |
|
403 | assert_equal [2], Member.find(1).role_ids | |
397 |
assert_ |
|
404 | assert_include 'tab-content-memberships', response.body | |
398 | end |
|
405 | end | |
399 |
|
406 | |||
400 | def test_destroy_membership |
|
407 | def test_destroy_membership | |
@@ -408,8 +415,11 class UsersControllerTest < ActionController::TestCase | |||||
408 | def test_destroy_membership_js_format |
|
415 | def test_destroy_membership_js_format | |
409 | assert_difference 'Member.count', -1 do |
|
416 | assert_difference 'Member.count', -1 do | |
410 | delete :destroy_membership, :id => 2, :membership_id => 1, :format => 'js' |
|
417 | delete :destroy_membership, :id => 2, :membership_id => 1, :format => 'js' | |
|
418 | assert_response :success | |||
|
419 | assert_template 'destroy_membership' | |||
|
420 | assert_equal 'text/javascript', response.content_type | |||
411 | end |
|
421 | end | |
412 | assert_response :success |
|
422 | assert_nil Member.find_by_id(1) | |
413 |
assert_ |
|
423 | assert_include 'tab-content-memberships', response.body | |
414 | end |
|
424 | end | |
415 | end |
|
425 | end |
@@ -160,8 +160,8 class ActiveSupport::TestCase | |||||
160 | assert_tag({:attributes => { :id => 'errorExplanation' }}.merge(options)) |
|
160 | assert_tag({:attributes => { :id => 'errorExplanation' }}.merge(options)) | |
161 | end |
|
161 | end | |
162 |
|
162 | |||
163 | def assert_include(expected, s) |
|
163 | def assert_include(expected, s, message=nil) | |
164 | assert s.include?(expected), "\"#{expected}\" not found in \"#{s}\"" |
|
164 | assert s.include?(expected), (message || "\"#{expected}\" not found in \"#{s}\"") | |
165 | end |
|
165 | end | |
166 |
|
166 | |||
167 | def assert_not_include(expected, s) |
|
167 | def assert_not_include(expected, s) |
General Comments 0
You need to be logged in to leave comments.
Login now