diff --git a/app/views/tasks/_add_member.rhtml b/app/views/tasks/_add_member.rhtml
index 93d8ca3..13af333 100644
--- a/app/views/tasks/_add_member.rhtml
+++ b/app/views/tasks/_add_member.rhtml
@@ -27,7 +27,7 @@
@roles = Role.find(:all).select{ |r| r.has_kind?('Profile') }
%>
<% @roles.each do |r| %>
- <%= labelled_check_box(r.name, 'task[roles][]', r.id, task.target.members.nil?) %>
+ <%= labelled_check_box(r.name, 'task[roles][]', r.id, ( task.target.members.empty? ? true : ( r.id == Profile::Roles.member.id ) ) ) %>
<% end %>
diff --git a/test/fixtures/roles.yml b/test/fixtures/roles.yml
index 7194957..733c20b 100644
--- a/test/fixtures/roles.yml
+++ b/test/fixtures/roles.yml
@@ -37,6 +37,10 @@ profile_member:
key: 'profile_member'
name: 'Profile Member'
system: true
+ permissions:
+ - edit_profile
+ - post_content
+ - manage_products
profile_moderator:
id: 7
key: 'profile_moderator'
diff --git a/test/functional/tasks_controller_test.rb b/test/functional/tasks_controller_test.rb
index 74fc471..6d404ed 100644
--- a/test/functional/tasks_controller_test.rb
+++ b/test/functional/tasks_controller_test.rb
@@ -62,12 +62,45 @@ class TasksControllerTest < Test::Unit::TestCase
ok('task should be cancelled') { t.status == Task::Status::CANCELLED }
end
- should 'affiliate roles to user after finish add member task'
+ should 'affiliate roles to user after finish add member task' do
+ t = AddMember.create!(:person => profile, :community => profile)
+ count = profile.members.size
+ post :close, :decision => 'finish', :id => t.id
+ profile.reload
+ assert_equal count + 1, profile.members.size
+ end
- should 'display form to add members task'
+ should 'display custom form to add members task' do
+ t = AddMember.create!(:person => profile, :community => profile)
+ get :index, :profile => profile.identifier
+ assert_tag :tag => 'form', :attributes => { :action => "/myprofile/#{profile.identifier}/tasks/close/#{t.id}" }
+ end
- should 'display all roles checked if target has no members'
+ should 'display member role checked if target has members' do
+ profile.affiliate(profile, Profile::Roles.admin)
+ assert_equal 1, profile.members.size
+ t = AddMember.create!(:person => profile, :community => profile)
+ get :index, :profile => profile.identifier
+ assert_tag :tag => 'input', :attributes => { :name => 'task[roles][]', :checked => 'checked', :value => Profile::Roles.member.id }
+ end
- should 'display member role checked if target has members'
+ should 'display roles besides role member unchecked if target has members' do
+ profile.affiliate(profile, Profile::Roles.admin)
+ assert_equal 1, profile.members.size
+ t = AddMember.create!(:person => profile, :community => profile)
+ get :index, :profile => profile.identifier
+ Role.find(:all).select{ |r| r.has_kind?('Profile') and r.id != Profile::Roles.member.id }.each do |i|
+ assert_no_tag :tag => 'input', :attributes => { :name => 'task[roles][]', :checked => 'checked', :value => i.id }
+ end
+ end
+
+ should 'display all roles checked if target has no members' do
+ assert_equal 0, profile.members.size
+ t = AddMember.create!(:person => profile, :community => profile)
+ get :index, :profile => profile.identifier
+ Role.find(:all).select{ |r| r.has_kind?('Profile') }.each do |i|
+ assert_tag :tag => 'input', :attributes => { :name => 'task[roles][]', :checked => 'checked', :value => i.id }
+ end
+ end
end
--
libgit2 0.21.2