Bulk-edit custom fields through context menu (#6296).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8824 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-02-09 18:22:11 +00:00
parent de7c49c6ca
commit 5e0c1cc5ce
6 changed files with 136 additions and 2 deletions
@@ -117,6 +117,102 @@ class ContextMenusControllerTest < ActionController::TestCase
:class => 'icon-del' }
end
def test_context_menu_should_include_list_custom_fields
field = IssueCustomField.create!(:name => 'List', :field_format => 'list',
:possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
@request.session[:user_id] = 2
get :issues, :ids => [1, 2]
assert_tag 'a',
:content => 'List',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => 3}}
assert_tag 'a',
:content => 'Foo',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo"}
assert_tag 'a',
:content => 'none',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D="}
end
def test_context_menu_should_not_include_null_value_for_required_custom_fields
field = IssueCustomField.create!(:name => 'List', :is_required => true, :field_format => 'list',
:possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
@request.session[:user_id] = 2
get :issues, :ids => [1, 2]
assert_tag 'a',
:content => 'List',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => 2}}
end
def test_context_menu_on_single_issue_should_select_current_custom_field_value
field = IssueCustomField.create!(:name => 'List', :field_format => 'list',
:possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3])
issue = Issue.find(1)
issue.custom_field_values = {field.id => 'Bar'}
issue.save!
@request.session[:user_id] = 2
get :issues, :ids => [1]
assert_tag 'a',
:content => 'List',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => 3}}
assert_tag 'a',
:content => 'Bar',
:attributes => {:class => /icon-checked/}
end
def test_context_menu_should_include_bool_custom_fields
field = IssueCustomField.create!(:name => 'Bool', :field_format => 'bool',
:is_for_all => true, :tracker_ids => [1, 2, 3])
@request.session[:user_id] = 2
get :issues, :ids => [1, 2]
assert_tag 'a',
:content => 'Bool',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => 3}}
assert_tag 'a',
:content => 'Yes',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1"}
end
def test_context_menu_should_include_user_custom_fields
field = IssueCustomField.create!(:name => 'User', :field_format => 'user',
:is_for_all => true, :tracker_ids => [1, 2, 3])
@request.session[:user_id] = 2
get :issues, :ids => [1, 2]
assert_tag 'a',
:content => 'User',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => Project.find(1).members.count + 1}}
assert_tag 'a',
:content => 'John Smith',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2"}
end
def test_context_menu_should_include_version_custom_fields
field = IssueCustomField.create!(:name => 'Version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1, 2, 3])
@request.session[:user_id] = 2
get :issues, :ids => [1, 2]
assert_tag 'a',
:content => 'Version',
:attributes => {:href => '#'},
:sibling => {:tag => 'ul', :children => {:count => Project.find(1).shared_versions.count + 1}}
assert_tag 'a',
:content => '2.0',
:attributes => {:href => "/issues/bulk_update?ids%5B%5D=1&amp;ids%5B%5D=2&amp;issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3"}
end
def test_context_menu_by_assignable_user_should_include_assigned_to_me_link
@request.session[:user_id] = 2
get :issues, :ids => [1]