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