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