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