##// END OF EJS Templates
Removes RJS from MembersController....
Jean-Philippe Lang -
r9875:d3bfbb800c2b
parent child
Show More
@@ -0,0 +1,11
1 Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>');
2 hideOnLoad();
3
4 <% if @members.present? && @members.all? {|m| m.valid? } %>
5 <% @members.each do |member| %>
6 new Effect.Highlight("member-<%= member.id %>");
7 <% end %>
8 <% else %>
9 <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %>
10 alert('<%= escape_javascript l(:notice_failed_to_save_members, :errors => errors) %>');
11 <% end %>
@@ -0,0 +1,2
1 Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>');
2 hideOnLoad();
@@ -0,0 +1,3
1 Element.update('tab-content-members', '<%= escape_javascript(render :partial => 'projects/settings/members') %>');
2 hideOnLoad();
3 new Effect.Highlight("member-<%= @member.id %>");
@@ -63,31 +63,16 class MembersController < ApplicationController
63 63 end
64 64
65 65 respond_to do |format|
66 if members.present? && members.all? {|m| m.valid? }
67 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
68 format.js {
69 render(:update) {|page|
70 page.replace_html "tab-content-members", :partial => 'projects/settings/members'
71 page << 'hideOnLoad()'
72 members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") }
73 }
74 }
75 format.api {
76 @member = members.first
66 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
67 format.js { @members = members }
68 format.api {
69 @member = members.first
70 if @member.valid?
77 71 render :action => 'show', :status => :created, :location => membership_url(@member)
78 }
79 else
80 format.js {
81 render(:update) {|page|
82 errors = members.collect {|m|
83 m.errors.full_messages
84 }.flatten.uniq
85
86 page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', ')))
87 }
88 }
89 format.api { render_validation_errors(members.first) }
90 end
72 else
73 render_validation_errors(@member)
74 end
75 }
91 76 end
92 77 end
93 78
@@ -98,13 +83,7 class MembersController < ApplicationController
98 83 saved = @member.save
99 84 respond_to do |format|
100 85 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
101 format.js {
102 render(:update) {|page|
103 page.replace_html "tab-content-members", :partial => 'projects/settings/members'
104 page << 'hideOnLoad()'
105 page.visual_effect(:highlight, "member-#{@member.id}")
106 }
107 }
86 format.js
108 87 format.api {
109 88 if saved
110 89 render_api_ok
@@ -121,11 +100,7 class MembersController < ApplicationController
121 100 end
122 101 respond_to do |format|
123 102 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
124 format.js { render(:update) {|page|
125 page.replace_html "tab-content-members", :partial => 'projects/settings/members'
126 page << 'hideOnLoad()'
127 }
128 }
103 format.js
129 104 format.api {
130 105 if @member.destroyed?
131 106 render_api_ok
@@ -140,5 +115,4 class MembersController < ApplicationController
140 115 @principals = Principal.active.not_member_of(@project).like(params[:q]).all(:limit => 100)
141 116 render :layout => false
142 117 end
143
144 118 end
@@ -51,20 +51,25 class MembersControllerTest < ActionController::TestCase
51 51
52 52 def test_xhr_create
53 53 assert_difference 'Member.count', 3 do
54 post :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]}, :format => "js"
54 xhr :post, :create, :project_id => 1, :membership => {:role_ids => [1], :user_ids => [7, 8, 9]}
55 assert_response :success
56 assert_template 'create'
57 assert_equal 'text/javascript', response.content_type
55 58 end
56 assert_select_rjs :replace_html, 'tab-content-members'
57 59 assert User.find(7).member_of?(Project.find(1))
58 60 assert User.find(8).member_of?(Project.find(1))
59 61 assert User.find(9).member_of?(Project.find(1))
62 assert_include 'tab-content-members', response.body
60 63 end
61 64
62 65 def test_xhr_create_with_failure
63 66 assert_no_difference 'Member.count' do
64 post :create, :project_id => 1, :membership => {:role_ids => [], :user_ids => [7, 8, 9]}, :format => "js"
67 xhr :post, :create, :project_id => 1, :membership => {:role_ids => [], :user_ids => [7, 8, 9]}
68 assert_response :success
69 assert_template 'create'
70 assert_equal 'text/javascript', response.content_type
65 71 end
66 assert_select '#tab-content-members', 0
67 assert @response.body.match(/alert/i), "Alert message not sent"
72 assert_match /alert/, response.body, "Alert message not sent"
68 73 end
69 74
70 75 def test_edit
@@ -77,11 +82,14 class MembersControllerTest < ActionController::TestCase
77 82 def test_xhr_edit
78 83 assert_no_difference 'Member.count' do
79 84 xhr :put, :update, :id => 2, :membership => {:role_ids => [1], :user_id => 3}
85 assert_response :success
86 assert_template 'update'
87 assert_equal 'text/javascript', response.content_type
80 88 end
81 assert_select_rjs :replace_html, 'tab-content-members'
82 89 member = Member.find(2)
83 90 assert_equal [1], member.role_ids
84 91 assert_equal 3, member.user_id
92 assert_include 'tab-content-members', response.body
85 93 end
86 94
87 95 def test_destroy
@@ -95,8 +103,12 class MembersControllerTest < ActionController::TestCase
95 103 def test_xhr_destroy
96 104 assert_difference 'Member.count', -1 do
97 105 xhr :delete, :destroy, :id => 2
106 assert_response :success
107 assert_template 'destroy'
108 assert_equal 'text/javascript', response.content_type
98 109 end
99 assert_select_rjs :replace_html, 'tab-content-members'
110 assert_nil Member.find_by_id(2)
111 assert_include 'tab-content-members', response.body
100 112 end
101 113
102 114 def test_autocomplete
General Comments 0
You need to be logged in to leave comments. Login now