summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/admin_controller_test.rb7
-rw-r--r--test/functional/boards_controller_test.rb43
-rw-r--r--test/functional/documents_controller_test.rb45
-rw-r--r--test/functional/issue_relations_controller_test.rb22
-rw-r--r--test/functional/issues_controller_test.rb168
-rw-r--r--test/functional/members_controller_test.rb15
-rw-r--r--test/functional/messages_controller_test.rb43
-rw-r--r--test/functional/news_controller_test.rb64
-rw-r--r--test/functional/projects_controller_test.rb199
-rw-r--r--test/functional/reports_controller_test.rb20
-rw-r--r--test/functional/repositories_controller_test.rb113
-rw-r--r--test/functional/repositories_subversion_controller_test.rb8
-rw-r--r--test/functional/timelog_controller_test.rb119
-rw-r--r--test/functional/users_controller_test.rb74
-rw-r--r--test/functional/versions_controller_test.rb4
-rw-r--r--test/functional/wiki_controller_test.rb124
-rw-r--r--test/functional/wikis_controller_test.rb23
-rw-r--r--test/integration/admin_test.rb4
-rw-r--r--test/integration/issues_test.rb8
-rw-r--r--test/integration/projects_test.rb10
-rw-r--r--test/unit/helpers/application_helper_test.rb32
-rw-r--r--test/unit/lib/redmine/wiki_formatting/macros_test.rb10
-rw-r--r--test/unit/mailer_test.rb22
23 files changed, 1059 insertions, 118 deletions
diff --git a/test/functional/admin_controller_test.rb b/test/functional/admin_controller_test.rb
index a9c45aae3..32965de4c 100644
--- a/test/functional/admin_controller_test.rb
+++ b/test/functional/admin_controller_test.rb
@@ -38,6 +38,13 @@ class AdminControllerTest < Test::Unit::TestCase
:attributes => { :class => /nodata/ }
end
+ def test_projects_routing
+ assert_routing(
+ {:method => :get, :path => '/admin/projects'},
+ :controller => 'admin', :action => 'projects'
+ )
+ end
+
def test_index_with_no_configuration_data
delete_configuration_data
get :index
diff --git a/test/functional/boards_controller_test.rb b/test/functional/boards_controller_test.rb
index 3ff71bc4e..190eae237 100644
--- a/test/functional/boards_controller_test.rb
+++ b/test/functional/boards_controller_test.rb
@@ -31,6 +31,13 @@ class BoardsControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/boards'},
+ :controller => 'boards', :action => 'index', :project_id => 'world_domination'
+ )
+ end
+
def test_index
get :index, :project_id => 1
assert_response :success
@@ -39,6 +46,24 @@ class BoardsControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:project)
end
+ def test_new_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/boards/new'},
+ :controller => 'boards', :action => 'new', :project_id => 'world_domination'
+ )
+ assert_recognizes(
+ {:controller => 'boards', :action => 'new', :project_id => 'world_domination'},
+ {:method => :post, :path => '/projects/world_domination/boards'}
+ )
+ end
+
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/boards/44'},
+ :controller => 'boards', :action => 'show', :id => '44', :project_id => 'world_domination'
+ )
+ end
+
def test_show
get :show, :project_id => 1, :id => 1
assert_response :success
@@ -47,4 +72,22 @@ class BoardsControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:project)
assert_not_nil assigns(:topics)
end
+
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/boards/44/edit'},
+ :controller => 'boards', :action => 'edit', :id => '44', :project_id => 'world_domination'
+ )
+ assert_recognizes(#TODO: use PUT method to board_path, modify form accordingly
+ {:controller => 'boards', :action => 'edit', :id => '44', :project_id => 'world_domination'},
+ {:method => :post, :path => '/projects/world_domination/boards/44/edit'}
+ )
+ end
+
+ def test_destroy_routing
+ assert_routing(#TODO: use DELETE method to board_path, modify form accoringly
+ {:method => :post, :path => '/projects/world_domination/boards/44/destroy'},
+ :controller => 'boards', :action => 'destroy', :id => '44', :project_id => 'world_domination'
+ )
+ end
end
diff --git a/test/functional/documents_controller_test.rb b/test/functional/documents_controller_test.rb
index b2e7abda0..2ad94aacf 100644
--- a/test/functional/documents_controller_test.rb
+++ b/test/functional/documents_controller_test.rb
@@ -30,7 +30,14 @@ class DocumentsControllerTest < Test::Unit::TestCase
@response = ActionController::TestResponse.new
User.current = nil
end
-
+
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/documents'},
+ :controller => 'documents', :action => 'index', :project_id => '567'
+ )
+ end
+
def test_index
# Sets a default category
e = Enumeration.find_by_name('Technical documentation')
@@ -47,6 +54,17 @@ class DocumentsControllerTest < Test::Unit::TestCase
:content => 'Technical documentation'}
end
+ def test_new_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/documents/new'},
+ :controller => 'documents', :action => 'new', :project_id => '567'
+ )
+ assert_recognizes(
+ {:controller => 'documents', :action => 'new', :project_id => '567'},
+ {:method => :post, :path => '/projects/567/documents'}
+ )
+ end
+
def test_new_with_one_attachment
@request.session[:user_id] = 2
set_tmp_attachments_directory
@@ -66,6 +84,31 @@ class DocumentsControllerTest < Test::Unit::TestCase
assert_equal 'testfile.txt', document.attachments.first.filename
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/documents/22/edit'},
+ :controller => 'documents', :action => 'edit', :id => '22'
+ )
+ assert_recognizes(#TODO: should be using PUT on document URI
+ {:controller => 'documents', :action => 'edit', :id => '567'},
+ {:method => :post, :path => '/documents/567/edit'}
+ )
+ end
+
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/documents/22'},
+ :controller => 'documents', :action => 'show', :id => '22'
+ )
+ end
+
+ def test_destroy_routing
+ assert_recognizes(#TODO: should be using DELETE on document URI
+ {:controller => 'documents', :action => 'destroy', :id => '567'},
+ {:method => :post, :path => '/documents/567/destroy'}
+ )
+ end
+
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 1
diff --git a/test/functional/issue_relations_controller_test.rb b/test/functional/issue_relations_controller_test.rb
new file mode 100644
index 000000000..69464c5f5
--- /dev/null
+++ b/test/functional/issue_relations_controller_test.rb
@@ -0,0 +1,22 @@
+require File.dirname(__FILE__) + '/../test_helper'
+require 'issue_relations_controller'
+
+# Re-raise errors caught by the controller.
+class IssueRelationsController; def rescue_action(e) raise e end; end
+
+
+class IssueRelationsControllerTest < Test::Unit::TestCase
+ def test_new_routing
+ assert_routing(
+ {:method => :post, :path => '/issues/1/relations'},
+ {:controller => 'issue_relations', :action => 'new', :issue_id => '1'}
+ )
+ end
+
+ def test_destroy_routing
+ assert_recognizes( #TODO: use DELETE on issue URI
+ {:controller => 'issue_relations', :action => 'destroy', :issue_id => '1', :id => '23'},
+ {:method => :post, :path => '/issues/1/relations/23/destroy'}
+ )
+ end
+end
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index daca0eb41..1097ca5d1 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -49,6 +49,13 @@ class IssuesControllerTest < Test::Unit::TestCase
@response = ActionController::TestResponse.new
User.current = nil
end
+
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/issues'},
+ :controller => 'issues', :action => 'index'
+ )
+ end
def test_index
get :index
@@ -74,6 +81,31 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_tag :tag => 'a', :content => /Subproject issue/
end
+ def test_index_with_project_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/23/issues'},
+ :controller => 'issues', :action => 'index', :project_id => '23'
+ )
+ end
+
+ def test_index_should_not_list_issues_when_module_disabled
+ EnabledModule.delete_all("name = 'issue_tracking' AND project_id = 1")
+ get :index
+ assert_response :success
+ assert_template 'index.rhtml'
+ assert_not_nil assigns(:issues)
+ assert_nil assigns(:project)
+ assert_no_tag :tag => 'a', :content => /Can't print recipes/
+ assert_tag :tag => 'a', :content => /Subproject issue/
+ end
+
+ def test_index_with_project_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/23/issues'},
+ :controller => 'issues', :action => 'index', :project_id => '23'
+ )
+ end
+
def test_index_with_project
Setting.display_subprojects_issues = 0
get :index, :project_id => 1
@@ -107,6 +139,17 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_tag :tag => 'a', :content => /Issue of a private subproject/
end
+ def test_index_with_project_routing_formatted
+ assert_routing(
+ {:method => :get, :path => 'projects/23/issues.pdf'},
+ :controller => 'issues', :action => 'index', :project_id => '23', :format => 'pdf'
+ )
+ assert_routing(
+ {:method => :get, :path => 'projects/23/issues.atom'},
+ :controller => 'issues', :action => 'index', :project_id => '23', :format => 'atom'
+ )
+ end
+
def test_index_with_project_and_filter
get :index, :project_id => 1, :set_filter => 1
assert_response :success
@@ -126,6 +169,17 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_equal 'text/csv', @response.content_type
end
+ def test_index_formatted
+ assert_routing(
+ {:method => :get, :path => 'issues.pdf'},
+ :controller => 'issues', :action => 'index', :format => 'pdf'
+ )
+ assert_routing(
+ {:method => :get, :path => 'issues.atom'},
+ :controller => 'issues', :action => 'index', :format => 'atom'
+ )
+ end
+
def test_index_pdf
get :index, :format => 'pdf'
assert_response :success
@@ -221,6 +275,24 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_equal 'application/atom+xml', @response.content_type
end
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/issues/64'},
+ :controller => 'issues', :action => 'show', :id => '64'
+ )
+ end
+
+ def test_show_routing_formatted
+ assert_routing(
+ {:method => :get, :path => '/issues/2332.pdf'},
+ :controller => 'issues', :action => 'show', :id => '2332', :format => 'pdf'
+ )
+ assert_routing(
+ {:method => :get, :path => '/issues/23123.atom'},
+ :controller => 'issues', :action => 'show', :id => '23123', :format => 'atom'
+ )
+ end
+
def test_show_by_anonymous
get :show, :id => 1
assert_response :success
@@ -251,6 +323,17 @@ class IssuesControllerTest < Test::Unit::TestCase
:child => { :tag => 'legend',
:content => /Notes/ } }
end
+
+ def test_new_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/issues/new'},
+ :controller => 'issues', :action => 'new', :project_id => '1'
+ )
+ assert_recognizes(
+ {:controller => 'issues', :action => 'new', :project_id => '1'},
+ {:method => :post, :path => '/projects/1/issues'}
+ )
+ end
def test_show_export_to_pdf
get :show, :id => 3, :format => 'pdf'
@@ -290,7 +373,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:priority_id => 5}
assert_response :success
assert_template 'new'
- end
+ end
def test_post_new
@request.session[:user_id] = 2
@@ -301,7 +384,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:priority_id => 5,
:estimated_hours => '',
:custom_field_values => {'2' => 'Value for field 2'}}
- assert_redirected_to :controller => 'issues', :action => 'show'
+ assert_redirected_to :action => 'show'
issue = Issue.find_by_subject('This is the test_new issue')
assert_not_nil issue
@@ -330,9 +413,9 @@ class IssuesControllerTest < Test::Unit::TestCase
:subject => 'This is the test_new issue',
:description => 'This is the description',
:priority_id => 5}
- assert_redirected_to :controller => 'issues', :action => 'show'
+ assert_redirected_to :action => 'show'
end
-
+
def test_post_new_with_required_custom_field_and_without_custom_fields_param
field = IssueCustomField.find_by_name('Database')
field.update_attribute(:is_required, true)
@@ -402,6 +485,13 @@ class IssuesControllerTest < Test::Unit::TestCase
:value => 'Value for field 2'}
end
+ def test_copy_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/issues/567/copy'},
+ :controller => 'issues', :action => 'new', :project_id => 'world_domination', :copy_from => '567'
+ )
+ end
+
def test_copy_issue
@request.session[:user_id] = 2
get :new, :project_id => 1, :copy_from => 1
@@ -411,6 +501,17 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_equal orig.subject, assigns(:issue).subject
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/issues/1/edit'},
+ :controller => 'issues', :action => 'edit', :id => '1'
+ )
+ assert_recognizes( #TODO: use a PUT on the issue URI isntead, need to adjust form
+ {:controller => 'issues', :action => 'edit', :id => '1'},
+ {:method => :post, :path => '/issues/1/edit'}
+ )
+ end
+
def test_get_edit
@request.session[:user_id] = 2
get :edit, :id => 1
@@ -442,6 +543,13 @@ class IssuesControllerTest < Test::Unit::TestCase
:attributes => { :selected => 'selected' } }
end
+ def test_reply_routing
+ assert_routing(
+ {:method => :post, :path => '/issues/1/quoted'},
+ :controller => 'issues', :action => 'reply', :id => '1'
+ )
+ end
+
def test_reply_to_issue
@request.session[:user_id] = 2
get :reply, :id => 1
@@ -473,7 +581,7 @@ class IssuesControllerTest < Test::Unit::TestCase
}
end
end
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
issue.reload
assert_equal new_subject, issue.subject
# Make sure custom fields were not cleared
@@ -499,7 +607,7 @@ class IssuesControllerTest < Test::Unit::TestCase
}
end
end
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
issue.reload
assert_equal 'New custom value', issue.custom_value_for(2).value
@@ -519,7 +627,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:notes => 'Assigned to dlopper',
:time_entry => { :hours => '', :comments => '', :activity_id => Enumeration.get_values('ACTI').first }
end
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
issue.reload
assert_equal 2, issue.status_id
j = issue.journals.find(:first, :order => 'id DESC')
@@ -536,7 +644,7 @@ class IssuesControllerTest < Test::Unit::TestCase
post :edit,
:id => 1,
:notes => notes
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
j = Issue.find(1).journals.find(:first, :order => 'id DESC')
assert_equal notes, j.notes
assert_equal 0, j.details.size
@@ -555,7 +663,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:notes => '2.5 hours added',
:time_entry => { :hours => '2.5', :comments => '', :activity_id => Enumeration.get_values('ACTI').first }
end
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
issue = Issue.find(1)
@@ -581,7 +689,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:id => 1,
:notes => '',
:attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
j = Issue.find(1).journals.find(:first, :order => 'id DESC')
assert j.notes.blank?
assert_equal 1, j.details.size
@@ -600,7 +708,7 @@ class IssuesControllerTest < Test::Unit::TestCase
post :edit,
:id => 1,
:notes => ''
- assert_redirected_to 'issues/show/1'
+ assert_redirected_to :action => 'show', :id => '1'
issue.reload
assert issue.journals.empty?
@@ -671,17 +779,28 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_nil Issue.find(2).assigned_to
end
+ def test_move_routing
+ assert_routing(
+ {:method => :get, :path => '/issues/1/move'},
+ :controller => 'issues', :action => 'move', :id => '1'
+ )
+ assert_recognizes(
+ {:controller => 'issues', :action => 'move', :id => '1'},
+ {:method => :post, :path => '/issues/1/move'}
+ )
+ end
+
def test_move_one_issue_to_another_project
@request.session[:user_id] = 1
post :move, :id => 1, :new_project_id => 2
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert_equal 2, Issue.find(1).project_id
end
def test_bulk_move_to_another_project
@request.session[:user_id] = 1
post :move, :ids => [1, 2], :new_project_id => 2
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
# Issues moved to project 2
assert_equal 2, Issue.find(1).project_id
assert_equal 2, Issue.find(2).project_id
@@ -693,7 +812,7 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_bulk_move_to_another_tracker
@request.session[:user_id] = 1
post :move, :ids => [1, 2], :new_tracker_id => 2
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert_equal 2, Issue.find(1).tracker_id
assert_equal 2, Issue.find(2).tracker_id
end
@@ -714,10 +833,10 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_response :success
assert_template 'context_menu'
assert_tag :tag => 'a', :content => 'Edit',
- :attributes => { :href => '/issues/edit/1',
+ :attributes => { :href => '/issues/1/edit',
:class => 'icon-edit' }
assert_tag :tag => 'a', :content => 'Closed',
- :attributes => { :href => '/issues/edit/1?issue%5Bstatus_id%5D=5',
+ :attributes => { :href => '/issues/1/edit?issue%5Bstatus_id%5D=5',
:class => '' }
assert_tag :tag => 'a', :content => 'Immediate',
:attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&amp;priority_id=8',
@@ -726,7 +845,7 @@ class IssuesControllerTest < Test::Unit::TestCase
:attributes => { :href => '/issues/bulk_edit?assigned_to_id=3&amp;ids%5B%5D=1',
:class => '' }
assert_tag :tag => 'a', :content => 'Copy',
- :attributes => { :href => '/projects/ecookbook/issues/new?copy_from=1',
+ :attributes => { :href => '/projects/ecookbook/issues/1/copy',
:class => 'icon-copy' }
assert_tag :tag => 'a', :content => 'Move',
:attributes => { :href => '/issues/move?ids%5B%5D=1',
@@ -777,11 +896,18 @@ class IssuesControllerTest < Test::Unit::TestCase
:class => 'icon-del disabled' }
end
+ def test_destroy_routing
+ assert_recognizes( #TODO: use DELETE on issue URI (need to change forms)
+ {:controller => 'issues', :action => 'destroy', :id => '1'},
+ {:method => :post, :path => '/issues/1/destroy'}
+ )
+ end
+
def test_destroy_issue_with_no_time_entries
assert_nil TimeEntry.find_by_issue_id(2)
@request.session[:user_id] = 2
post :destroy, :id => 2
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert_nil Issue.find_by_id(2)
end
@@ -797,7 +923,7 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_destroy_issues_and_destroy_time_entries
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'destroy'
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_nil TimeEntry.find_by_id([1, 2])
end
@@ -805,7 +931,7 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_destroy_issues_and_assign_time_entries_to_project
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'nullify'
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_nil TimeEntry.find(1).issue_id
assert_nil TimeEntry.find(2).issue_id
@@ -814,7 +940,7 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_destroy_issues_and_reassign_time_entries_to_another_issue
@request.session[:user_id] = 2
post :destroy, :ids => [1, 3], :todo => 'reassign', :reassign_to_id => 2
- assert_redirected_to 'projects/ecookbook/issues'
+ assert_redirected_to :action => 'index', :project_id => 'ecookbook'
assert !(Issue.find_by_id(1) || Issue.find_by_id(3))
assert_equal 2, TimeEntry.find(1).issue_id
assert_equal 2, TimeEntry.find(2).issue_id
diff --git a/test/functional/members_controller_test.rb b/test/functional/members_controller_test.rb
new file mode 100644
index 000000000..f69bde193
--- /dev/null
+++ b/test/functional/members_controller_test.rb
@@ -0,0 +1,15 @@
+require File.dirname(__FILE__) + '/../test_helper'
+require 'members_controller'
+
+# Re-raise errors caught by the controller.
+class MembersController; def rescue_action(e) raise e end; end
+
+
+class MembersControllerTest < Test::Unit::TestCase
+ def test_members_routing
+ assert_routing(
+ {:method => :post, :path => 'projects/5234/members/new'},
+ :controller => 'members', :action => 'new', :id => '5234'
+ )
+ end
+end
diff --git a/test/functional/messages_controller_test.rb b/test/functional/messages_controller_test.rb
index 7f6c3854b..d19249c06 100644
--- a/test/functional/messages_controller_test.rb
+++ b/test/functional/messages_controller_test.rb
@@ -31,6 +31,13 @@ class MessagesControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/boards/22/topics/2'},
+ :controller => 'messages', :action => 'show', :id => '2', :board_id => '22'
+ )
+ end
+
def test_show
get :show, :board_id => 1, :id => 1
assert_response :success
@@ -54,6 +61,17 @@ class MessagesControllerTest < Test::Unit::TestCase
assert_response 404
end
+ def test_new_routing
+ assert_routing(
+ {:method => :get, :path => '/boards/lala/topics/new'},
+ :controller => 'messages', :action => 'new', :board_id => 'lala'
+ )
+ assert_recognizes(#TODO: POST to collection, need to adjust form accordingly
+ {:controller => 'messages', :action => 'new', :board_id => 'lala'},
+ {:method => :post, :path => '/boards/lala/topics/new'}
+ )
+ end
+
def test_get_new
@request.session[:user_id] = 2
get :new, :board_id => 1
@@ -86,6 +104,17 @@ class MessagesControllerTest < Test::Unit::TestCase
assert mail.bcc.include?('dlopper@somenet.foo')
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/boards/lala/topics/22/edit'},
+ :controller => 'messages', :action => 'edit', :board_id => 'lala', :id => '22'
+ )
+ assert_recognizes( #TODO: use PUT to topic_path, modify form accordingly
+ {:controller => 'messages', :action => 'edit', :board_id => 'lala', :id => '22'},
+ {:method => :post, :path => '/boards/lala/topics/22/edit'}
+ )
+ end
+
def test_get_edit
@request.session[:user_id] = 2
get :edit, :board_id => 1, :id => 1
@@ -104,6 +133,13 @@ class MessagesControllerTest < Test::Unit::TestCase
assert_equal 'New body', message.content
end
+ def test_reply_routing
+ assert_recognizes(
+ {:controller => 'messages', :action => 'reply', :board_id => '22', :id => '555'},
+ {:method => :post, :path => '/boards/22/topics/555/replies'}
+ )
+ end
+
def test_reply
@request.session[:user_id] = 2
post :reply, :board_id => 1, :id => 1, :reply => { :content => 'This is a test reply', :subject => 'Test reply' }
@@ -111,6 +147,13 @@ class MessagesControllerTest < Test::Unit::TestCase
assert Message.find_by_subject('Test reply')
end
+ def test_destroy_routing
+ assert_recognizes(#TODO: use DELETE to topic_path, adjust form accordingly
+ {:controller => 'messages', :action => 'destroy', :board_id => '22', :id => '555'},
+ {:method => :post, :path => '/boards/22/topics/555/destroy'}
+ )
+ end
+
def test_destroy_topic
@request.session[:user_id] = 2
post :destroy, :board_id => 1, :id => 1
diff --git a/test/functional/news_controller_test.rb b/test/functional/news_controller_test.rb
index 01f8015b9..651471b66 100644
--- a/test/functional/news_controller_test.rb
+++ b/test/functional/news_controller_test.rb
@@ -31,6 +31,20 @@ class NewsControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/news'},
+ :controller => 'news', :action => 'index'
+ )
+ end
+
+ def test_index_routing_formatted
+ assert_routing(
+ {:method => :get, :path => '/news.atom'},
+ :controller => 'news', :action => 'index', :format => 'atom'
+ )
+ end
+
def test_index
get :index
assert_response :success
@@ -38,6 +52,20 @@ class NewsControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:newss)
assert_nil assigns(:project)
end
+
+ def test_index_with_project_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/news'},
+ :controller => 'news', :action => 'index', :project_id => '567'
+ )
+ end
+
+ def test_index_with_project_routing_formatted
+ assert_routing(
+ {:method => :get, :path => '/projects/567/news.atom'},
+ :controller => 'news', :action => 'index', :project_id => '567', :format => 'atom'
+ )
+ end
def test_index_with_project
get :index, :project_id => 1
@@ -46,6 +74,13 @@ class NewsControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:newss)
end
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/news/2'},
+ :controller => 'news', :action => 'show', :id => '2'
+ )
+ end
+
def test_show
get :show, :id => 1
assert_response :success
@@ -58,6 +93,17 @@ class NewsControllerTest < Test::Unit::TestCase
assert_response 404
end
+ def test_new_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/news/new'},
+ :controller => 'news', :action => 'new', :project_id => '567'
+ )
+ assert_recognizes(
+ {:controller => 'news', :action => 'new', :project_id => '567'},
+ {:method => :post, :path => '/projects/567/news'}
+ )
+ end
+
def test_get_new
@request.session[:user_id] = 2
get :new, :project_id => 1
@@ -79,6 +125,17 @@ class NewsControllerTest < Test::Unit::TestCase
assert_equal Project.find(1), news.project
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/news/234'},
+ :controller => 'news', :action => 'show', :id => '234'
+ )
+ assert_recognizes(#TODO: PUT to news URI instead, need to modify form
+ {:controller => 'news', :action => 'edit', :id => '567'},
+ {:method => :post, :path => '/news/567/edit'}
+ )
+ end
+
def test_get_edit
@request.session[:user_id] = 2
get :edit, :id => 1
@@ -127,6 +184,13 @@ class NewsControllerTest < Test::Unit::TestCase
assert_equal comments_count - 1, News.find(1).comments.size
end
+ def test_destroy_routing
+ assert_recognizes(#TODO: should use DELETE to news URI, need to change form
+ {:controller => 'news', :action => 'destroy', :id => '567'},
+ {:method => :post, :path => '/news/567/destroy'}
+ )
+ end
+
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 1
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb
index 4b8c6c402..25f9ad78e 100644
--- a/test/functional/projects_controller_test.rb
+++ b/test/functional/projects_controller_test.rb
@@ -33,7 +33,14 @@ class ProjectsControllerTest < Test::Unit::TestCase
@request.session[:user_id] = nil
Setting.default_language = 'en'
end
-
+
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/projects'},
+ :controller => 'projects', :action => 'index'
+ )
+ end
+
def test_index
get :index
assert_response :success
@@ -50,7 +57,14 @@ class ProjectsControllerTest < Test::Unit::TestCase
}
assert_no_tag :a, :content => /Private child of eCookbook/
- end
+ end
+
+ def test_index_atom_routing
+ assert_routing(
+ {:method => :get, :path => '/projects.atom'},
+ :controller => 'projects', :action => 'index', :format => 'atom'
+ )
+ end
def test_index_atom
get :index, :format => 'atom'
@@ -59,12 +73,34 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert_select 'feed>title', :text => 'Redmine: Latest projects'
assert_select 'feed>entry', :count => Project.count(:conditions => Project.visible_by(User.current))
end
-
- def test_show_by_id
- get :show, :id => 1
+
+ def test_add_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/new'},
+ :controller => 'projects', :action => 'add'
+ )
+ assert_recognizes(
+ {:controller => 'projects', :action => 'add'},
+ {:method => :post, :path => '/projects/new'}
+ )
+ assert_recognizes(
+ {:controller => 'projects', :action => 'add'},
+ {:method => :post, :path => '/projects'}
+ )
+ end
+
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/test'},
+ :controller => 'projects', :action => 'show', :id => 'test'
+ )
+ end
+
+ def test_show_by_id
+ get :show, :id => 1
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:project)
+ assert_template 'show'
+ assert_not_nil assigns(:project)
end
def test_show_by_identifier
@@ -90,6 +126,17 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert_tag :tag => 'a', :content => /Private child/
end
+ def test_settings_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/4223/settings'},
+ :controller => 'projects', :action => 'settings', :id => '4223'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/4223/settings/members'},
+ :controller => 'projects', :action => 'settings', :id => '4223', :tab => 'members'
+ )
+ end
+
def test_settings
@request.session[:user_id] = 2 # manager
get :settings, :id => 1
@@ -106,13 +153,49 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert_equal 'Test changed name', project.name
end
+ def test_add_version_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/64/versions/new'},
+ :controller => 'projects', :action => 'add_version', :id => '64'
+ )
+ assert_routing(
+ #TODO: use PUT
+ {:method => :post, :path => 'projects/64/versions/new'},
+ :controller => 'projects', :action => 'add_version', :id => '64'
+ )
+ end
+
+ def test_add_issue_category_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/test/categories/new'},
+ :controller => 'projects', :action => 'add_issue_category', :id => 'test'
+ )
+ assert_routing(
+ #TODO: use PUT and update form
+ {:method => :post, :path => 'projects/64/categories/new'},
+ :controller => 'projects', :action => 'add_issue_category', :id => '64'
+ )
+ end
+
+ def test_destroy_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/destroy'},
+ :controller => 'projects', :action => 'destroy', :id => '567'
+ )
+ assert_routing(
+ #TODO: use DELETE and update form
+ {:method => :post, :path => 'projects/64/destroy'},
+ :controller => 'projects', :action => 'destroy', :id => '64'
+ )
+ end
+
def test_get_destroy
@request.session[:user_id] = 1 # admin
get :destroy, :id => 1
assert_response :success
assert_template 'destroy'
assert_not_nil Project.find_by_id(1)
- end
+ end
def test_post_destroy
@request.session[:user_id] = 1 # admin
@@ -142,6 +225,17 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert mail.body.include?('testfile.txt')
end
+ def test_add_file_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/33/files/new'},
+ :controller => 'projects', :action => 'add_file', :id => '33'
+ )
+ assert_routing(
+ {:method => :post, :path => '/projects/33/files/new'},
+ :controller => 'projects', :action => 'add_file', :id => '33'
+ )
+ end
+
def test_add_version_file
set_tmp_attachments_directory
@request.session[:user_id] = 2
@@ -156,27 +250,48 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert_equal 'testfile.txt', a.filename
assert_equal Version.find(2), a.container
end
-
- def test_list_files
- get :list_files, :id => 1
- assert_response :success
- assert_template 'list_files'
+
+ def test_list_files
+ get :list_files, :id => 1
+ assert_response :success
+ assert_template 'list_files'
assert_not_nil assigns(:containers)
# file attached to the project
assert_tag :a, :content => 'project_file.zip',
:attributes => { :href => '/attachments/download/8/project_file.zip' }
-
+
# file attached to a project's version
assert_tag :a, :content => 'version_file.zip',
:attributes => { :href => '/attachments/download/9/version_file.zip' }
- end
-
- def test_changelog
- get :changelog, :id => 1
- assert_response :success
- assert_template 'changelog'
- assert_not_nil assigns(:versions)
+ end
+
+ def test_list_files_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/33/files'},
+ :controller => 'projects', :action => 'list_files', :id => '33'
+ )
+ end
+
+ def test_changelog_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/44/changelog'},
+ :controller => 'projects', :action => 'changelog', :id => '44'
+ )
+ end
+
+ def test_changelog
+ get :changelog, :id => 1
+ assert_response :success
+ assert_template 'changelog'
+ assert_not_nil assigns(:versions)
+ end
+
+ def test_roadmap_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/33/roadmap'},
+ :controller => 'projects', :action => 'roadmap', :id => '33'
+ )
end
def test_roadmap
@@ -200,7 +315,21 @@ class ProjectsControllerTest < Test::Unit::TestCase
# Completed version appears
assert assigns(:versions).include?(Version.find(1))
end
-
+
+ def test_project_activity_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/activity'},
+ :controller => 'projects', :action => 'activity', :id => '1'
+ )
+ end
+
+ def test_project_activity_atom_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/activity.atom'},
+ :controller => 'projects', :action => 'activity', :id => '1', :format => 'atom'
+ )
+ end
+
def test_project_activity
get :activity, :id => 1, :with_subprojects => 0
assert_response :success
@@ -237,6 +366,10 @@ class ProjectsControllerTest < Test::Unit::TestCase
}
end
+ def test_global_activity_routing
+ assert_routing({:method => :get, :path => '/activity'}, :controller => 'projects', :action => 'activity')
+ end
+
def test_global_activity
get :activity
assert_response :success
@@ -273,19 +406,39 @@ class ProjectsControllerTest < Test::Unit::TestCase
}
end
+ def test_global_activity_atom_routing
+ assert_routing({:method => :get, :path => '/activity.atom'}, :controller => 'projects', :action => 'activity', :format => 'atom')
+ end
+
def test_activity_atom_feed
get :activity, :format => 'atom'
assert_response :success
assert_template 'common/feed.atom.rxml'
end
- def test_archive
+ def test_archive_routing
+ assert_routing(
+ #TODO: use PUT to project path and modify form
+ {:method => :post, :path => 'projects/64/archive'},
+ :controller => 'projects', :action => 'archive', :id => '64'
+ )
+ end
+
+ def test_archive
@request.session[:user_id] = 1 # admin
post :archive, :id => 1
assert_redirected_to 'admin/projects'
assert !Project.find(1).active?
end
+ def test_unarchive_routing
+ assert_routing(
+ #TODO: use PUT to project path and modify form
+ {:method => :post, :path => '/projects/567/unarchive'},
+ :controller => 'projects', :action => 'unarchive', :id => '567'
+ )
+ end
+
def test_unarchive
@request.session[:user_id] = 1 # admin
Project.find(1).archive
diff --git a/test/functional/reports_controller_test.rb b/test/functional/reports_controller_test.rb
new file mode 100644
index 000000000..b90d904f8
--- /dev/null
+++ b/test/functional/reports_controller_test.rb
@@ -0,0 +1,20 @@
+require File.dirname(__FILE__) + '/../test_helper'
+require 'reports_controller'
+
+# Re-raise errors caught by the controller.
+class ReportsController; def rescue_action(e) raise e end; end
+
+
+class ReportsControllerTest < Test::Unit::TestCase
+ def test_issue_report_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/issues/report'},
+ :controller => 'reports', :action => 'issue_report', :id => '567'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/issues/report/assigned_to'},
+ :controller => 'reports', :action => 'issue_report', :id => '567', :detail => 'assigned_to'
+ )
+
+ end
+end
diff --git a/test/functional/repositories_controller_test.rb b/test/functional/repositories_controller_test.rb
index 972c57e00..ccf5e77ba 100644
--- a/test/functional/repositories_controller_test.rb
+++ b/test/functional/repositories_controller_test.rb
@@ -31,25 +31,134 @@ class RepositoriesControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_show_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/redmine/repository'},
+ :controller => 'repositories', :action => 'show', :id => 'redmine'
+ )
+ end
+
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/world_domination/repository/edit'},
+ :controller => 'repositories', :action => 'edit', :id => 'world_domination'
+ )
+ assert_routing(
+ {:method => :post, :path => '/projects/world_domination/repository/edit'},
+ :controller => 'repositories', :action => 'edit', :id => 'world_domination'
+ )
+ end
+
+ def test_revisions_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/redmine/repository/revisions'},
+ :controller => 'repositories', :action => 'revisions', :id => 'redmine'
+ )
+ end
+
+ def test_revisions_atom_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/redmine/repository/revisions.atom'},
+ :controller => 'repositories', :action => 'revisions', :id => 'redmine', :format => 'atom'
+ )
+ end
+
def test_revisions
get :revisions, :id => 1
assert_response :success
assert_template 'revisions'
assert_not_nil assigns(:changesets)
end
+
+ def test_revision_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/revisions/2457'},
+ :controller => 'repositories', :action => 'revision', :id => 'restmine', :rev => '2457'
+ )
+ end
def test_revision_with_before_nil_and_afer_normal
get :revision, {:id => 1, :rev => 1}
assert_response :success
assert_template 'revision'
assert_no_tag :tag => "div", :attributes => { :class => "contextual" },
- :child => { :tag => "a", :attributes => { :href => '/repositories/revision/ecookbook/0'}
+ :child => { :tag => "a", :attributes => { :href => '/projects/ecookbook/repository/revisions/0'}
}
assert_tag :tag => "div", :attributes => { :class => "contextual" },
- :child => { :tag => "a", :attributes => { :href => '/repositories/revision/ecookbook/2'}
+ :child => { :tag => "a", :attributes => { :href => '/projects/ecookbook/repository/revisions/2'}
}
end
+
+ def test_diff_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/revisions/2457/diff'},
+ :controller => 'repositories', :action => 'diff', :id => 'restmine', :rev => '2457'
+ )
+ end
+
+ def test_unified_diff_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/revisions/2457/diff.diff'},
+ :controller => 'repositories', :action => 'diff', :id => 'restmine', :rev => '2457', :format => 'diff'
+ )
+ end
+
+ def test_diff_path_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/diff/path/to/file.c'},
+ :controller => 'repositories', :action => 'diff', :id => 'restmine', :path => %w[path to file.c]
+ )
+ end
+ def test_diff_path_routing_with_revision
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/revisions/2/diff/path/to/file.c'},
+ :controller => 'repositories', :action => 'diff', :id => 'restmine', :path => %w[path to file.c], :rev => '2'
+ )
+ end
+
+ def test_browse_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/browse/path/to/dir'},
+ :controller => 'repositories', :action => 'browse', :id => 'restmine', :path => %w[path to dir]
+ )
+ end
+
+ def test_entry_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/entry/path/to/file.c'},
+ :controller => 'repositories', :action => 'entry', :id => 'restmine', :path => %w[path to file.c]
+ )
+ end
+
+ def test_entry_routing_with_revision
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/revisions/2/entry/path/to/file.c'},
+ :controller => 'repositories', :action => 'entry', :id => 'restmine', :path => %w[path to file.c], :rev => '2'
+ )
+ end
+
+ def test_annotate_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/annotate/path/to/file.c'},
+ :controller => 'repositories', :action => 'annotate', :id => 'restmine', :path => %w[path to file.c]
+ )
+ end
+
+ def test_changesrouting
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/changes/path/to/file.c'},
+ :controller => 'repositories', :action => 'changes', :id => 'restmine', :path => %w[path to file.c]
+ )
+ end
+
+ def test_statistics_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/restmine/repository/statistics'},
+ :controller => 'repositories', :action => 'stats', :id => 'restmine'
+ )
+ end
+
def test_graph_commits_per_month
get :graph, :id => 1, :graph => 'commits_per_month'
assert_response :success
diff --git a/test/functional/repositories_subversion_controller_test.rb b/test/functional/repositories_subversion_controller_test.rb
index 1ec8dc4a9..a3918a922 100644
--- a/test/functional/repositories_subversion_controller_test.rb
+++ b/test/functional/repositories_subversion_controller_test.rb
@@ -131,11 +131,11 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
:child => { :tag => 'li',
# link to the entry at rev 2
:child => { :tag => 'a',
- :attributes => {:href => '/repositories/entry/ecookbook/test/some/path/in/the/repo?rev=2'},
+ :attributes => {:href => '/projects/ecookbook/repository/revisions/2/entry/test/some/path/in/the/repo'},
:content => 'repo',
# link to partial diff
:sibling => { :tag => 'a',
- :attributes => { :href => '/repositories/diff/ecookbook/test/some/path/in/the/repo?rev=2' }
+ :attributes => { :href => '/projects/ecookbook/repository/revisions/2/diff/test/some/path/in/the/repo' }
}
}
}
@@ -153,11 +153,11 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
:child => { :tag => 'li',
# link to the entry at rev 2
:child => { :tag => 'a',
- :attributes => {:href => '/repositories/entry/ecookbook/path/in/the/repo?rev=2'},
+ :attributes => {:href => '/projects/ecookbook/repository/revisions/2/entry/path/in/the/repo'},
:content => 'repo',
# link to partial diff
:sibling => { :tag => 'a',
- :attributes => { :href => '/repositories/diff/ecookbook/path/in/the/repo?rev=2' }
+ :attributes => { :href => '/projects/ecookbook/repository/revisions/2/diff/path/in/the/repo' }
}
}
}
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index a83de5db0..f2d0f3141 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -30,6 +30,28 @@ class TimelogControllerTest < Test::Unit::TestCase
@response = ActionController::TestResponse.new
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/issues/567/time_entries/new'},
+ :controller => 'timelog', :action => 'edit', :issue_id => '567'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/ecookbook/time_entries/new'},
+ :controller => 'timelog', :action => 'edit', :project_id => 'ecookbook'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/ecookbook/issues/567/time_entries/new'},
+ :controller => 'timelog', :action => 'edit', :project_id => 'ecookbook', :issue_id => '567'
+ )
+
+ #TODO: change new form to POST to issue_time_entries_path instead of to edit action
+ #TODO: change edit form to PUT to time_entry_path
+ assert_routing(
+ {:method => :get, :path => '/time_entries/22/edit'},
+ :controller => 'timelog', :action => 'edit', :id => '22'
+ )
+ end
+
def test_get_edit
@request.session[:user_id] = 3
get :edit, :project_id => 1
@@ -41,6 +63,8 @@ class TimelogControllerTest < Test::Unit::TestCase
end
def test_post_edit
+ # TODO: should POST to issues’ time log instead of project. change form
+ # and routing
@request.session[:user_id] = 3
post :edit, :project_id => 1,
:time_entry => {:comments => 'Some work on TimelogControllerTest',
@@ -49,7 +73,7 @@ class TimelogControllerTest < Test::Unit::TestCase
:spent_on => '2008-03-14',
:issue_id => '1',
:hours => '7.3'}
- assert_redirected_to 'projects/ecookbook/timelog/details'
+ assert_redirected_to :action => 'details', :project_id => 'ecookbook'
i = Issue.find(1)
t = TimeEntry.find_by_comments('Some work on TimelogControllerTest')
@@ -70,7 +94,7 @@ class TimelogControllerTest < Test::Unit::TestCase
post :edit, :id => 1,
:time_entry => {:issue_id => '2',
:hours => '8'}
- assert_redirected_to 'projects/ecookbook/timelog/details'
+ assert_redirected_to :action => 'details', :project_id => 'ecookbook'
entry.reload
assert_equal 8, entry.hours
@@ -78,18 +102,44 @@ class TimelogControllerTest < Test::Unit::TestCase
assert_equal 2, entry.user_id
end
+ def test_destroy_routing
+ #TODO: use DELETE to time_entry_path
+ assert_routing(
+ {:method => :post, :path => '/time_entries/55/destroy'},
+ :controller => 'timelog', :action => 'destroy', :id => '55'
+ )
+ end
+
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 1
- assert_redirected_to 'projects/ecookbook/timelog/details'
+ assert_redirected_to :action => 'details', :project_id => 'ecookbook'
assert_nil TimeEntry.find_by_id(1)
end
-
+
+ def test_report_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/time_entries/report'},
+ :controller => 'timelog', :action => 'report', :project_id => '567'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/time_entries/report.csv'},
+ :controller => 'timelog', :action => 'report', :project_id => '567', :format => 'csv'
+ )
+ end
+
def test_report_no_criteria
get :report, :project_id => 1
assert_response :success
assert_template 'report'
end
+
+ def test_report_routing_for_all_projects
+ assert_routing(
+ {:method => :get, :path => '/time_entries/report'},
+ :controller => 'timelog', :action => 'report'
+ )
+ end
def test_report_all_projects
get :report
@@ -103,7 +153,7 @@ class TimelogControllerTest < Test::Unit::TestCase
r.permissions_will_change!
r.save
get :report
- assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Ftimelog%2Freport'
+ assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Ftime_entries%2Freport'
end
def test_report_all_projects_one_criteria
@@ -201,7 +251,14 @@ class TimelogControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:total_hours)
assert_equal "162.90", "%.2f" % assigns(:total_hours)
end
-
+
+ def test_project_details_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/time_entries'},
+ :controller => 'timelog', :action => 'details', :project_id => '567'
+ )
+ end
+
def test_details_at_project_level
get :details, :project_id => 1
assert_response :success
@@ -239,6 +296,23 @@ class TimelogControllerTest < Test::Unit::TestCase
assert_equal Date.today, assigns(:to)
end
+ def test_issue_details_routing
+ assert_routing(
+ {:method => :get, :path => 'time_entries'},
+ :controller => 'timelog', :action => 'details'
+ )
+ assert_routing(
+ {:method => :get, :path => '/issues/234/time_entries'},
+ :controller => 'timelog', :action => 'details', :issue_id => '234'
+ )
+ # TODO: issue detail page shouldnt link to project_issue_time_entries_path but to normal issues one
+ # doesnt seem to have effect on resulting page so controller can be left untouched
+ assert_routing(
+ {:method => :get, :path => '/projects/ecookbook/issues/123/time_entries'},
+ :controller => 'timelog', :action => 'details', :project_id => 'ecookbook', :issue_id => '123'
+ )
+ end
+
def test_details_at_issue_level
get :details, :issue_id => 1
assert_response :success
@@ -252,6 +326,39 @@ class TimelogControllerTest < Test::Unit::TestCase
assert_equal '2007-04-22'.to_date, assigns(:to)
end
+ def test_details_formatted_routing
+ assert_routing(
+ {:method => :get, :path => 'time_entries.atom'},
+ :controller => 'timelog', :action => 'details', :format => 'atom'
+ )
+ assert_routing(
+ {:method => :get, :path => 'time_entries.csv'},
+ :controller => 'timelog', :action => 'details', :format => 'csv'
+ )
+ end
+
+ def test_details_for_project_formatted_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/time_entries.atom'},
+ :controller => 'timelog', :action => 'details', :format => 'atom', :project_id => '567'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/time_entries.csv'},
+ :controller => 'timelog', :action => 'details', :format => 'csv', :project_id => '567'
+ )
+ end
+
+ def test_details_for_issue_formatted_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/ecookbook/issues/123/time_entries.atom'},
+ :controller => 'timelog', :action => 'details', :project_id => 'ecookbook', :issue_id => '123', :format => 'atom'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/ecookbook/issues/123/time_entries.csv'},
+ :controller => 'timelog', :action => 'details', :project_id => 'ecookbook', :issue_id => '123', :format => 'csv'
+ )
+ end
+
def test_details_atom_feed
get :details, :project_id => 1, :format => 'atom'
assert_response :success
diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
index 82f3e9ee2..42e69f48d 100644
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -32,11 +32,27 @@ class UsersControllerTest < Test::Unit::TestCase
@request.session[:user_id] = 1 # admin
end
+ def test_index_routing
+ #TODO: unify with list
+ assert_generates(
+ '/users',
+ :controller => 'users', :action => 'index'
+ )
+ end
+
def test_index
get :index
assert_response :success
assert_template 'list'
end
+
+ def test_list_routing
+ #TODO: rename action to index
+ assert_routing(
+ {:method => :get, :path => '/users'},
+ :controller => 'users', :action => 'list'
+ )
+ end
def test_list
get :list
@@ -56,17 +72,71 @@ class UsersControllerTest < Test::Unit::TestCase
assert_equal 1, users.size
assert_equal 'John', users.first.firstname
end
+
+ def test_add_routing
+ assert_routing(
+ {:method => :get, :path => '/users/new'},
+ :controller => 'users', :action => 'add'
+ )
+ assert_recognizes(
+ #TODO: remove this and replace with POST to collection, need to modify form
+ {:controller => 'users', :action => 'add'},
+ {:method => :post, :path => '/users/new'}
+ )
+ assert_recognizes(
+ {:controller => 'users', :action => 'add'},
+ {:method => :post, :path => '/users'}
+ )
+ end
+
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/users/444/edit'},
+ :controller => 'users', :action => 'edit', :id => '444'
+ )
+ assert_routing(
+ {:method => :get, :path => '/users/222/edit/membership'},
+ :controller => 'users', :action => 'edit', :id => '222', :tab => 'membership'
+ )
+ assert_recognizes(
+ #TODO: use PUT on user_path, modify form
+ {:controller => 'users', :action => 'edit', :id => '444'},
+ {:method => :post, :path => '/users/444/edit'}
+ )
+ end
+
+ def test_add_membership_routing
+ assert_routing(
+ {:method => :post, :path => '/users/123/memberships'},
+ :controller => 'users', :action => 'edit_membership', :id => '123'
+ )
+ end
+
+ def test_edit_membership_routing
+ assert_routing(
+ {:method => :post, :path => '/users/123/memberships/55'},
+ :controller => 'users', :action => 'edit_membership', :id => '123', :membership_id => '55'
+ )
+ end
def test_edit_membership
post :edit_membership, :id => 2, :membership_id => 1,
:membership => { :role_id => 2}
- assert_redirected_to '/users/edit/2?tab=memberships'
+ assert_redirected_to :action => 'edit', :id => '2', :tab => 'memberships'
assert_equal 2, Member.find(1).role_id
end
def test_destroy_membership
+ assert_routing(
+ #TODO: use DELETE method on user_membership_path, modify form
+ {:method => :post, :path => '/users/567/memberships/12/destroy'},
+ :controller => 'users', :action => 'destroy_membership', :id => '567', :membership_id => '12'
+ )
+ end
+
+ def test_destroy_membership
post :destroy_membership, :id => 2, :membership_id => 1
- assert_redirected_to '/users/edit/2?tab=memberships'
+ assert_redirected_to :action => 'edit', :id => '2', :tab => 'memberships'
assert_nil Member.find_by_id(1)
end
end
diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb
index 562a57dd8..2ddf3a9f1 100644
--- a/test/functional/versions_controller_test.rb
+++ b/test/functional/versions_controller_test.rb
@@ -52,7 +52,7 @@ class VersionsControllerTest < Test::Unit::TestCase
post :edit, :id => 2,
:version => { :name => 'New version name',
:effective_date => Date.today.strftime("%Y-%m-%d")}
- assert_redirected_to '/projects/settings/ecookbook?tab=versions'
+ assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
version = Version.find(2)
assert_equal 'New version name', version.name
assert_equal Date.today, version.effective_date
@@ -61,7 +61,7 @@ class VersionsControllerTest < Test::Unit::TestCase
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 3
- assert_redirected_to '/projects/settings/ecookbook?tab=versions'
+ assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
assert_nil Version.find_by_id(3)
end
diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb
index d47a4ff47..40dc04ae4 100644
--- a/test/functional/wiki_controller_test.rb
+++ b/test/functional/wiki_controller_test.rb
@@ -31,6 +31,21 @@ class WikiControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_index_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki'},
+ :controller => 'wiki', :action => 'index', :id => '567'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/lalala'},
+ :controller => 'wiki', :action => 'index', :id => '567', :page => 'lalala'
+ )
+ assert_generates(
+ '/projects/567/wiki',
+ :controller => 'wiki', :action => 'index', :id => '567', :page => nil
+ )
+ end
+
def test_show_start_page
get :index, :id => 'ecookbook'
assert_response :success
@@ -40,7 +55,7 @@ class WikiControllerTest < Test::Unit::TestCase
# child_pages macro
assert_tag :ul, :attributes => { :class => 'pages-hierarchy' },
:child => { :tag => 'li',
- :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/Page_with_an_inline_image' },
+ :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Page_with_an_inline_image' },
:content => 'Page with an inline image' } }
end
@@ -67,6 +82,17 @@ class WikiControllerTest < Test::Unit::TestCase
assert_template 'edit'
end
+ def test_edit_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/my_page/edit'},
+ :controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page'
+ )
+ assert_recognizes(#TODO: use PUT to page path, adjust forms accordingly
+ {:controller => 'wiki', :action => 'edit', :id => '567', :page => 'my_page'},
+ {:method => :post, :path => '/projects/567/wiki/my_page/edit'}
+ )
+ end
+
def test_create_page
@request.session[:user_id] = 2
post :edit, :id => 1,
@@ -74,13 +100,20 @@ class WikiControllerTest < Test::Unit::TestCase
:content => {:comments => 'Created the page',
:text => "h1. New page\n\nThis is a new page",
:version => 0}
- assert_redirected_to 'wiki/ecookbook/New_page'
+ assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'New_page'
page = Project.find(1).wiki.find_page('New page')
assert !page.new_record?
assert_not_nil page.content
assert_equal 'Created the page', page.content.comments
end
+ def test_preview_routing
+ assert_routing(
+ {:method => :post, :path => '/projects/567/wiki/CookBook_documentation/preview'},
+ :controller => 'wiki', :action => 'preview', :id => '567', :page => 'CookBook_documentation'
+ )
+ end
+
def test_preview
@request.session[:user_id] = 2
xhr :post, :preview, :id => 1, :page => 'CookBook_documentation',
@@ -103,6 +136,13 @@ class WikiControllerTest < Test::Unit::TestCase
assert_tag :tag => 'h1', :content => /New page/
end
+ def test_history_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/wiki/CookBook_documentation/history'},
+ :controller => 'wiki', :action => 'history', :id => '1', :page => 'CookBook_documentation'
+ )
+ end
+
def test_history
get :history, :id => 1, :page => 'CookBook_documentation'
assert_response :success
@@ -120,6 +160,13 @@ class WikiControllerTest < Test::Unit::TestCase
assert_equal 1, assigns(:versions).size
assert_select "input[type=submit][name=commit]", false
end
+
+ def test_diff_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/wiki/CookBook_documentation/diff/2/vs/1'},
+ :controller => 'wiki', :action => 'diff', :id => '1', :page => 'CookBook_documentation', :version => '2', :version_from => '1'
+ )
+ end
def test_diff
get :diff, :id => 1, :page => 'CookBook_documentation', :version => 2, :version_from => 1
@@ -129,6 +176,13 @@ class WikiControllerTest < Test::Unit::TestCase
:content => /updated/
end
+ def test_annotate_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/1/wiki/CookBook_documentation/annotate/2'},
+ :controller => 'wiki', :action => 'annotate', :id => '1', :page => 'CookBook_documentation', :version => '2'
+ )
+ end
+
def test_annotate
get :annotate, :id => 1, :page => 'CookBook_documentation', :version => 2
assert_response :success
@@ -143,12 +197,24 @@ class WikiControllerTest < Test::Unit::TestCase
:child => { :tag => 'td', :content => /Some updated \[\[documentation\]\] here/ }
end
+ def test_rename_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/22/wiki/ladida/rename'},
+ :controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida'
+ )
+ assert_recognizes(
+ #TODO: should be moved into a update action and use a PUT to the page URI
+ {:controller => 'wiki', :action => 'rename', :id => '22', :page => 'ladida'},
+ {:method => :post, :path => '/projects/22/wiki/ladida/rename'}
+ )
+ end
+
def test_rename_with_redirect
@request.session[:user_id] = 2
post :rename, :id => 1, :page => 'Another_page',
:wiki_page => { :title => 'Another renamed page',
:redirect_existing_links => 1 }
- assert_redirected_to 'wiki/ecookbook/Another_renamed_page'
+ assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page'
wiki = Project.find(1).wiki
# Check redirects
assert_not_nil wiki.find_page('Another page')
@@ -160,16 +226,43 @@ class WikiControllerTest < Test::Unit::TestCase
post :rename, :id => 1, :page => 'Another_page',
:wiki_page => { :title => 'Another renamed page',
:redirect_existing_links => "0" }
- assert_redirected_to 'wiki/ecookbook/Another_renamed_page'
+ assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_renamed_page'
wiki = Project.find(1).wiki
# Check that there's no redirects
assert_nil wiki.find_page('Another page')
end
+ def test_destroy_routing
+ assert_recognizes(
+ #TODO: should use DELETE on page URI
+ {:controller => 'wiki', :action => 'destroy', :id => '22', :page => 'ladida'},
+ {:method => :post, :path => 'projects/22/wiki/ladida/destroy'}
+ )
+ end
+
def test_destroy
@request.session[:user_id] = 2
post :destroy, :id => 1, :page => 'CookBook_documentation'
- assert_redirected_to 'wiki/ecookbook/Page_index/special'
+ assert_redirected_to :action => 'special', :id => 'ecookbook', :page => 'Page_index'
+ end
+
+ def test_special_routing
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/page_index'},
+ :controller => 'wiki', :action => 'special', :id => '567', :page => 'page_index'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/Page_Index'},
+ :controller => 'wiki', :action => 'special', :id => '567', :page => 'Page_Index'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/date_index'},
+ :controller => 'wiki', :action => 'special', :id => '567', :page => 'date_index'
+ )
+ assert_routing(
+ {:method => :get, :path => '/projects/567/wiki/export'},
+ :controller => 'wiki', :action => 'special', :id => '567', :page => 'export'
+ )
end
def test_page_index
@@ -181,13 +274,13 @@ class WikiControllerTest < Test::Unit::TestCase
assert_equal Project.find(1).wiki.pages.size, pages.size
assert_tag :ul, :attributes => { :class => 'pages-hierarchy' },
- :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/CookBook_documentation' },
+ :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/CookBook_documentation' },
:content => 'CookBook documentation' },
:child => { :tag => 'ul',
:child => { :tag => 'li',
- :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/Page_with_an_inline_image' },
+ :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Page_with_an_inline_image' },
:content => 'Page with an inline image' } } } },
- :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/wiki/ecookbook/Another_page' },
+ :child => { :tag => 'li', :child => { :tag => 'a', :attributes => { :href => '/projects/ecookbook/wiki/Another_page' },
:content => 'Another page' } }
end
@@ -196,12 +289,19 @@ class WikiControllerTest < Test::Unit::TestCase
assert_response 404
end
+ def test_protect_routing
+ assert_routing(
+ {:method => :post, :path => 'projects/22/wiki/ladida/protect'},
+ {:controller => 'wiki', :action => 'protect', :id => '22', :page => 'ladida'}
+ )
+ end
+
def test_protect_page
page = WikiPage.find_by_wiki_id_and_title(1, 'Another_page')
assert !page.protected?
@request.session[:user_id] = 2
post :protect, :id => 1, :page => page.title, :protected => '1'
- assert_redirected_to 'wiki/ecookbook/Another_page'
+ assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'Another_page'
assert page.reload.protected?
end
@@ -210,7 +310,7 @@ class WikiControllerTest < Test::Unit::TestCase
assert page.protected?
@request.session[:user_id] = 2
post :protect, :id => 1, :page => page.title, :protected => '0'
- assert_redirected_to '/wiki/ecookbook/CookBook_documentation'
+ assert_redirected_to :action => 'index', :id => 'ecookbook', :page => 'CookBook_documentation'
assert !page.reload.protected?
end
@@ -219,7 +319,7 @@ class WikiControllerTest < Test::Unit::TestCase
get :index, :id => 1
assert_response :success
assert_template 'show'
- assert_tag :tag => 'a', :attributes => { :href => '/wiki/1/CookBook_documentation/edit' }
+ assert_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' }
end
def test_show_page_without_edit_link
@@ -227,7 +327,7 @@ class WikiControllerTest < Test::Unit::TestCase
get :index, :id => 1
assert_response :success
assert_template 'show'
- assert_no_tag :tag => 'a', :attributes => { :href => '/wiki/1/CookBook_documentation/edit' }
+ assert_no_tag :tag => 'a', :attributes => { :href => '/projects/1/wiki/CookBook_documentation/edit' }
end
def test_edit_unprotected_page
diff --git a/test/functional/wikis_controller_test.rb b/test/functional/wikis_controller_test.rb
index 9dc8c7226..4000b1128 100644
--- a/test/functional/wikis_controller_test.rb
+++ b/test/functional/wikis_controller_test.rb
@@ -31,6 +31,14 @@ class WikisControllerTest < Test::Unit::TestCase
User.current = nil
end
+ def test_edit_routing
+ assert_routing(
+ #TODO: use PUT
+ {:method => :post, :path => 'projects/ladida/wiki'},
+ :controller => 'wikis', :action => 'edit', :id => 'ladida'
+ )
+ end
+
def test_create
@request.session[:user_id] = 1
assert_nil Project.find(3).wiki
@@ -41,10 +49,21 @@ class WikisControllerTest < Test::Unit::TestCase
assert_equal 'Start page', wiki.start_page
end
+ def test_destroy_routing
+ assert_routing(
+ {:method => :get, :path => 'projects/ladida/wiki/destroy'},
+ :controller => 'wikis', :action => 'destroy', :id => 'ladida'
+ )
+ assert_recognizes( #TODO: use DELETE and update form
+ {:controller => 'wikis', :action => 'destroy', :id => 'ladida'},
+ {:method => :post, :path => 'projects/ladida/wiki/destroy'}
+ )
+ end
+
def test_destroy
@request.session[:user_id] = 1
post :destroy, :id => 1, :confirm => 1
- assert_redirected_to '/projects/settings/ecookbook?tab=wiki'
+ assert_redirected_to :action => 'settings', :id => 'ecookbook', :tab => 'wiki'
assert_nil Project.find(1).wiki
end
@@ -53,4 +72,4 @@ class WikisControllerTest < Test::Unit::TestCase
post :destroy, :id => 999, :confirm => 1
assert_response 404
end
-end
+end
diff --git a/test/integration/admin_test.rb b/test/integration/admin_test.rb
index 6e385873e..5182c9abd 100644
--- a/test/integration/admin_test.rb
+++ b/test/integration/admin_test.rb
@@ -42,10 +42,10 @@ class AdminTest < ActionController::IntegrationTest
def test_add_project
log_user("admin", "admin")
- get "projects/add"
+ get "projects/new"
assert_response :success
assert_template "projects/add"
- post "projects/add", :project => { :name => "blog",
+ post "projects", :project => { :name => "blog",
:description => "weblog",
:identifier => "blog",
:is_public => 1,
diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb
index 2ef933fc2..61bbbce34 100644
--- a/test/integration/issues_test.rb
+++ b/test/integration/issues_test.rb
@@ -39,7 +39,7 @@ class IssuesTest < ActionController::IntegrationTest
assert_response :success
assert_template 'issues/new'
- post 'projects/1/issues/new', :tracker_id => "1",
+ post 'projects/1/issues', :tracker_id => "1",
:issue => { :start_date => "2006-12-26",
:priority_id => "3",
:subject => "new test issue",
@@ -54,7 +54,7 @@ class IssuesTest < ActionController::IntegrationTest
assert_kind_of Issue, issue
# check redirection
- assert_redirected_to "issues/show"
+ assert_redirected_to :controller => 'issues', :action => 'show'
follow_redirect!
assert_equal issue, assigns(:issue)
@@ -69,10 +69,10 @@ class IssuesTest < ActionController::IntegrationTest
log_user('jsmith', 'jsmith')
set_tmp_attachments_directory
- post 'issues/edit/1',
+ post 'issues/1/edit',
:notes => 'Some notes',
:attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
- assert_redirected_to "issues/show/1"
+ assert_redirected_to "issues/1"
# make sure attachment was saved
attachment = Issue.find(1).attachments.find_by_filename("testfile.txt")
diff --git a/test/integration/projects_test.rb b/test/integration/projects_test.rb
index e56bee484..14175ea98 100644
--- a/test/integration/projects_test.rb
+++ b/test/integration/projects_test.rb
@@ -27,18 +27,18 @@ class ProjectsTest < ActionController::IntegrationTest
assert_response :success
assert_template "admin/projects"
post "projects/archive", :id => 1
- assert_redirected_to "admin/projects"
+ assert_redirected_to "admin/projects"
assert !Project.find(1).active?
- get "projects/show", :id => 1
+ get 'projects/1'
assert_response 403
- get "projects/show", :id => subproject.id
+ get "projects/#{subproject.id}"
assert_response 403
post "projects/unarchive", :id => 1
- assert_redirected_to "admin/projects"
+ assert_redirected_to "admin/projects"
assert Project.find(1).active?
- get "projects/show", :id => 1
+ get "projects/1"
assert_response :success
end
end
diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb
index 5f1a58935..9fbb3f653 100644
--- a/test/unit/helpers/application_helper_test.rb
+++ b/test/unit/helpers/application_helper_test.rb
@@ -174,23 +174,23 @@ class ApplicationHelperTest < HelperTestCase
def test_wiki_links
to_test = {
- '[[CookBook documentation]]' => '<a href="/wiki/ecookbook/CookBook_documentation" class="wiki-page">CookBook documentation</a>',
- '[[Another page|Page]]' => '<a href="/wiki/ecookbook/Another_page" class="wiki-page">Page</a>',
+ '[[CookBook documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">CookBook documentation</a>',
+ '[[Another page|Page]]' => '<a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Page</a>',
# link with anchor
- '[[CookBook documentation#One-section]]' => '<a href="/wiki/ecookbook/CookBook_documentation#One-section" class="wiki-page">CookBook documentation</a>',
- '[[Another page#anchor|Page]]' => '<a href="/wiki/ecookbook/Another_page#anchor" class="wiki-page">Page</a>',
+ '[[CookBook documentation#One-section]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation#One-section" class="wiki-page">CookBook documentation</a>',
+ '[[Another page#anchor|Page]]' => '<a href="/projects/ecookbook/wiki/Another_page#anchor" class="wiki-page">Page</a>',
# page that doesn't exist
- '[[Unknown page]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">Unknown page</a>',
- '[[Unknown page|404]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">404</a>',
+ '[[Unknown page]]' => '<a href="/projects/ecookbook/wiki/Unknown_page" class="wiki-page new">Unknown page</a>',
+ '[[Unknown page|404]]' => '<a href="/projects/ecookbook/wiki/Unknown_page" class="wiki-page new">404</a>',
# link to another project wiki
- '[[onlinestore:]]' => '<a href="/wiki/onlinestore/" class="wiki-page">onlinestore</a>',
- '[[onlinestore:|Wiki]]' => '<a href="/wiki/onlinestore/" class="wiki-page">Wiki</a>',
- '[[onlinestore:Start page]]' => '<a href="/wiki/onlinestore/Start_page" class="wiki-page">Start page</a>',
- '[[onlinestore:Start page|Text]]' => '<a href="/wiki/onlinestore/Start_page" class="wiki-page">Text</a>',
- '[[onlinestore:Unknown page]]' => '<a href="/wiki/onlinestore/Unknown_page" class="wiki-page new">Unknown page</a>',
+ '[[onlinestore:]]' => '<a href="/projects/onlinestore/wiki/" class="wiki-page">onlinestore</a>',
+ '[[onlinestore:|Wiki]]' => '<a href="/projects/onlinestore/wiki/" class="wiki-page">Wiki</a>',
+ '[[onlinestore:Start page]]' => '<a href="/projects/onlinestore/wiki/Start_page" class="wiki-page">Start page</a>',
+ '[[onlinestore:Start page|Text]]' => '<a href="/projects/onlinestore/wiki/Start_page" class="wiki-page">Text</a>',
+ '[[onlinestore:Unknown page]]' => '<a href="/projects/onlinestore/wiki/Unknown_page" class="wiki-page new">Unknown page</a>',
# striked through link
- '-[[Another page|Page]]-' => '<del><a href="/wiki/ecookbook/Another_page" class="wiki-page">Page</a></del>',
- '-[[Another page|Page]] link-' => '<del><a href="/wiki/ecookbook/Another_page" class="wiki-page">Page</a> link</del>',
+ '-[[Another page|Page]]-' => '<del><a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Page</a></del>',
+ '-[[Another page|Page]] link-' => '<del><a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Page</a> link</del>',
# escaping
'![[Another page|Page]]' => '[[Another page|Page]]',
}
@@ -242,9 +242,9 @@ EXPECTED
def test_wiki_links_in_tables
to_test = {"|[[Page|Link title]]|[[Other Page|Other title]]|\n|Cell 21|[[Last page]]|" =>
- '<tr><td><a href="/wiki/ecookbook/Page" class="wiki-page new">Link title</a></td>' +
- '<td><a href="/wiki/ecookbook/Other_Page" class="wiki-page new">Other title</a></td>' +
- '</tr><tr><td>Cell 21</td><td><a href="/wiki/ecookbook/Last_page" class="wiki-page new">Last page</a></td></tr>'
+ '<tr><td><a href="/projects/ecookbook/wiki/Page" class="wiki-page new">Link title</a></td>' +
+ '<td><a href="/projects/ecookbook/wiki/Other_Page" class="wiki-page new">Other title</a></td>' +
+ '</tr><tr><td>Cell 21</td><td><a href="/projects/ecookbook/wiki/Last_page" class="wiki-page new">Last page</a></td></tr>'
}
@project = Project.find(1)
to_test.each { |text, result| assert_equal "<table>#{result}</table>", textilizable(text).gsub(/[\t\n]/, '') }
diff --git a/test/unit/lib/redmine/wiki_formatting/macros_test.rb b/test/unit/lib/redmine/wiki_formatting/macros_test.rb
index b5284acd3..a75289551 100644
--- a/test/unit/lib/redmine/wiki_formatting/macros_test.rb
+++ b/test/unit/lib/redmine/wiki_formatting/macros_test.rb
@@ -64,8 +64,8 @@ class Redmine::WikiFormatting::MacrosTest < HelperTestCase
def test_macro_child_pages
expected = "<p><ul class=\"pages-hierarchy\">\n" +
- "<li><a href=\"/wiki/ecookbook/Child_1\">Child 1</a></li>\n" +
- "<li><a href=\"/wiki/ecookbook/Child_2\">Child 2</a></li>\n" +
+ "<li><a href=\"/projects/ecookbook/wiki/Child_1\">Child 1</a></li>\n" +
+ "<li><a href=\"/projects/ecookbook/wiki/Child_2\">Child 2</a></li>\n" +
"</ul>\n</p>"
@project = Project.find(1)
@@ -80,10 +80,10 @@ class Redmine::WikiFormatting::MacrosTest < HelperTestCase
def test_macro_child_pages_with_option
expected = "<p><ul class=\"pages-hierarchy\">\n" +
- "<li><a href=\"/wiki/ecookbook/Another_page\">Another page</a>\n" +
+ "<li><a href=\"/projects/ecookbook/wiki/Another_page\">Another page</a>\n" +
"<ul class=\"pages-hierarchy\">\n" +
- "<li><a href=\"/wiki/ecookbook/Child_1\">Child 1</a></li>\n" +
- "<li><a href=\"/wiki/ecookbook/Child_2\">Child 2</a></li>\n" +
+ "<li><a href=\"/projects/ecookbook/wiki/Child_1\">Child 1</a></li>\n" +
+ "<li><a href=\"/projects/ecookbook/wiki/Child_2\">Child 2</a></li>\n" +
"</ul>\n</li>\n</ul>\n</p>"
@project = Project.find(1)
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index 1e09eaa5c..141ff40b9 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -31,12 +31,12 @@ class MailerTest < Test::Unit::TestCase
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
# link to the main ticket
- assert mail.body.include?('<a href="https://mydomain.foo/issues/show/1">Bug #1: Can\'t print recipes</a>')
-
+ assert mail.body.include?('<a href="https://mydomain.foo/issues/1">Bug #1: Can\'t print recipes</a>')
+
# link to a referenced ticket
- assert mail.body.include?('<a href="https://mydomain.foo/issues/show/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
+ assert mail.body.include?('<a href="https://mydomain.foo/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
# link to a changeset
- assert mail.body.include?('<a href="https://mydomain.foo/repositories/revision/ecookbook/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
+ assert mail.body.include?('<a href="https://mydomain.foo/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
end
def test_generated_links_with_prefix
@@ -52,12 +52,12 @@ class MailerTest < Test::Unit::TestCase
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
# link to the main ticket
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/show/1">Bug #1: Can\'t print recipes</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/1">Bug #1: Can\'t print recipes</a>')
# link to a referenced ticket
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/show/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
# link to a changeset
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/repositories/revision/ecookbook/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
ensure
# restore it
Redmine::Utils.relative_url_root = relative_url_root
@@ -76,12 +76,12 @@ class MailerTest < Test::Unit::TestCase
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
# link to the main ticket
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/show/1">Bug #1: Can\'t print recipes</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/1">Bug #1: Can\'t print recipes</a>')
# link to a referenced ticket
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/show/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
# link to a changeset
- assert mail.body.include?('<a href="http://mydomain.foo/rdm/repositories/revision/ecookbook/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
+ assert mail.body.include?('<a href="http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
ensure
# restore it
Redmine::Utils.relative_url_root = relative_url_root
@@ -92,7 +92,7 @@ class MailerTest < Test::Unit::TestCase
journal = Journal.find(2)
Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
- assert !mail.body.include?('<a href="https://mydomain.foo/issues/show/1">Bug #1: Can\'t print recipes</a>')
+ assert !mail.body.include?('<a href="https://mydomain.foo/issues/1">Bug #1: Can\'t print recipes</a>')
end
def test_issue_add_message_id