Resourcified custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8144 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -37,10 +37,11 @@ class CustomFieldsControllerTest < ActionController::TestCase
|
||||
assert_template 'index'
|
||||
end
|
||||
|
||||
def test_get_new_issue_custom_field
|
||||
def test_new_issue_custom_field
|
||||
get :new, :type => 'IssueCustomField'
|
||||
assert_response :success
|
||||
assert_template 'new'
|
||||
assert_tag :input, :attributes => {:name => 'custom_field[name]'}
|
||||
assert_tag :select,
|
||||
:attributes => {:name => 'custom_field[field_format]'},
|
||||
:child => {
|
||||
@@ -55,16 +56,17 @@ class CustomFieldsControllerTest < ActionController::TestCase
|
||||
:attributes => {:value => 'version'},
|
||||
:content => 'Version'
|
||||
}
|
||||
assert_tag :input, :attributes => {:name => 'type', :value => 'IssueCustomField'}
|
||||
end
|
||||
|
||||
def test_get_new_with_invalid_custom_field_class_should_redirect_to_list
|
||||
def test_new_with_invalid_custom_field_class_should_render_404
|
||||
get :new, :type => 'UnknownCustomField'
|
||||
assert_redirected_to '/custom_fields'
|
||||
assert_response 404
|
||||
end
|
||||
|
||||
def test_post_new_list_custom_field
|
||||
def test_create_list_custom_field
|
||||
assert_difference 'CustomField.count' do
|
||||
post :new, :type => "IssueCustomField",
|
||||
post :create, :type => "IssueCustomField",
|
||||
:custom_field => {:name => "test_post_new_list",
|
||||
:default_value => "",
|
||||
:min_length => "0",
|
||||
@@ -85,28 +87,47 @@ class CustomFieldsControllerTest < ActionController::TestCase
|
||||
assert_equal 1, field.trackers.size
|
||||
end
|
||||
|
||||
def test_get_edit
|
||||
def test_create_with_failure
|
||||
assert_no_difference 'CustomField.count' do
|
||||
post :create, :type => "IssueCustomField", :custom_field => {:name => ''}
|
||||
end
|
||||
assert_response :success
|
||||
assert_template 'new'
|
||||
end
|
||||
|
||||
def test_edit
|
||||
get :edit, :id => 1
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
assert_tag 'input', :attributes => {:name => 'custom_field[name]', :value => 'Database'}
|
||||
end
|
||||
|
||||
def test_post_edit
|
||||
post :edit, :id => 1, :custom_field => {:name => 'New name'}
|
||||
def test_edit_invalid_custom_field_should_render_404
|
||||
get :edit, :id => 99
|
||||
assert_response 404
|
||||
end
|
||||
|
||||
def test_update
|
||||
put :update, :id => 1, :custom_field => {:name => 'New name'}
|
||||
assert_redirected_to '/custom_fields?tab=IssueCustomField'
|
||||
|
||||
field = CustomField.find(1)
|
||||
assert_equal 'New name', field.name
|
||||
end
|
||||
|
||||
def test_update_with_failure
|
||||
put :update, :id => 1, :custom_field => {:name => ''}
|
||||
assert_response :success
|
||||
assert_template 'edit'
|
||||
end
|
||||
|
||||
def test_destroy
|
||||
custom_values_count = CustomValue.count(:conditions => {:custom_field_id => 1})
|
||||
assert custom_values_count > 0
|
||||
|
||||
assert_difference 'CustomField.count', -1 do
|
||||
assert_difference 'CustomValue.count', - custom_values_count do
|
||||
post :destroy, :id => 1
|
||||
delete :destroy, :id => 1
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -45,6 +45,15 @@ class RoutingTest < ActionController::IntegrationTest
|
||||
|
||||
end
|
||||
|
||||
context "custom_fields" do
|
||||
should_route :get, "/custom_fields", :controller => 'custom_fields', :action => 'index'
|
||||
should_route :get, "/custom_fields/new", :controller => 'custom_fields', :action => 'new'
|
||||
should_route :post, "/custom_fields", :controller => 'custom_fields', :action => 'create'
|
||||
should_route :get, "/custom_fields/2/edit", :controller => 'custom_fields', :action => 'edit', :id => 2
|
||||
should_route :put, "/custom_fields/2", :controller => 'custom_fields', :action => 'update', :id => 2
|
||||
should_route :delete, "/custom_fields/2", :controller => 'custom_fields', :action => 'destroy', :id => 2
|
||||
end
|
||||
|
||||
context "documents" do
|
||||
should_route :get, "/projects/567/documents", :controller => 'documents', :action => 'index', :project_id => '567'
|
||||
should_route :get, "/projects/567/documents/new", :controller => 'documents', :action => 'new', :project_id => '567'
|
||||
|
||||
@@ -56,4 +56,23 @@ class CustomFieldTest < ActiveSupport::TestCase
|
||||
field = CustomField.find(1)
|
||||
assert field.destroy
|
||||
end
|
||||
|
||||
def test_new_subclass_instance_should_return_an_instance
|
||||
f = CustomField.new_subclass_instance('IssueCustomField')
|
||||
assert_kind_of IssueCustomField, f
|
||||
end
|
||||
|
||||
def test_new_subclass_instance_should_set_attributes
|
||||
f = CustomField.new_subclass_instance('IssueCustomField', :name => 'Test')
|
||||
assert_kind_of IssueCustomField, f
|
||||
assert_equal 'Test', f.name
|
||||
end
|
||||
|
||||
def test_new_subclass_instance_with_invalid_class_name_should_return_nil
|
||||
assert_nil CustomField.new_subclass_instance('WrongClassName')
|
||||
end
|
||||
|
||||
def test_new_subclass_instance_with_non_subclass_name_should_return_nil
|
||||
assert_nil CustomField.new_subclass_instance('Project')
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user