summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/fixtures/wiki_content_versions.yml11
-rw-r--r--test/functional/boards_controller_test.rb7
-rw-r--r--test/functional/roles_controller_test.rb32
-rw-r--r--test/functional/search_controller_test.rb224
-rw-r--r--test/functional/search_custom_fields_visibility_test.rb4
-rw-r--r--test/functional/settings_controller_test.rb6
-rw-r--r--test/functional/time_entry_reports_controller_test.rb40
-rw-r--r--test/functional/timelog_controller_test.rb81
-rw-r--r--test/functional/timelog_custom_fields_visibility_test.rb6
-rw-r--r--test/functional/trackers_controller_test.rb10
-rw-r--r--test/functional/users_controller_test.rb61
-rw-r--r--test/functional/versions_controller_test.rb47
-rw-r--r--test/functional/watchers_controller_test.rb10
-rw-r--r--test/functional/welcome_controller_test.rb15
-rw-r--r--test/functional/wiki_controller_test.rb95
-rw-r--r--test/functional/wikis_controller_test.rb3
-rw-r--r--test/functional/workflows_controller_test.rb36
17 files changed, 333 insertions, 355 deletions
diff --git a/test/fixtures/wiki_content_versions.yml b/test/fixtures/wiki_content_versions.yml
index d3a614ac9..99be463d8 100644
--- a/test/fixtures/wiki_content_versions.yml
+++ b/test/fixtures/wiki_content_versions.yml
@@ -9,10 +9,10 @@ wiki_content_versions_001:
wiki_content_id: 1
compression: ""
data: |-
- h1. CookBook documentation
+ h1. CookBook documentation v1
-
+ Line from v1
Some [[documentation]] here...
wiki_content_versions_002:
updated_on: 2007-03-07 00:08:34 +01:00
@@ -24,10 +24,10 @@ wiki_content_versions_002:
wiki_content_id: 1
compression: ""
data: |-
- h1. CookBook documentation
+ h1. CookBook documentation v2
-
+ Line from v1
Some updated [[documentation]] here...
wiki_content_versions_003:
updated_on: 2007-03-07 00:10:51 +01:00
@@ -39,7 +39,8 @@ wiki_content_versions_003:
wiki_content_id: 1
compression: ""
data: |-
- h1. CookBook documentation
+ h1. CookBook documentation v3
+
Some updated [[documentation]] here...
wiki_content_versions_004:
data: |-
diff --git a/test/functional/boards_controller_test.rb b/test/functional/boards_controller_test.rb
index dcb32d708..ce70599be 100644
--- a/test/functional/boards_controller_test.rb
+++ b/test/functional/boards_controller_test.rb
@@ -161,14 +161,14 @@ class BoardsControllerTest < Redmine::ControllerTest
post :create, :project_id => 1, :board => { :name => '', :description => 'Testing board creation'}
end
assert_response :success
- assert_template 'new'
+ assert_select_error /Name cannot be blank/
end
def test_edit
@request.session[:user_id] = 2
get :edit, :project_id => 1, :id => 2
assert_response :success
- assert_template 'edit'
+ assert_select 'input[name=?][value=?]', 'board[name]', 'Discussion'
end
def test_edit_with_parent
@@ -176,7 +176,6 @@ class BoardsControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :edit, :project_id => 1, :id => board.id
assert_response :success
- assert_template 'edit'
assert_select 'select[name=?]', 'board[parent_id]' do
assert_select 'option[value="2"][selected=selected]'
@@ -204,7 +203,7 @@ class BoardsControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
put :update, :project_id => 1, :id => 2, :board => { :name => '', :description => 'Testing board update'}
assert_response :success
- assert_template 'edit'
+ assert_select_error /Name cannot be blank/
end
def test_destroy
diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb
index 42fb3658b..ba26e0c63 100644
--- a/test/functional/roles_controller_test.rb
+++ b/test/functional/roles_controller_test.rb
@@ -28,18 +28,17 @@ class RolesControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:roles)
- assert_equal Role.order('builtin, position').to_a, assigns(:roles)
-
- assert_select 'a[href="/roles/1/edit"]', :text => 'Manager'
+ assert_select 'table.roles tbody' do
+ assert_select 'tr', Role.count
+ assert_select 'a[href="/roles/1/edit"]', :text => 'Manager'
+ end
end
def test_new
get :new
assert_response :success
- assert_template 'new'
+ assert_select 'input[name=?]', 'role[name]'
end
def test_new_with_copy
@@ -47,10 +46,7 @@ class RolesControllerTest < Redmine::ControllerTest
get :new, :params => {:copy => copy_from.id.to_s}
assert_response :success
- assert_template 'new'
-
- role = assigns(:role)
- assert_equal copy_from.permissions, role.permissions
+ assert_select 'input[name=?]', 'role[name]'
assert_select 'form' do
# blank name
@@ -76,8 +72,7 @@ class RolesControllerTest < Redmine::ControllerTest
}
}
assert_response :success
- assert_template 'new'
- assert_select 'div#errorExplanation'
+ assert_select_error /Name cannot be blank/
end
def test_create_without_workflow_copy
@@ -113,15 +108,16 @@ class RolesControllerTest < Redmine::ControllerTest
def test_edit
get :edit, :params => {:id => 1}
assert_response :success
- assert_template 'edit'
- assert_equal Role.find(1), assigns(:role)
+
+ assert_select 'input[name=?][value=?]', 'role[name]', 'Manager'
assert_select 'select[name=?]', 'role[issues_visibility]'
end
def test_edit_anonymous
get :edit, :params => {:id => Role.anonymous.id}
assert_response :success
- assert_template 'edit'
+
+ assert_select 'input[name=?]', 'role[name]', 0
assert_select 'select[name=?]', 'role[issues_visibility]', 0
end
@@ -165,7 +161,7 @@ class RolesControllerTest < Redmine::ControllerTest
def test_update_with_failure
put :update, :params => {:id => 1, :role => {:name => ''}}
assert_response :success
- assert_template 'edit'
+ assert_select_error /Name cannot be blank/
end
def test_destroy
@@ -186,10 +182,6 @@ class RolesControllerTest < Redmine::ControllerTest
def test_get_permissions
get :permissions
assert_response :success
- assert_template 'permissions'
-
- assert_not_nil assigns(:roles)
- assert_equal Role.order('builtin, position').to_a, assigns(:roles)
assert_select 'input[name=?][type=checkbox][value=add_issues][checked=checked]', 'permissions[3][]'
assert_select 'input[name=?][type=checkbox][value=delete_issues]:not([checked])', 'permissions[3][]'
diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb
index ae4943d9d..54148a2f4 100644
--- a/test/functional/search_controller_test.rb
+++ b/test/functional/search_controller_test.rb
@@ -30,15 +30,16 @@ class SearchControllerTest < Redmine::ControllerTest
User.current = nil
end
- def test_search_for_projects
+ def test_search_without_q_should_display_search_form
get :index
assert_response :success
- assert_template 'index'
+ assert_select '#content input[name=q]'
+ end
+ def test_search_for_projects
get :index, :params => {:q => "cook"}
assert_response :success
- assert_template 'index'
- assert assigns(:results).include?(Project.find(1))
+ assert_select '#search-results dt.project a', :text => /eCookbook/
end
def test_search_on_archived_project_should_return_404
@@ -69,29 +70,32 @@ class SearchControllerTest < Redmine::ControllerTest
get :index, :params => {:q => 'recipe subproject commit', :all_words => ''}
end
assert_response :success
- assert_template 'index'
- assert assigns(:results).include?(Issue.find(2))
- assert assigns(:results).include?(Issue.find(5))
- assert assigns(:results).include?(Changeset.find(101))
- assert_select 'dt.issue a', :text => /Add ingredients categories/
- assert_select 'dd', :text => /should be classified by categories/
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => /Feature request #2/
+ assert_select 'dt.issue a', :text => /Bug #5/
+ assert_select 'dt.changeset a', :text => /Revision 1/
+
+ assert_select 'dt.issue a', :text => /Add ingredients categories/
+ assert_select 'dd', :text => /should be classified by categories/
+ end
- assert assigns(:result_count_by_type).is_a?(Hash)
- assert_equal 5, assigns(:result_count_by_type)['changesets']
- assert_select 'a', :text => 'Changesets (5)'
+ assert_select '#search-results-counts' do
+ assert_select 'a', :text => 'Changesets (5)'
+ end
end
def test_search_issues
get :index, :params => {:q => 'issue', :issues => 1}
assert_response :success
- assert_template 'index'
- assert_equal true, assigns(:all_words)
- assert_equal false, assigns(:titles_only)
- assert assigns(:results).include?(Issue.find(8))
- assert assigns(:results).include?(Issue.find(5))
- assert_select 'dt.issue.closed a', :text => /Closed/
+ assert_select 'input[name=all_words][checked=checked]'
+ assert_select 'input[name=titles_only]:not([checked])'
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => /Bug #5/
+ assert_select 'dt.issue.closed a', :text => /Bug #8 \(Closed\)/
+ end
end
def test_search_issues_should_search_notes
@@ -99,7 +103,10 @@ class SearchControllerTest < Redmine::ControllerTest
get :index, :params => {:q => 'searchkeyword', :issues => 1}
assert_response :success
- assert_include Issue.find(2), assigns(:results)
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => /Feature request #2/
+ end
end
def test_search_issues_with_multiple_matches_in_journals_should_return_issue_once
@@ -108,8 +115,11 @@ class SearchControllerTest < Redmine::ControllerTest
get :index, :params => {:q => 'searchkeyword', :issues => 1}
assert_response :success
- assert_include Issue.find(2), assigns(:results)
- assert_equal 1, assigns(:results).size
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => /Feature request #2/
+ assert_select 'dt', 1
+ end
end
def test_search_issues_should_search_private_notes_with_permission_only
@@ -119,66 +129,74 @@ class SearchControllerTest < Redmine::ControllerTest
Role.find(1).add_permission! :view_private_notes
get :index, :params => {:q => 'searchkeyword', :issues => 1}
assert_response :success
- assert_include Issue.find(2), assigns(:results)
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => /Feature request #2/
+ end
Role.find(1).remove_permission! :view_private_notes
get :index, :params => {:q => 'searchkeyword', :issues => 1}
assert_response :success
- assert_not_include Issue.find(2), assigns(:results)
+ assert_select '#search-results' do
+ assert_select 'dt', :text => /Feature request #2/, :count => 0
+ end
end
def test_search_all_projects_with_scope_param
get :index, :params => {:q => 'issue', :scope => 'all'}
assert_response :success
- assert_template 'index'
- assert assigns(:results).present?
+
+ assert_select '#search-results dt'
end
def test_search_my_projects
@request.session[:user_id] = 2
get :index, :params => {:id => 1, :q => 'recipe subproject', :scope => 'my_projects', :all_words => ''}
assert_response :success
- assert_template 'index'
- assert assigns(:results).include?(Issue.find(1))
- assert !assigns(:results).include?(Issue.find(5))
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => /Bug #1/
+ assert_select 'dt', :text => /Bug #5/, :count => 0
+ end
end
def test_search_my_projects_without_memberships
# anonymous user has no memberships
get :index, :params => {:id => 1, :q => 'recipe subproject', :scope => 'my_projects', :all_words => ''}
assert_response :success
- assert_template 'index'
- assert assigns(:results).empty?
+
+ assert_select '#search-results' do
+ assert_select 'dt', 0
+ end
end
def test_search_project_and_subprojects
get :index, :params => {:id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => ''}
assert_response :success
- assert_template 'index'
- assert assigns(:results).include?(Issue.find(1))
- assert assigns(:results).include?(Issue.find(5))
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => /Bug #1/
+ assert_select 'dt.issue', :text => /Bug #5/
+ end
end
def test_search_without_searchable_custom_fields
- CustomField.update_all "searchable = #{ActiveRecord::Base.connection.quoted_false}"
+ CustomField.update_all :searchable => false
get :index, :params => {:id => 1}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:project)
get :index, :params => {:id => 1, :q => "can"}
assert_response :success
- assert_template 'index'
end
def test_search_with_searchable_custom_fields
get :index, :params => {:id => 1, :q => "stringforcustomfield"}
assert_response :success
- results = assigns(:results)
- assert_not_nil results
- assert_equal 1, results.size
- assert results.include?(Issue.find(7))
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => /#7/
+ assert_select 'dt', 1
+ end
end
def test_search_without_attachments
@@ -186,9 +204,12 @@ class SearchControllerTest < Redmine::ControllerTest
attachment = Attachment.generate! :container => Issue.find(1), :filename => 'search_attachments.patch'
get :index, :params => {:id => 1, :q => 'search_attachments', :attachments => '0'}
- results = assigns(:results)
- assert_equal 1, results.size
- assert_equal issue, results.first
+ assert_response :success
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => /##{issue.id}/
+ assert_select 'dt', 1
+ end
end
def test_search_attachments_only
@@ -196,18 +217,26 @@ class SearchControllerTest < Redmine::ControllerTest
attachment = Attachment.generate! :container => Issue.find(1), :filename => 'search_attachments.patch'
get :index, :params => {:id => 1, :q => 'search_attachments', :attachments => 'only'}
- results = assigns(:results)
- assert_equal 1, results.size
- assert_equal attachment.container, results.first
+ assert_response :success
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => / #1 /
+ assert_select 'dt', 1
+ end
end
def test_search_with_attachments
- Issue.generate! :subject => 'search_attachments'
+ issue = Issue.generate! :subject => 'search_attachments'
Attachment.generate! :container => Issue.find(1), :filename => 'search_attachments.patch'
get :index, :params => {:id => 1, :q => 'search_attachments', :attachments => '1'}
- results = assigns(:results)
- assert_equal 2, results.size
+ assert_response :success
+
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => / #1 /
+ assert_select 'dt.issue', :text => / ##{issue.id} /
+ assert_select 'dt', 2
+ end
end
def test_search_open_issues
@@ -215,78 +244,98 @@ class SearchControllerTest < Redmine::ControllerTest
Issue.generate! :subject => 'search_open', :status_id => 5
get :index, :params => {:id => 1, :q => 'search_open', :open_issues => '1'}
- results = assigns(:results)
- assert_equal 1, results.size
+ assert_response :success
+
+ assert_select '#search-results' do
+ assert_select 'dt', 1
+ end
end
def test_search_all_words
# 'all words' is on by default
get :index, :params => {:id => 1, :q => 'recipe updating saving', :all_words => '1'}
- assert_equal true, assigns(:all_words)
- results = assigns(:results)
- assert_not_nil results
- assert_equal 1, results.size
- assert results.include?(Issue.find(3))
+ assert_response :success
+
+ assert_select 'input[name=all_words][checked=checked]'
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => / #3 /
+ assert_select 'dt', 1
+ end
end
def test_search_one_of_the_words
get :index, :params => {:id => 1, :q => 'recipe updating saving', :all_words => ''}
- assert_equal false, assigns(:all_words)
- results = assigns(:results)
- assert_not_nil results
- assert_equal 3, results.size
- assert results.include?(Issue.find(3))
+ assert_response :success
+
+ assert_select 'input[name=all_words]:not([checked])'
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => / #3 /
+ assert_select 'dt', 3
+ end
end
def test_search_titles_only_without_result
get :index, :params => {:id => 1, :q => 'recipe updating saving', :titles_only => '1'}
- results = assigns(:results)
- assert_not_nil results
- assert_equal 0, results.size
+ assert_response :success
+
+ assert_select 'input[name=titles_only][checked=checked]'
+ assert_select '#search-results' do
+ assert_select 'dt', 0
+ end
end
def test_search_titles_only
get :index, :params => {:id => 1, :q => 'recipe', :titles_only => '1'}
- assert_equal true, assigns(:titles_only)
- results = assigns(:results)
- assert_not_nil results
- assert_equal 2, results.size
+ assert_response :success
+
+ assert_select 'input[name=titles_only][checked=checked]'
+ assert_select '#search-results' do
+ assert_select 'dt', 2
+ end
end
def test_search_content
Issue.where(:id => 1).update_all("description = 'This is a searchkeywordinthecontent'")
get :index, :params => {:id => 1, :q => 'searchkeywordinthecontent', :titles_only => ''}
- assert_equal false, assigns(:titles_only)
- results = assigns(:results)
- assert_not_nil results
- assert_equal 1, results.size
+ assert_response :success
+
+ assert_select 'input[name=titles_only]:not([checked])'
+ assert_select '#search-results' do
+ assert_select 'dt.issue', :text => / #1 /
+ assert_select 'dt', 1
+ end
end
def test_search_with_pagination
- issue = (0..24).map {Issue.generate! :subject => 'search_with_limited_results'}.reverse
+ issues = (0..24).map {Issue.generate! :subject => 'search_with_limited_results'}.reverse
get :index, :params => {:q => 'search_with_limited_results'}
assert_response :success
- assert_equal issue[0..9], assigns(:results)
+ issues[0..9].each do |issue|
+ assert_select '#search-results dt.issue', :text => / ##{issue.id} /
+ end
get :index, :params => {:q => 'search_with_limited_results', :page => 2}
assert_response :success
- assert_equal issue[10..19], assigns(:results)
+ issues[10..19].each do |issue|
+ assert_select '#search-results dt.issue', :text => / ##{issue.id} /
+ end
get :index, :params => {:q => 'search_with_limited_results', :page => 3}
assert_response :success
- assert_equal issue[20..24], assigns(:results)
+ issues[20..24].each do |issue|
+ assert_select '#search-results dt.issue', :text => / ##{issue.id} /
+ end
get :index, :params => {:q => 'search_with_limited_results', :page => 4}
assert_response :success
- assert_equal [], assigns(:results)
+ assert_select '#search-results dt', 0
end
def test_search_with_invalid_project_id
get :index, :params => {:id => 195, :q => 'recipe'}
assert_response 404
- assert_nil assigns(:results)
end
def test_quick_jump_to_issue
@@ -297,18 +346,25 @@ class SearchControllerTest < Redmine::ControllerTest
# issue of a private project
get :index, :params => {:q => "4"}
assert_response :success
- assert_template 'index'
end
def test_large_integer
get :index, :params => {:q => '4615713488'}
assert_response :success
- assert_template 'index'
end
def test_tokens_with_quotes
- get :index, :params => {:id => 1, :q => '"good bye" hello "bye bye"'}
- assert_equal ["good bye", "hello", "bye bye"], assigns(:tokens)
+ issue1 = Issue.generate! :subject => 'say hello'
+ issue2 = Issue.generate! :subject => 'say good bye'
+ issue3 = Issue.generate! :subject => 'say goodbye'
+
+ get :index, :params => {:q => '"good bye" hello "bye bye"', :all_words => ''}
+ assert_response :success
+ assert_select '#search-results' do
+ assert_select 'dt.issue a', :text => / ##{issue1.id} /
+ assert_select 'dt.issue a', :text => / ##{issue2.id} /
+ assert_select 'dt.issue a', :text => / ##{issue3.id} /, :count => 0
+ end
end
def test_results_should_be_escaped_once
diff --git a/test/functional/search_custom_fields_visibility_test.rb b/test/functional/search_custom_fields_visibility_test.rb
index b4910d37f..86539f5af 100644
--- a/test/functional/search_custom_fields_visibility_test.rb
+++ b/test/functional/search_custom_fields_visibility_test.rb
@@ -68,9 +68,9 @@ class SearchCustomFieldsVisibilityTest < Redmine::ControllerTest
assert_response :success
# we should get a result only if the custom field is visible
if fields.include?(field)
- assert_equal 1, assigns(:results).size
+ assert_select '#search-results dt', 1
else
- assert_equal 0, assigns(:results).size
+ assert_select '#search-results dt', 0
end
end
end
diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb
index eeb719b30..9af3ebca7 100644
--- a/test/functional/settings_controller_test.rb
+++ b/test/functional/settings_controller_test.rb
@@ -34,13 +34,13 @@ class SettingsControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'edit'
+
+ assert_select 'input[name=?][value=?]', 'settings[app_title]', Setting.app_title
end
def test_get_edit
get :edit
assert_response :success
- assert_template 'edit'
assert_select 'input[name=?][value=""]', 'settings[enabled_scm][]'
end
@@ -195,7 +195,7 @@ class SettingsControllerTest < Redmine::ControllerTest
get :plugin, :params => {:id => 'foo'}
assert_response :success
- assert_template 'plugin'
+
assert_select 'form[action="/settings/plugin/foo"]' do
assert_select 'input[name=?][value=?]', 'settings[sample_setting]', 'Plugin setting value'
end
diff --git a/test/functional/time_entry_reports_controller_test.rb b/test/functional/time_entry_reports_controller_test.rb
index 499b5553b..fa9f9c861 100644
--- a/test/functional/time_entry_reports_controller_test.rb
+++ b/test/functional/time_entry_reports_controller_test.rb
@@ -37,14 +37,12 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_at_project_level
get :report, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'report'
assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries/report'
end
def test_report_all_projects
get :report
assert_response :success
- assert_template 'report'
assert_select 'form#query_form[action=?]', '/time_entries/report'
end
@@ -60,42 +58,32 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_all_projects_one_criteria
get :report, :params => {:columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "8.65", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '8.65'
end
def test_report_all_time
get :report, :params => {:project_id => 1, :criteria => ['project', 'issue']}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "162.90", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '162.90'
end
def test_report_all_time_by_day
get :report, :params => {:project_id => 1, :criteria => ['project', 'issue'], :columns => 'day'}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "162.90", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '162.90'
assert_select 'th', :text => '2007-03-12'
end
def test_report_one_criteria
get :report, :params => {:project_id => 1, :columns => 'week', :from => "2007-04-01", :to => "2007-04-30", :criteria => ['project']}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "8.65", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '8.65'
end
def test_report_two_criteria
get :report, :params => {:project_id => 1, :columns => 'month', :from => "2007-01-01", :to => "2007-12-31", :criteria => ["user", "activity"]}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "162.90", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '162.90'
end
def test_report_custom_field_criteria_with_multiple_values_on_single_value_custom_field_should_not_fail
@@ -123,9 +111,7 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_one_day
get :report, :params => {:project_id => 1, :columns => 'day', :from => "2007-03-23", :to => "2007-03-23", :criteria => ["user", "activity"]}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "4.25", "%.2f" % assigns(:report).total_hours
+ assert_select 'tr.total td:last', :text => '4.25'
end
def test_report_by_week_should_use_commercial_year
@@ -157,7 +143,6 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_should_propose_association_custom_fields
get :report
assert_response :success
- assert_template 'report'
assert_select 'select[name=?]', 'criteria[]' do
assert_select 'option[value=cf_1]', {:text => 'Database'}, 'Issue custom field not found'
@@ -169,10 +154,8 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_with_association_custom_fields
get :report, :params => {:criteria => ['cf_1', 'cf_3', 'cf_7']}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal 3, assigns(:report).criteria.size
- assert_equal "162.90", "%.2f" % assigns(:report).total_hours
+
+ assert_select 'tr.total td:last', :text => '162.90'
# Custom fields columns
assert_select 'th', :text => 'Database'
@@ -189,15 +172,14 @@ class TimeEntryReportsControllerTest < Redmine::ControllerTest
def test_report_one_criteria_no_result
get :report, :params => {:project_id => 1, :columns => 'week', :from => "1998-04-01", :to => "1998-04-30", :criteria => ['project']}
assert_response :success
- assert_template 'report'
- assert_not_nil assigns(:report)
- assert_equal "0.00", "%.2f" % assigns(:report).total_hours
+
+ assert_select '.nodata'
end
def test_report_status_criterion
get :report, :params => {:project_id => 1, :criteria => ['status']}
assert_response :success
- assert_template 'report'
+
assert_select 'th', :text => 'Status'
assert_select 'td', :text => 'New'
end
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index 6a7219060..15a70404a 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -32,7 +32,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 3
get :new
assert_response :success
- assert_template 'new'
+
assert_select 'input[name=?][type=hidden]', 'project_id', 0
assert_select 'input[name=?][type=hidden]', 'issue_id', 0
assert_select 'select[name=?]', 'time_entry[project_id]' do
@@ -45,7 +45,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 3
get :new, :params => {:project_id => 1}
assert_response :success
- assert_template 'new'
+
assert_select 'input[name=?][type=hidden]', 'project_id'
assert_select 'input[name=?][type=hidden]', 'issue_id', 0
assert_select 'select[name=?]', 'time_entry[project_id]', 0
@@ -55,7 +55,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 3
get :new, :params => {:issue_id => 2}
assert_response :success
- assert_template 'new'
+
assert_select 'input[name=?][type=hidden]', 'project_id', 0
assert_select 'input[name=?][type=hidden]', 'issue_id'
assert_select 'select[name=?]', 'time_entry[project_id]', 0
@@ -65,7 +65,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 3
get :new, :params => {:time_entry => {:project_id => '1'}}
assert_response :success
- assert_template 'new'
+
assert_select 'select[name=?]', 'time_entry[project_id]' do
assert_select 'option[value="1"][selected=selected]'
end
@@ -106,7 +106,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :edit, :params => {:id => 2, :project_id => nil}
assert_response :success
- assert_template 'edit'
+
assert_select 'form[action=?]', '/time_entries/2'
end
@@ -118,7 +118,7 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 1
get :edit, :params => {:project_id => 1, :id => 1}
assert_response :success
- assert_template 'edit'
+
# Blank option since nothing is pre-selected
assert_select 'option', :text => '--- Please select ---'
end
@@ -341,7 +341,7 @@ class TimelogControllerTest < Redmine::ControllerTest
post :create, :params => {:time_entry => {:issue_id => ''}}
assert_response :success
- assert_template 'new'
+ assert_select_error /Project cannot be blank/
end
def test_create_with_failure
@@ -356,7 +356,6 @@ class TimelogControllerTest < Redmine::ControllerTest
}
}
assert_response :success
- assert_template 'new'
end
def test_create_without_project
@@ -393,7 +392,7 @@ class TimelogControllerTest < Redmine::ControllerTest
end
assert_response :success
- assert assigns(:time_entry).errors[:issue_id].present?
+ assert_select_error /Issue is invalid/
end
def test_create_without_project_should_deny_without_permission
@@ -484,8 +483,8 @@ class TimelogControllerTest < Redmine::ControllerTest
:issue_id => '5'
}
}
- assert_response 200
- assert_include "Issue is invalid", assigns(:time_entry).errors.full_messages
+ assert_response :success
+ assert_select_error /Issue is invalid/
end
def test_get_bulk_edit
@@ -493,7 +492,6 @@ class TimelogControllerTest < Redmine::ControllerTest
get :bulk_edit, :params => {:ids => [1, 2]}
assert_response :success
- assert_template 'bulk_edit'
assert_select 'ul#bulk-selection' do
assert_select 'li', 2
@@ -517,7 +515,6 @@ class TimelogControllerTest < Redmine::ControllerTest
get :bulk_edit, :params => {:ids => [1, 2, 6]}
assert_response :success
- assert_template 'bulk_edit'
end
def test_bulk_edit_with_edit_own_time_entries_permission
@@ -664,26 +661,28 @@ class TimelogControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :index
assert_response :success
- assert_template 'index'
+
assert_select 'a[href=?]', '/time_entries/new', :text => /Log time/
end
def test_index_my_spent_time
@request.session[:user_id] = 2
- get :index, :params => {:user_id => 'me'}
+ get :index, :params => {:user_id => 'me', :c => ['user']}
assert_response :success
- assert_template 'index'
- assert assigns(:entries).all? {|entry| entry.user_id == 2}
+
+ users = css_select('table.time-entries tbody td.user').map(&:text).uniq
+ assert_equal ["John Smith"], users
end
def test_index_at_project_level
- get :index, :params => {:project_id => 'ecookbook'}
+ get :index, :params => {:project_id => 'ecookbook', :c => ['project']}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:entries)
- assert_equal 4, assigns(:entries).size
+
+ assert_select 'tr.time-entry', 4
+
# project and subproject
- assert_equal [1, 3], assigns(:entries).collect(&:project_id).uniq.sort
+ projects = css_select('table.time-entries tbody td.project').map(&:text).uniq.sort
+ assert_equal ["eCookbook", "eCookbook Subproject 1"], projects
assert_select '.total-for-hours', :text => 'Hours: 162.90'
assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
@@ -693,10 +692,11 @@ class TimelogControllerTest < Redmine::ControllerTest
entry = TimeEntry.generate!(:project => Project.find(3))
with_settings :display_subprojects_issues => '0' do
- get :index, :params => {:project_id => 'ecookbook'}
+ get :index, :params => {:project_id => 'ecookbook', :c => ['project']}
assert_response :success
- assert_template 'index'
- assert_not_include entry, assigns(:entries)
+
+ projects = css_select('table.time-entries tbody td.project').map(&:text).uniq.sort
+ assert_equal ["eCookbook"], projects
end
end
@@ -704,10 +704,11 @@ class TimelogControllerTest < Redmine::ControllerTest
entry = TimeEntry.generate!(:project => Project.find(3))
with_settings :display_subprojects_issues => '0' do
- get :index, :params => {:project_id => 'ecookbook', :subproject_id => 3}
+ get :index, :params => {:project_id => 'ecookbook', :c => ['project'], :subproject_id => 3}
assert_response :success
- assert_template 'index'
- assert_include entry, assigns(:entries)
+
+ projects = css_select('table.time-entries tbody td.project').map(&:text).uniq.sort
+ assert_equal ["eCookbook", "eCookbook Subproject 1"], projects
end
end
@@ -740,10 +741,8 @@ class TimelogControllerTest < Redmine::ControllerTest
:v => {'spent_on' => ['2007-03-20', '2007-04-30']}
}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:entries)
- assert_equal 3, assigns(:entries).size
+ assert_select 'tr.time-entry', 3
assert_select '.total-for-hours', :text => 'Hours: 12.90'
assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
end
@@ -755,10 +754,8 @@ class TimelogControllerTest < Redmine::ControllerTest
:to => '2007-04-30'
}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:entries)
- assert_equal 3, assigns(:entries).size
+ assert_select 'tr.time-entry', 3
assert_select '.total-for-hours', :text => 'Hours: 12.90'
assert_select 'form#query_form[action=?]', '/projects/ecookbook/time_entries'
end
@@ -787,7 +784,7 @@ class TimelogControllerTest < Redmine::ControllerTest
:v => {'spent_on' => ['2012-06-15', '2012-06-16']}
}
assert_response :success
- assert_equal [t2, t1, t3], assigns(:entries)
+ assert_equal [t2, t1, t3].map(&:id).map(&:to_s), css_select('input[name="ids[]"]').map {|e| e.attr('value')}
get :index, :params => {
:project_id => 1,
@@ -797,7 +794,7 @@ class TimelogControllerTest < Redmine::ControllerTest
:sort => 'spent_on'
}
assert_response :success
- assert_equal [t3, t1, t2], assigns(:entries)
+ assert_equal [t3, t1, t2].map(&:id).map(&:to_s), css_select('input[name="ids[]"]').map {|e| e.attr('value')}
end
def test_index_with_filter_on_issue_custom_field
@@ -810,7 +807,7 @@ class TimelogControllerTest < Redmine::ControllerTest
:v => {'issue.cf_2' => ['filter_on_issue_custom_field']}
}
assert_response :success
- assert_equal [entry], assigns(:entries)
+ assert_equal [entry].map(&:id).map(&:to_s), css_select('input[name="ids[]"]').map {|e| e.attr('value')}
end
def test_index_with_issue_custom_field_column
@@ -821,7 +818,6 @@ class TimelogControllerTest < Redmine::ControllerTest
:c => %w(project spent_on issue comments hours issue.cf_2)
}
assert_response :success
- assert_include :'issue.cf_2', assigns(:query).column_names
assert_select 'td.issue_cf_2', :text => 'filter_on_issue_custom_field'
end
@@ -834,7 +830,6 @@ class TimelogControllerTest < Redmine::ControllerTest
:c => ["hours", field_name]
}
assert_response :success
- assert_include field_name.to_sym, assigns(:query).column_names
assert_select "td.#{field_name}", :text => 'CF Value'
end
@@ -850,13 +845,12 @@ class TimelogControllerTest < Redmine::ControllerTest
:sort => field_name
}
assert_response :success
- assert_include field_name.to_sym, assigns(:query).column_names
assert_select "th a.sort", :text => 'String Field'
# Make sure that values are properly sorted
- values = assigns(:entries).map {|e| e.custom_field_value(field)}.compact
- assert_equal 3, values.size
+ values = css_select("td.#{field_name}").map(&:text).reject(&:blank?)
assert_equal values.sort, values
+ assert_equal 3, values.size
end
def test_index_with_query
@@ -874,8 +868,7 @@ class TimelogControllerTest < Redmine::ControllerTest
get :index, :params => {:project_id => 1, :format => 'atom'}
assert_response :success
assert_equal 'application/atom+xml', @response.content_type
- assert_not_nil assigns(:items)
- assert assigns(:items).first.is_a?(TimeEntry)
+ assert_select 'entry > title', :text => /7\.65 hours/
end
def test_index_at_project_level_should_include_csv_export_dialog
diff --git a/test/functional/timelog_custom_fields_visibility_test.rb b/test/functional/timelog_custom_fields_visibility_test.rb
index 923dd462e..917ae5e71 100644
--- a/test/functional/timelog_custom_fields_visibility_test.rb
+++ b/test/functional/timelog_custom_fields_visibility_test.rb
@@ -122,7 +122,9 @@ class TimelogCustomFieldsVisibilityTest < Redmine::ControllerTest
assert_select 'td', :text => 'ValueB', :count => 0
assert_select 'td', {:text => 'ValueC'}, "ValueC not found in:\n#{response.body}"
- get :index, :params => {:set_filter => '1', "issue.cf_#{@field2.id}" => '*'}
- assert_equal %w(ValueA ValueC), assigns(:entries).map{|i| i.issue.custom_field_value(@field2)}.sort
+ get :index, :params => {:set_filter => '1', "issue.cf_#{@field2.id}" => '*', :c => ["issue.cf_#{@field2.id}"]}
+ assert_select 'td', :text => "ValueA"
+ assert_select 'td', :text => "ValueC"
+ assert_select 'td', :text => "ValueB", :count => 0
end
end
diff --git a/test/functional/trackers_controller_test.rb b/test/functional/trackers_controller_test.rb
index d7342b495..80ee10a69 100644
--- a/test/functional/trackers_controller_test.rb
+++ b/test/functional/trackers_controller_test.rb
@@ -28,7 +28,7 @@ class TrackersControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'index'
+ assert_select 'table.trackers'
end
def test_index_by_anonymous_should_redirect_to_login_form
@@ -46,7 +46,7 @@ class TrackersControllerTest < Redmine::ControllerTest
def test_new
get :new
assert_response :success
- assert_template 'new'
+ assert_select 'input[name=?]', 'tracker[name]'
end
def test_create
@@ -112,7 +112,6 @@ class TrackersControllerTest < Redmine::ControllerTest
}
end
assert_response :success
- assert_template 'new'
assert_select_error /name cannot be blank/i
end
@@ -121,7 +120,6 @@ class TrackersControllerTest < Redmine::ControllerTest
get :edit, :params => {:id => 1}
assert_response :success
- assert_template 'edit'
assert_select 'input[name=?][value="1"][checked=checked]', 'tracker[project_ids][]'
assert_select 'input[name=?][value="2"]:not([checked])', 'tracker[project_ids][]'
@@ -136,7 +134,6 @@ class TrackersControllerTest < Redmine::ControllerTest
get :edit, :params => {:id => 1}
assert_response :success
- assert_template 'edit'
assert_select 'input[name=?][value=assigned_to_id][checked=checked]', 'tracker[core_fields][]'
assert_select 'input[name=?][value=fixed_version_id][checked=checked]', 'tracker[core_fields][]'
@@ -186,7 +183,7 @@ class TrackersControllerTest < Redmine::ControllerTest
def test_update_with_failure
put :update, :params => {:id => 1, :tracker => { :name => '' }}
assert_response :success
- assert_template 'edit'
+
assert_select_error /name cannot be blank/i
end
@@ -216,7 +213,6 @@ class TrackersControllerTest < Redmine::ControllerTest
def test_get_fields
get :fields
assert_response :success
- assert_template 'fields'
assert_select 'form' do
assert_select 'input[type=checkbox][name=?][value=assigned_to_id]', 'trackers[1][core_fields][]'
diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
index c5bfb6dc4..78a8b6c39 100644
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -35,37 +35,30 @@ class UsersControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:users)
- # active users only
- assert_nil assigns(:users).detect {|u| !u.active?}
+ assert_select 'table.users'
+ assert_select 'tr.user.active'
+ assert_select 'tr.user.locked', 0
end
def test_index_with_status_filter
get :index, :params => {:status => 3}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:users)
- assert_equal [3], assigns(:users).map(&:status).uniq
+ assert_select 'tr.user.active', 0
+ assert_select 'tr.user.locked'
end
def test_index_with_name_filter
get :index, :params => {:name => 'john'}
assert_response :success
- assert_template 'index'
- users = assigns(:users)
- assert_not_nil users
- assert_equal 1, users.size
- assert_equal 'John', users.first.firstname
+ assert_select 'tr.user td.username', :text => 'jsmith'
+ assert_select 'tr.user', 1
end
def test_index_with_group_filter
get :index, :params => {:group_id => '10'}
assert_response :success
- assert_template 'index'
- users = assigns(:users)
- assert users.any?
- assert_equal([], (users - Group.find(10).users))
+
+ assert_select 'tr.user', Group.find(10).users.count
assert_select 'select[name=group_id]' do
assert_select 'option[value="10"][selected=selected]'
end
@@ -75,8 +68,14 @@ class UsersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = nil
get :show, :params => {:id => 2}
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:user)
+ assert_select 'h2', :text => /John Smith/
+ end
+
+ def test_show_should_display_visible_custom_fields
+ @request.session[:user_id] = nil
+ UserCustomField.find_by_name('Phone number').update_attribute :visible, true
+ get :show, :params => {:id => 2}
+ assert_response :success
assert_select 'li', :text => /Phone number/
end
@@ -86,8 +85,6 @@ class UsersControllerTest < Redmine::ControllerTest
UserCustomField.find_by_name('Phone number').update_attribute :visible, false
get :show, :params => {:id => 2}
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:user)
assert_select 'li', :text => /Phone number/, :count => 0
end
@@ -113,7 +110,7 @@ class UsersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 1
get :show, :params => {:id => 5}
assert_response 200
- assert_not_nil assigns(:user)
+ assert_select 'h2', :text => /Dave2 Lopper2/
end
def test_show_user_who_is_not_visible_should_return_404
@@ -129,10 +126,9 @@ class UsersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 1
get :show, :params => {:id => 2}
assert_response :success
- memberships = assigns(:memberships)
- assert_not_nil memberships
- project_ids = memberships.map(&:project_id)
- assert project_ids.include?(2) #private project admin can see
+
+ # membership of private project admin can see
+ assert_select 'li a', :text => "OnlineStore"
end
def test_show_current_should_require_authentication
@@ -145,15 +141,13 @@ class UsersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:id => 'current'}
assert_response :success
- assert_template 'show'
- assert_equal User.find(2), assigns(:user)
+ assert_select 'h2', :text => /John Smith/
end
def test_new
get :new
assert_response :success
- assert_template :new
- assert assigns(:user)
+ assert_select 'input[name=?]', 'user[login]'
end
def test_create
@@ -266,7 +260,7 @@ class UsersControllerTest < Redmine::ControllerTest
post :create, :params => {:user => {}}
end
assert_response :success
- assert_template 'new'
+ assert_select_error /Email cannot be blank/
end
def test_create_with_failure_sould_preserve_preference
@@ -283,7 +277,6 @@ class UsersControllerTest < Redmine::ControllerTest
}
end
assert_response :success
- assert_template 'new'
assert_select 'select#pref_time_zone option[selected=selected]', :text => /Paris/
assert_select 'input#pref_no_self_notified[value="1"][checked=checked]'
@@ -336,8 +329,7 @@ class UsersControllerTest < Redmine::ControllerTest
def test_edit
get :edit, :params => {:id => 2}
assert_response :success
- assert_template 'edit'
- assert_equal User.find(2), assigns(:user)
+ assert_select 'input[name=?][value=?]', 'user[login]', 'jsmith'
end
def test_edit_registered_user
@@ -371,7 +363,7 @@ class UsersControllerTest < Redmine::ControllerTest
}
end
assert_response :success
- assert_template 'edit'
+ assert_select_error /First name cannot be blank/
end
def test_update_with_group_ids_should_assign_groups
@@ -476,7 +468,6 @@ class UsersControllerTest < Redmine::ControllerTest
def test_update_notified_project
get :edit, :params => {:id => 2}
assert_response :success
- assert_template 'edit'
u = User.find(2)
assert_equal [1, 2, 5], u.projects.collect{|p| p.id}.sort
assert_equal [1, 2, 5], u.notified_projects_ids.sort
diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb
index 6657aebb6..48cf6e641 100644
--- a/test/functional/versions_controller_test.rb
+++ b/test/functional/versions_controller_test.rb
@@ -29,12 +29,12 @@ class VersionsControllerTest < Redmine::ControllerTest
def test_index
get :index, :params => {:project_id => 1}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:versions)
+
# Version with no date set appears
- assert assigns(:versions).include?(Version.find(3))
+ assert_select 'h3', :text => Version.find(3).name
# Completed version doesn't appear
- assert !assigns(:versions).include?(Version.find(1))
+ assert_select 'h3', :text => Version.find(1).name, :count => 0
+
# Context menu on issues
assert_select "script", :text => Regexp.new(Regexp.escape("contextMenuInit('/issues/context_menu')"))
assert_select "div#sidebar" do
@@ -48,31 +48,33 @@ class VersionsControllerTest < Redmine::ControllerTest
def test_index_with_completed_versions
get :index, :params => {:project_id => 1, :completed => 1}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:versions)
+
# Version with no date set appears
- assert assigns(:versions).include?(Version.find(3))
+ assert_select 'h3', :text => Version.find(3).name
# Completed version appears
- assert assigns(:versions).include?(Version.find(1))
+ assert_select 'h3', :text => Version.find(1).name
end
def test_index_with_tracker_ids
+ (1..3).each do |tracker_id|
+ Issue.generate! :project_id => 1, :fixed_version_id => 3, :tracker_id => tracker_id
+ end
get :index, :params => {:project_id => 1, :tracker_ids => [1, 3]}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:issues_by_version)
- assert_nil assigns(:issues_by_version).values.flatten.detect {|issue| issue.tracker_id == 2}
+ assert_select 'a.issue.tracker-1'
+ assert_select 'a.issue.tracker-2', 0
+ assert_select 'a.issue.tracker-3'
end
def test_index_showing_subprojects_versions
@subproject_version = Version.create!(:project => Project.find(3), :name => "Subproject version")
get :index, :params => {:project_id => 1, :with_subprojects => 1}
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:versions)
- assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
- assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
+ # Shared version
+ assert_select 'h3', :text => Version.find(4).name
+ # Subproject version
+ assert_select 'h3', :text => /Subproject version/
end
def test_index_should_prepend_shared_versions
@@ -92,8 +94,6 @@ class VersionsControllerTest < Redmine::ControllerTest
def test_show
get :show, :params => {:id => 2}
assert_response :success
- assert_template 'show'
- assert_not_nil assigns(:version)
assert_select 'h2', :text => /1.0/
end
@@ -127,14 +127,13 @@ class VersionsControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :new, :params => {:project_id => '1'}
assert_response :success
- assert_template 'new'
+ assert_select 'input[name=?]', 'version[name]'
end
def test_new_from_issue_form
@request.session[:user_id] = 2
xhr :get, :new, :params => {:project_id => '1'}
assert_response :success
- assert_template 'new'
assert_equal 'text/javascript', response.content_type
end
@@ -159,7 +158,6 @@ class VersionsControllerTest < Redmine::ControllerTest
assert_equal 1, version.project_id
assert_response :success
- assert_template 'create'
assert_equal 'text/javascript', response.content_type
assert_include 'test_add_version_from_issue_form', response.body
end
@@ -170,7 +168,6 @@ class VersionsControllerTest < Redmine::ControllerTest
xhr :post, :create, :params => {:project_id => '1', :version => {:name => ''}}
end
assert_response :success
- assert_template 'new'
assert_equal 'text/javascript', response.content_type
end
@@ -178,7 +175,7 @@ class VersionsControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :edit, :params => {:id => 2}
assert_response :success
- assert_template 'edit'
+ assert_select 'input[name=?][value=?]', 'version[name]', Version.find(2).name
end
def test_close_completed
@@ -216,7 +213,7 @@ class VersionsControllerTest < Redmine::ControllerTest
}
}
assert_response :success
- assert_template 'edit'
+ assert_select_error /Name cannot be blank/
end
def test_destroy
@@ -243,15 +240,11 @@ class VersionsControllerTest < Redmine::ControllerTest
def test_issue_status_by
xhr :get, :status_by, :params => {:id => 2}
assert_response :success
- assert_template 'status_by'
- assert_template '_issue_counts'
end
def test_issue_status_by_status
xhr :get, :status_by, :params => {:id => 2, :status_by => 'status'}
assert_response :success
- assert_template 'status_by'
- assert_template '_issue_counts'
assert_include 'Assigned', response.body
assert_include 'Closed', response.body
end
diff --git a/test/functional/watchers_controller_test.rb b/test/functional/watchers_controller_test.rb
index 1b7b7bbeb..422fc6cda 100644
--- a/test/functional/watchers_controller_test.rb
+++ b/test/functional/watchers_controller_test.rb
@@ -144,7 +144,6 @@ class WatchersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
xhr :get, :new, :params => {:project_id => 1}
assert_response :success
- assert_equal Project.find(1), assigns(:project)
assert_match /ajax-modal/, response.body
end
@@ -152,7 +151,6 @@ class WatchersControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
xhr :get, :new, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_equal Project.find(1), assigns(:project)
assert_match /ajax-modal/, response.body
end
@@ -266,16 +264,16 @@ class WatchersControllerTest < Redmine::ControllerTest
def test_autocomplete_for_user_should_return_visible_users
Role.update_all :users_visibility => 'members_of_visible_projects'
- hidden = User.generate!(:lastname => 'autocomplete')
- visible = User.generate!(:lastname => 'autocomplete')
+ hidden = User.generate!(:lastname => 'autocomplete_hidden')
+ visible = User.generate!(:lastname => 'autocomplete_visible')
User.add_to_project(visible, Project.find(1))
@request.session[:user_id] = 2
xhr :get, :autocomplete_for_user, :params => {:q => 'autocomp', :project_id => 'ecookbook'}
assert_response :success
- assert_include visible, assigns(:users)
- assert_not_include hidden, assigns(:users)
+ assert_include visible.name, response.body
+ assert_not_include hidden.name, response.body
end
def test_append
diff --git a/test/functional/welcome_controller_test.rb b/test/functional/welcome_controller_test.rb
index e75d8a4af..88b160bc9 100644
--- a/test/functional/welcome_controller_test.rb
+++ b/test/functional/welcome_controller_test.rb
@@ -28,33 +28,32 @@ class WelcomeControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'index'
- assert_not_nil assigns(:news)
+ assert_select 'h3', :text => 'Latest news'
end
def test_browser_language
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
get :index
- assert_equal :fr, @controller.current_language
+ assert_select 'html[lang=fr]'
end
def test_browser_language_alternate
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'zh-TW'
get :index
- assert_equal :"zh-TW", @controller.current_language
+ assert_select 'html[lang=zh-TW]'
end
def test_browser_language_alternate_not_valid
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr-CA'
get :index
- assert_equal :fr, @controller.current_language
+ assert_select 'html[lang=fr]'
end
def test_browser_language_should_be_ignored_with_force_default_language_for_anonymous
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
with_settings :force_default_language_for_anonymous => '1' do
get :index
- assert_equal :en, @controller.current_language
+ assert_select 'html[lang=en]'
end
end
@@ -64,7 +63,7 @@ class WelcomeControllerTest < Redmine::ControllerTest
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
with_settings :default_language => 'fi' do
get :index
- assert_equal :it, @controller.current_language
+ assert_select 'html[lang=it]'
end
end
@@ -74,7 +73,7 @@ class WelcomeControllerTest < Redmine::ControllerTest
@request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3'
with_settings :force_default_language_for_loggedin => '1', :default_language => 'fi' do
get :index
- assert_equal :fi, @controller.current_language
+ assert_select 'html[lang=fi]'
end
end
diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb
index 0cb395e25..ea200b60d 100644
--- a/test/functional/wiki_controller_test.rb
+++ b/test/functional/wiki_controller_test.rb
@@ -30,9 +30,8 @@ class WikiControllerTest < Redmine::ControllerTest
def test_show_start_page
get :show, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'show'
- assert_select 'h1', :text => /CookBook documentation/
+ assert_select 'h1', :text => /CookBook documentation/
# child_pages macro
assert_select 'ul.pages-hierarchy>li>a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image',
:text => 'Page with an inline image'
@@ -48,7 +47,7 @@ class WikiControllerTest < Redmine::ControllerTest
def test_show_page_with_name
get :show, :params => {:project_id => 1, :id => 'Another_page'}
assert_response :success
- assert_template 'show'
+
assert_select 'h1', :text => /Another page/
# Included page with an inline image
assert_select 'p', :text => /This is an inline image/
@@ -60,7 +59,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => '2'}
end
assert_response :success
- assert_template 'show'
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/1', :text => /Previous/
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/2/diff', :text => /diff/
@@ -76,9 +74,8 @@ class WikiControllerTest < Redmine::ControllerTest
content.save!
get :show, :params => {:project_id => 'ecookbook', :id => page.title, :version => '1'}
- assert_kind_of WikiContent::Version, assigns(:content)
assert_response :success
- assert_template 'show'
+ assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', :text => /Current version/
end
def test_show_old_version_without_permission_should_be_denied
@@ -93,7 +90,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => '1'}
end
assert_response :success
- assert_template 'show'
assert_select 'a', :text => /Previous/, :count => 0
assert_select 'a', :text => /diff/, :count => 0
@@ -150,7 +146,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :id => 'Unexistent page'}
assert_response :success
- assert_template 'edit'
+ assert_select 'textarea[name=?]', 'content[text]'
end
def test_show_specific_version_of_an_unexistent_page_without_edit_right
@@ -162,7 +158,6 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :id => 'Unexistent page', :parent => 'Another_page'}
assert_response :success
- assert_template 'edit'
assert_select 'select[name=?] option[value="2"][selected=selected]', 'wiki_page[parent_id]'
end
@@ -179,7 +174,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :show, :params => {:project_id => 1, :id => 'NoContent'}
assert_response :success
- assert_template 'edit'
assert_select 'textarea[name=?]', 'content[text]'
end
@@ -188,7 +182,7 @@ class WikiControllerTest < Redmine::ControllerTest
get :new, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'new'
+ assert_select 'input[name=?]', 'title'
end
def test_get_new_xhr
@@ -196,7 +190,7 @@ class WikiControllerTest < Redmine::ControllerTest
xhr :get, :new, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'new'
+ assert_include 'Unallowed characters', response.body
end
def test_post_new_with_valid_title_should_redirect_to_edit
@@ -219,7 +213,6 @@ class WikiControllerTest < Redmine::ControllerTest
post :new, :params => {:project_id => 'ecookbook', :title => 'Another page'}
assert_response :success
- assert_template 'new'
assert_select_error 'Title has already been taken'
end
@@ -228,7 +221,6 @@ class WikiControllerTest < Redmine::ControllerTest
xhr :post, :new, :params => {:project_id => 'ecookbook', :title => 'Another page'}
assert_response :success
- assert_template 'new'
assert_include 'Title has already been taken', response.body
end
@@ -298,7 +290,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :edit, :params => {:project_id => 'ecookbook', :id => 'Another_page'}
assert_response :success
- assert_template 'edit'
assert_select 'textarea[name=?]', 'content[text]',
:text => WikiPage.find_by_title('Another_page').content.text
@@ -309,7 +300,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :edit, :params => {:project_id => 'ecookbook', :id => 'Page_with_sections', :section => 2}
assert_response :success
- assert_template 'edit'
page = WikiPage.find_by_title('Page_with_sections')
section, hash = Redmine::WikiFormatting::Textile::Formatter.new(page.content.text).get_section(2)
@@ -398,7 +388,6 @@ class WikiControllerTest < Redmine::ControllerTest
end
end
assert_response :success
- assert_template 'edit'
assert_select_error /Comment is too long/
assert_select 'textarea#content_text', :text => "edited"
@@ -475,7 +464,6 @@ class WikiControllerTest < Redmine::ControllerTest
end
end
assert_response :success
- assert_template 'edit'
assert_select 'div.error', :text => /Data has been updated by another user/
assert_select 'textarea[name=?]', 'content[text]', :text => /Text should not be lost/
assert_select 'input[name=?][value=?]', 'content[comments]', 'My comments'
@@ -577,7 +565,6 @@ class WikiControllerTest < Redmine::ControllerTest
end
end
assert_response :success
- assert_template 'edit'
assert_select 'div.error', :text => /Data has been updated by another user/
assert_select 'textarea[name=?]', 'content[text]', :text => /Text should not be lost/
assert_select 'input[name=?][value=?]', 'content[comments]', 'My comments'
@@ -595,7 +582,6 @@ class WikiControllerTest < Redmine::ControllerTest
}
}
assert_response :success
- assert_template 'common/_preview'
assert_select 'strong', :text => /previewed text/
end
@@ -611,7 +597,6 @@ class WikiControllerTest < Redmine::ControllerTest
}
}
assert_response :success
- assert_template 'common/_preview'
assert_select 'h1', :text => /New page/
end
@@ -619,9 +604,10 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :history, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation'}
assert_response :success
- assert_template 'history'
- assert_not_nil assigns(:versions)
- assert_equal 3, assigns(:versions).size
+
+ assert_select 'table.wiki-page-versions tbody' do
+ assert_select 'tr', 3
+ end
assert_select "input[type=submit][name=commit]"
assert_select 'td' do
@@ -635,9 +621,11 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :history, :params => {:project_id => 'ecookbook', :id => 'Another_page'}
assert_response :success
- assert_template 'history'
- assert_not_nil assigns(:versions)
- assert_equal 1, assigns(:versions).size
+
+ assert_select 'table.wiki-page-versions tbody' do
+ assert_select 'tr', 1
+ end
+
assert_select "input[type=submit][name=commit]", false
assert_select 'td' do
assert_select 'a[href=?]', '/projects/ecookbook/wiki/Another_page/1', :text => '1'
@@ -661,7 +649,6 @@ class WikiControllerTest < Redmine::ControllerTest
:version_from => (content.version - 1)
}
assert_response :success
- assert_template 'diff'
assert_select 'span.diff_out', :text => 'Line removed'
assert_select 'span.diff_in', :text => 'Line added'
end
@@ -689,13 +676,19 @@ class WikiControllerTest < Redmine::ControllerTest
:version => 2
}
assert_response :success
- assert_template 'annotate'
# Line 1
assert_select 'table.annotate tr:nth-child(1)' do
assert_select 'th.line-num', :text => '1'
+ assert_select 'td.author', :text => /Redmine Admin/
+ assert_select 'td', :text => /h1\. CookBook documentation v2/
+ end
+
+ # Line 4
+ assert_select 'table.annotate tr:nth-child(4)' do
+ assert_select 'th.line-num', :text => '4'
assert_select 'td.author', :text => /John Smith/
- assert_select 'td', :text => /h1\. CookBook documentation/
+ assert_select 'td', :text => /Line from v1/
end
# Line 5
@@ -718,7 +711,6 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :rename, :params => {:project_id => 1, :id => 'Another_page'}
assert_response :success
- assert_template 'rename'
assert_select 'select[name=?]', 'wiki_page[parent_id]' do
assert_select 'option[value=""]', :text => ''
@@ -730,7 +722,6 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :rename, :params => {:project_id => 1, :id => 'Child_1'}
assert_response :success
- assert_template 'rename'
assert_select 'select[name=?]', 'wiki_page[parent_id]' do
assert_select 'option[value=""]', :text => ''
@@ -808,7 +799,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :rename, :params => {:project_id => 1, :id => 'Another_page'}
assert_response :success
- assert_template 'rename'
assert_select 'select[name=?]', 'wiki_page[wiki_id]' do
assert_select 'option', 2
@@ -849,7 +839,6 @@ class WikiControllerTest < Redmine::ControllerTest
delete :destroy, :params => {:project_id => 1, :id => 'Another_page'}
end
assert_response :success
- assert_template 'destroy'
assert_select 'form' do
assert_select 'input[name=todo][value=nullify]'
assert_select 'input[name=todo][value=destroy]'
@@ -913,11 +902,10 @@ class WikiControllerTest < Redmine::ControllerTest
def test_index
get :index, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'index'
- pages = assigns(:pages)
- assert_not_nil pages
- assert_equal Project.find(1).wiki.pages.size, pages.size
- assert_equal pages.first.content.updated_on, pages.first.updated_on
+
+ assert_select 'ul.pages-hierarchy' do
+ assert_select 'li', Project.find(1).wiki.pages.count
+ end
assert_select 'ul.pages-hierarchy' do
assert_select 'li' do
@@ -938,8 +926,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :export, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_not_nil assigns(:pages)
- assert assigns(:pages).any?
assert_equal "text/html", @response.content_type
assert_select "a[name=?]", "CookBook_documentation"
@@ -952,8 +938,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :export, :params => {:project_id => 'ecookbook', :format => 'pdf'}
assert_response :success
- assert_not_nil assigns(:pages)
- assert assigns(:pages).any?
assert_equal 'application/pdf', @response.content_type
assert_equal 'attachment; filename="ecookbook.pdf"', @response.headers['Content-Disposition']
assert @response.body.starts_with?('%PDF')
@@ -971,9 +955,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :date_index, :params => {:project_id => 'ecookbook'}
assert_response :success
- assert_template 'date_index'
- assert_not_nil assigns(:pages)
- assert_not_nil assigns(:pages_by_date)
assert_select 'a[href=?]', '/projects/ecookbook/activity.atom?show_wiki_edits=1'
end
@@ -1005,7 +986,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1}
assert_response :success
- assert_template 'show'
+
assert_select 'a[href=?]', '/projects/1/wiki/CookBook_documentation/edit'
end
@@ -1013,7 +994,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 4
get :show, :params => {:project_id => 1}
assert_response :success
- assert_template 'show'
+
assert_select 'a[href=?]', '/projects/1/wiki/CookBook_documentation/edit', 0
end
@@ -1021,7 +1002,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :format => 'pdf'}
assert_response :success
- assert_not_nil assigns(:page)
+
assert_equal 'application/pdf', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.pdf"',
@response.headers['Content-Disposition']
@@ -1031,7 +1012,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :format => 'html'}
assert_response :success
- assert_not_nil assigns(:page)
+
assert_equal 'text/html', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.html"',
@response.headers['Content-Disposition']
@@ -1042,19 +1023,18 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :format => 'html', :version => 2}
assert_response :success
- assert_not_nil assigns(:content)
- assert_equal 2, assigns(:content).version
+
assert_equal 'text/html', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.html"',
@response.headers['Content-Disposition']
- assert_select 'h1', :text => /CookBook documentation/
+ assert_select 'h1', :text => /CookBook documentation v2/
end
def test_show_txt
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :format => 'txt'}
assert_response :success
- assert_not_nil assigns(:page)
+
assert_equal 'text/plain', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.txt"',
@response.headers['Content-Disposition']
@@ -1065,12 +1045,11 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :format => 'txt', :version => 2}
assert_response :success
- assert_not_nil assigns(:content)
- assert_equal 2, assigns(:content).version
+
assert_equal 'text/plain', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.txt"',
@response.headers['Content-Disposition']
- assert_include 'h1. CookBook documentation', @response.body
+ assert_include 'h1. CookBook documentation v2', @response.body
end
def test_edit_unprotected_page
@@ -1078,7 +1057,6 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 4
get :edit, :params => {:project_id => 1, :id => 'Another_page'}
assert_response :success
- assert_template 'edit'
end
def test_edit_protected_page_by_nonmember
@@ -1092,7 +1070,6 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
get :edit, :params => {:project_id => 1, :id => 'CookBook_documentation'}
assert_response :success
- assert_template 'edit'
end
def test_history_of_non_existing_page_should_return_404
diff --git a/test/functional/wikis_controller_test.rb b/test/functional/wikis_controller_test.rb
index c4fffba48..7a37ca265 100644
--- a/test/functional/wikis_controller_test.rb
+++ b/test/functional/wikis_controller_test.rb
@@ -31,7 +31,6 @@ class WikisControllerTest < Redmine::ControllerTest
assert_difference 'Wiki.count' do
xhr :post, :edit, :params => {:id => 3, :wiki => { :start_page => 'Start page' }}
assert_response :success
- assert_template 'edit'
assert_equal 'text/javascript', response.content_type
end
@@ -46,7 +45,6 @@ class WikisControllerTest < Redmine::ControllerTest
assert_no_difference 'Wiki.count' do
xhr :post, :edit, :params => {:id => 3, :wiki => { :start_page => '' }}
assert_response :success
- assert_template 'edit'
assert_equal 'text/javascript', response.content_type
end
@@ -60,7 +58,6 @@ class WikisControllerTest < Redmine::ControllerTest
assert_no_difference 'Wiki.count' do
xhr :post, :edit, :params => {:id => 1, :wiki => { :start_page => 'Other start page' }}
assert_response :success
- assert_template 'edit'
assert_equal 'text/javascript', response.content_type
end
diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb
index 8bacc7b84..d70a79896 100644
--- a/test/functional/workflows_controller_test.rb
+++ b/test/functional/workflows_controller_test.rb
@@ -28,7 +28,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
def test_index
get :index
assert_response :success
- assert_template 'index'
count = WorkflowTransition.where(:role_id => 1, :tracker_id => 2).count
assert_select 'a[href=?]', '/workflows/edit?role_id=1&tracker_id=2', :content => count.to_s
@@ -37,7 +36,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
def test_get_edit
get :edit
assert_response :success
- assert_template 'edit'
end
def test_get_edit_with_role_and_tracker
@@ -47,12 +45,12 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :edit, :params => {:role_id => 2, :tracker_id => 1}
assert_response :success
- assert_template 'edit'
# used status only
- assert_not_nil assigns(:statuses)
- assert_equal [2, 3, 5], assigns(:statuses).collect(&:id)
-
+ statuses = IssueStatus.where(:id => [2, 3, 5]).sorted.pluck(:name)
+ assert_equal ["New issue"] + statuses,
+ css_select('table.workflows.transitions-always tbody tr td:first').map(&:text).map(&:strip)
+
# allowed transitions
assert_select 'input[type=checkbox][name=?][value="1"][checked=checked]', 'transitions[3][5][always]'
# not allowed
@@ -74,8 +72,13 @@ class WorkflowsControllerTest < Redmine::ControllerTest
def test_get_edit_with_all_roles_and_all_trackers
get :edit, :params => {:role_id => 'all', :tracker_id => 'all'}
assert_response :success
- assert_equal Role.sorted.to_a, assigns(:roles)
- assert_equal Tracker.sorted.to_a, assigns(:trackers)
+
+ assert_select 'select[name=?][multiple=multiple]', 'role_id[]' do
+ assert_select 'option[selected=selected]', Role.all.select(&:consider_workflow?).count
+ end
+ assert_select 'select[name=?]', 'tracker_id[]' do
+ assert_select 'option[selected=selected][value=all]'
+ end
end
def test_get_edit_with_role_and_tracker_and_all_statuses
@@ -83,10 +86,10 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :edit, :params => {:role_id => 2, :tracker_id => 1, :used_statuses_only => '0'}
assert_response :success
- assert_template 'edit'
- assert_not_nil assigns(:statuses)
- assert_equal IssueStatus.count, assigns(:statuses).size
+ statuses = IssueStatus.all.sorted.pluck(:name)
+ assert_equal ["New issue"] + statuses,
+ css_select('table.workflows.transitions-always tbody tr td:first').map(&:text).map(&:strip)
assert_select 'input[type=checkbox][name=?]', 'transitions[1][1][always]'
end
@@ -161,7 +164,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :permissions
assert_response :success
- assert_template 'permissions'
end
def test_get_permissions_with_role_and_tracker
@@ -172,7 +174,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :permissions, :params => {:role_id => 1, :tracker_id => 2}
assert_response :success
- assert_template 'permissions'
assert_select 'input[name=?][value="1"]', 'role_id[]'
assert_select 'input[name=?][value="2"]', 'tracker_id[]'
@@ -213,7 +214,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :permissions, :params => {:role_id => 1, :tracker_id => 1}
assert_response :success
- assert_template 'permissions'
# Custom field that is always required
# The default option is "(Required)"
@@ -231,7 +231,6 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :permissions, :params => {:role_id => 2, :tracker_id => 1}
assert_response :success
- assert_template 'permissions'
assert_select 'select[name=?]:not(.disabled)', "permissions[1][#{cf1.id}]"
assert_select 'select[name=?]:not(.disabled)', "permissions[1][#{cf3.id}]"
@@ -287,7 +286,10 @@ class WorkflowsControllerTest < Redmine::ControllerTest
get :permissions, :params => {:role_id => 1, :tracker_id => 2, :used_statuses_only => '0'}
assert_response :success
- assert_equal IssueStatus.sorted.to_a, assigns(:statuses)
+
+ statuses = IssueStatus.all.sorted.pluck(:name)
+ assert_equal statuses,
+ css_select('table.workflows.fields_permissions thead tr:nth-child(2) td:not(:first-child)').map(&:text).map(&:strip)
end
def test_get_permissions_should_set_css_class
@@ -330,7 +332,7 @@ class WorkflowsControllerTest < Redmine::ControllerTest
def test_get_copy
get :copy
assert_response :success
- assert_template 'copy'
+
assert_select 'select[name=source_tracker_id]' do
assert_select 'option[value="1"]', :text => 'Bug'
end