diff --git a/test/crud_controller_base.rb b/test/crud_controller_base.rb index 4073833b..cfb02243 100644 --- a/test/crud_controller_base.rb +++ b/test/crud_controller_base.rb @@ -30,6 +30,7 @@ module CrudControllerBase return unless prepare_crud_test :show, no_permission: true get :show, params: @crud[:show_params].presence || { id: @crud[:entity].id } + assert_response :forbidden end @@ -78,6 +79,7 @@ module CrudControllerBase end get :new, params: @crud[:new_params].presence || {} + assert_response :success end @@ -85,6 +87,7 @@ module CrudControllerBase return unless prepare_crud_test :new, no_permission: true get :new, params: @crud[:new_params].presence || {} + assert_response :forbidden end diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index 4e233a5f..07fafbe3 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -20,6 +20,7 @@ class AccountControllerTest < Additionals::ControllerTest change_plugin_settings 'additionals', account_login_bottom: 'Lore impsuum' get :login + assert_response :success assert_select 'input[name=username]' assert_select 'input[name=password]' @@ -30,6 +31,7 @@ class AccountControllerTest < Additionals::ControllerTest change_plugin_settings 'additionals', account_login_bottom: '' get :login + assert_response :success assert_select 'input[name=username]' assert_select 'input[name=password]' @@ -47,9 +49,11 @@ class AccountControllerTest < Additionals::ControllerTest firstname: 'John', lastname: 'Doe', mail: 'register@example.com' } } + assert_redirected_to '/my/account' end user = User.last + assert_equal 'register', user.login assert_equal 'John', user.firstname assert_equal 'Doe', user.lastname diff --git a/test/functional/admin_controller_test.rb b/test/functional/admin_controller_test.rb index 389392d0..7ed8777a 100644 --- a/test/functional/admin_controller_test.rb +++ b/test/functional/admin_controller_test.rb @@ -12,6 +12,7 @@ class AdminControllerTest < Additionals::ControllerTest def test_info get :info + assert_response :success assert_select 'table.list tr.system_info' end diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb index bc285de8..971e7b7b 100644 --- a/test/functional/auto_completes_controller_test.rb +++ b/test/functional/auto_completes_controller_test.rb @@ -19,8 +19,10 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json icon = json.first + assert_kind_of Hash, icon assert_equal 'far_address-book', icon['id'] assert_equal 'Address Book', icon['text'] @@ -32,9 +34,11 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 5, json.count icon = json.first + assert_kind_of Hash, icon assert_equal 'fas_cloud-sun', icon['id'] assert_equal 'Cloud with Sun', icon['text'] @@ -46,6 +50,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 0, json.count end @@ -56,6 +61,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 2, json.count @@ -70,6 +76,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 3, json.count @@ -85,6 +92,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 2, json.count @@ -100,6 +108,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 3, json.count @@ -115,6 +124,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 1, json.count @@ -128,6 +138,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 2, json.count @@ -142,6 +153,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 2, json.count @@ -156,6 +168,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 1, json.count @@ -169,6 +182,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 1, json.count @@ -183,13 +197,16 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 1, json.count children = json.first['children'] + assert_equal 1, children.count entry = children.first + assert_equal 2, entry['id'] assert_equal 'John Smith', entry['text'] assert_equal 'John Smith', entry['name'] @@ -203,6 +220,7 @@ class AutoCompletesControllerTest < Additionals::ControllerTest assert_response :success json = ActiveSupport::JSON.decode response.body + assert_kind_of Array, json assert_equal 1, json.count diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 74ee290a..4645b35c 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -92,6 +92,7 @@ class IssuesControllerTest < Additionals::ControllerTest @request.session[:user_id] = 2 get :show, params: { id: 2 } + assert_select 'a.assign-to-me', count: 0 end end @@ -101,6 +102,7 @@ class IssuesControllerTest < Additionals::ControllerTest @request.session[:user_id] = 2 get :show, params: { id: 4 } + assert_select 'a.assign-to-me', count: 0 end end @@ -110,6 +112,7 @@ class IssuesControllerTest < Additionals::ControllerTest @request.session[:user_id] = 2 get :show, params: { id: 2 } + assert_select 'ul.issue-status-change-sidebar' end end @@ -119,6 +122,7 @@ class IssuesControllerTest < Additionals::ControllerTest @request.session[:user_id] = 2 get :show, params: { id: 2 } + assert_select 'ul.issue-status-change-sidebar', count: 0 end end @@ -178,6 +182,7 @@ class IssuesControllerTest < Additionals::ControllerTest with_plugin_settings 'additionals', new_ticket_message: 'blub' do @request.session[:user_id] = 2 get :new, params: { project_id: 1 } + assert_select '.new-ticket-message' end end @@ -190,6 +195,7 @@ class IssuesControllerTest < Additionals::ControllerTest with_plugin_settings 'additionals', new_ticket_message: 'blub' do @request.session[:user_id] = 2 get :new, params: { project_id: 1 } + assert_select '.new-ticket-message', count: 0 end end diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index 77591bfe..3197a43c 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -42,6 +42,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe[src=?]', '//www.youtube-nocookie.com/embed/KMU0tzLwhbE' end @@ -52,6 +53,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe', src: %r{^https://www\.meteoblue\.com/en/weather/widget/daily/(.*)} end @@ -62,6 +64,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe[src=?]', '//player.vimeo.com/video/142849533' end @@ -72,6 +75,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe[src=?]', '//www.slideshare.net/slideshow/embed_code/57941706' end @@ -82,6 +86,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe[src=?]', 'https://docs.google.com/spreadsheets/d/e/RANDOMCODE/pubhtml?widget=true&headers=false' end @@ -92,6 +97,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'iframe[src=?]', 'https://www.redmine.org/' end @@ -102,6 +108,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a.twitter' assert_select 'a[href=?]', 'https://twitter.com/alphanodes', @@ -111,6 +118,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_select 'a.twitter' assert_select 'a[href=?]', 'https://twitter.com/alphanodes', text: '@alphanodes' @@ -119,6 +127,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_select 'a.twitter' assert_select 'a[href=?]', 'https://twitter.com/hashtag/alphanodes', text: '#alphanodes' @@ -130,6 +139,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a.reddit' assert_select 'a[href=?]', 'https://www.reddit.com/r/redmine', @@ -139,6 +149,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_select 'a.reddit' assert_select 'a[href=?]', 'https://www.reddit.com/username/redmine', text: 'u/redmine' @@ -147,6 +158,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_select 'a.reddit' assert_select 'a[href=?]', 'https://www.reddit.com/r/redmine', text: 'r/redmine' @@ -158,6 +170,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'span.last-updated-by' assert_select 'a[href=?]', '/users/2', @@ -170,6 +183,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'span.last-updated-at' assert_select 'a[href=?]', '/projects/ecookbook/activity' @@ -181,6 +195,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.recently-updated' end @@ -191,6 +206,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.wiki div.user' end @@ -201,6 +217,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.wiki a.macro-new-issue' end @@ -211,6 +228,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.wiki div.user' end @@ -221,6 +239,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.wiki div.additionals-projects tr.project' end @@ -231,6 +250,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'i.fas.fa-adjust' end @@ -241,6 +261,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a[href=?]', 'https://www.redmine.org/issues/12066' end @@ -251,6 +272,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a[href=?]', 'https://www.redmine.org/issues/12066' end @@ -261,6 +283,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a[href=?]', 'https://www.redmine.org/projects/redmine/wiki/RedmineInstall' end @@ -271,6 +294,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'a[href=?]', 'https://www.redmine.org/projects/redmine/wiki/RedmineInstall' end @@ -281,6 +305,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'script[src=?]', 'https://gist.github.com/plentz/6737338.js' end @@ -291,6 +316,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'script[src=?]', 'https://s3.tradingview.com/tv.js' end @@ -301,6 +327,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'div.wiki div.cryptocompare', text: %r{https://widgets\.cryptocompare\.com/serve/v3/coin/header\?fsyms=BTC,ETH&tsyms=EUR} @@ -374,6 +401,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select 'script[src=?]', '//asciinema.org/a/113463.js' end @@ -384,6 +412,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content a.user.active[href=?]', '/users/2', text: 'John Smith' @@ -395,6 +424,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content span.user.active', text: 'John Smith' end @@ -405,6 +435,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content a[href=?]', '/users/1', text: 'Redmine Admin' @@ -416,6 +447,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content a.user', text: 'Redmine Admin' assert_select '#content a[href=?]', '/users/1', @@ -428,6 +460,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content a[href=?]', '/users/2', text: 'John Smith' @@ -439,6 +472,7 @@ class WikiControllerTest < Additionals::ControllerTest @page.content.save! get :show, params: { project_id: 1, id: @page_name } + assert_response :success assert_select '#content a.user', text: 'John Smith' assert_select '#content a[href=?]', '/users/2', diff --git a/test/global_test_helper.rb b/test/global_test_helper.rb index f109df30..6606ee52 100644 --- a/test/global_test_helper.rb +++ b/test/global_test_helper.rb @@ -86,6 +86,7 @@ module Additionals spec = +"td.#{c}" spec << "[colspan='#{colspan}']" if colspan + assert_select spec end diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb index 755cbf49..56156d09 100644 --- a/test/integration/api_test/issues_test.rb +++ b/test/integration/api_test/issues_test.rb @@ -27,6 +27,7 @@ module ApiTest test 'GET /issues.xml should contain metadata' do get '/issues.xml' + assert_select 'issues[type=array][total_count][limit="25"][offset="0"]' end @@ -61,6 +62,7 @@ module ApiTest headers: { 'CONTENT_TYPE' => 'application/xml' }.merge(credentials('jsmith')) end issue = Issue.last + assert_equal 1, issue.project_id assert_nil issue.assigned_to_id assert_equal 'API test', issue.subject @@ -91,6 +93,7 @@ module ApiTest end issue = Issue.last + assert_equal 1, issue.project_id assert_equal 2, issue.assigned_to_id assert_equal 'API test', issue.subject @@ -108,6 +111,7 @@ module ApiTest assert_response :success assert_empty response.body end + assert_nil Issue.find_by(id: 6) end end diff --git a/test/integration/api_test/projects_test.rb b/test/integration/api_test/projects_test.rb index 75c0cdbf..1f79fe7c 100644 --- a/test/integration/api_test/projects_test.rb +++ b/test/integration/api_test/projects_test.rb @@ -19,6 +19,7 @@ module ApiTest test 'GET /projects.xml should return projects' do get '/projects.xml', headers: credentials('jsmith') + assert_response :success assert_equal 'application/xml', @response.media_type diff --git a/test/integration/common_views_test.rb b/test/integration/common_views_test.rb index 8719144b..1313af58 100644 --- a/test/integration/common_views_test.rb +++ b/test/integration/common_views_test.rb @@ -25,6 +25,7 @@ class CommonViewsTest < Additionals::IntegrationTest test 'View user' do log_user 'admin', 'admin' get '/users/2' + assert_response :success end @@ -35,6 +36,7 @@ class CommonViewsTest < Additionals::IntegrationTest issue.description = 'new value' issue.save get '/issues/1' + assert_response :success end end diff --git a/test/unit/additionals_fontawesome_test.rb b/test/unit/additionals_fontawesome_test.rb index 53f4ce53..5de8269f 100644 --- a/test/unit/additionals_fontawesome_test.rb +++ b/test/unit/additionals_fontawesome_test.rb @@ -20,10 +20,12 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_value_info_should_return_infos info = AdditionalsFontAwesome.value_info 'invalid' + assert info.is_a? Hash assert_empty info info = AdditionalsFontAwesome.value_info 'fas_car' + assert info.key?(:classes) assert_equal :fas, info[:type] assert_equal 'fas fa-car', info[:classes] @@ -32,6 +34,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_value_info_regular_icons info = AdditionalsFontAwesome.value_info 'far_address-book' + assert info.key?(:classes) assert_equal 'normal', info[:font_weight] assert_equal 'Font Awesome\ 5 Free', info[:font_family] @@ -39,6 +42,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_value_info_solid_icons info = AdditionalsFontAwesome.value_info 'fas_address-book' + assert info.key?(:classes) assert_equal 900, info[:font_weight] assert_equal 'Font Awesome\ 5 Free', info[:font_family] @@ -46,6 +50,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_value_info_brands_icons info = AdditionalsFontAwesome.value_info 'fab_xing' + assert info.key?(:classes) assert_equal 'normal', info[:font_weight] assert_equal 'Font Awesome\ 5 Brands', info[:font_family] @@ -53,6 +58,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_brands_icon_with_details info = AdditionalsFontAwesome.value_info 'fab_amazon', with_details: true + assert info.key?(:unicode) assert info.key?(:label) assert_equal '', info[:unicode] @@ -61,6 +67,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_regular_icon_with_details info = AdditionalsFontAwesome.value_info 'far_calendar', with_details: true + assert info.key?(:unicode) assert info.key?(:label) assert_equal '', info[:unicode] @@ -69,6 +76,7 @@ class AdditionalsFontAwesomeTest < Additionals::TestCase def test_solid_icon_with_details info = AdditionalsFontAwesome.value_info 'fas_archive', with_details: true + assert info.key?(:unicode) assert info.key?(:label) assert_equal '', info[:unicode] diff --git a/test/unit/additionals_info_test.rb b/test/unit/additionals_info_test.rb index ba9ecf25..5229b386 100644 --- a/test/unit/additionals_info_test.rb +++ b/test/unit/additionals_info_test.rb @@ -5,18 +5,21 @@ require File.expand_path '../../test_helper', __FILE__ class AdditionalsInfoTest < Additionals::TestCase def test_system_infos infos = AdditionalsInfo.new.system_infos + assert infos.is_a? Hash assert infos.count >= 3 end def test_system_info text = AdditionalsInfo.new.system_info + assert_not_empty text assert_not_equal 'unknown', text end def test_system_uptime info = AdditionalsInfo.new.system_uptime + assert info.present? end end diff --git a/test/unit/additionals_macro_test.rb b/test/unit/additionals_macro_test.rb index 327150f7..6f7106f4 100644 --- a/test/unit/additionals_macro_test.rb +++ b/test/unit/additionals_macro_test.rb @@ -28,11 +28,13 @@ class AdditionalsMacroTest < Additionals::TestCase def test_all_with_only_names available_macros = AdditionalsMacro.all only_names: true + assert_includes available_macros, 'child_pages' end def test_with_filter available_macros = AdditionalsMacro.all filtered: ['child_pages'], only_names: true + assert_not_includes available_macros, 'child_pages' for_two_macros_selection = @all_macros - %w[child_pages collapse] + ['', 'nonexistingmacro'] @@ -44,14 +46,17 @@ class AdditionalsMacroTest < Additionals::TestCase def test_with_filter_all available_macros = AdditionalsMacro.all filtered: @all_macros, only_names: true + assert_equal 0, available_macros.count end def test_with_controller_limit available_macros = AdditionalsMacro.all only_names: true, controller_only: 'issue' + assert_not_includes available_macros, 'child_pages' available_macros = AdditionalsMacro.all only_names: true, controller_only: 'wiki' + assert_includes available_macros, 'child_pages' end end diff --git a/test/unit/dashboard_test.rb b/test/unit/dashboard_test.rb index 9b84b27f..69ad9123 100644 --- a/test/unit/dashboard_test.rb +++ b/test/unit/dashboard_test.rb @@ -63,6 +63,7 @@ class DashboardTest < Additionals::TestCase author_id: 2, visibility: Dashboard::VISIBILITY_ROLES, roles: [used_role] + assert_save dashboard dashboard.reload @@ -85,6 +86,7 @@ class DashboardTest < Additionals::TestCase system_default: true, author: User.current, visibility: 2 + assert_save dashboard assert dashboard.system_default @@ -97,6 +99,7 @@ class DashboardTest < Additionals::TestCase system_default: true, author: User.current, visibility: 2 + assert dashboard.valid? assert_save dashboard @@ -137,6 +140,7 @@ class DashboardTest < Additionals::TestCase assert dashboard.valid? dashboard.visibility = 0 + assert_not dashboard.valid? end @@ -147,9 +151,11 @@ class DashboardTest < Additionals::TestCase project_id: nil, author: User.current, visibility: 2) + assert dashboard.valid? dashboard.visibility = 0 + assert_not dashboard.valid? end @@ -176,16 +182,20 @@ class DashboardTest < Additionals::TestCase visibility: 2) dashboard.name = 'Only for user 2' + assert dashboard.valid? dashboard.project_id = 1 dashboard.name = 'Private project for user 2' + assert_not dashboard.valid? dashboard.name = 'Only for me - new' + assert dashboard.valid? dashboard.name = 'Only for me - new' dashboard.project_id = 2 + assert dashboard.valid? end @@ -199,6 +209,7 @@ class DashboardTest < Additionals::TestCase def test_destroy_dashboard_without_roles dashboard = dashboards :private_welcome2 + assert dashboard.roles.none? assert dashboard.deletable?(users(:users_002)) assert_difference 'Dashboard.count', -1 do @@ -208,22 +219,28 @@ class DashboardTest < Additionals::TestCase def test_create_dashboard_roles_relation dashboard = dashboards :welcome_for_roles + assert_equal 2, dashboard.roles.count relation = DashboardRole.new role_id: 3, dashboard_id: dashboard.id + assert_save relation dashboard.reload + assert_equal 3, dashboard.roles.count end def test_create_dashboard_roles_relation_with_autosave dashboard = dashboards :welcome_for_roles + assert_equal 2, dashboard.roles.count dashboard.roles << Role.generate! + assert_save dashboard dashboard.reload + assert_equal 3, dashboard.roles.count end @@ -233,6 +250,7 @@ class DashboardTest < Additionals::TestCase # change system default dashboard2 = dashboards :public_welcome dashboard2.system_default = true + assert_save dashboard2 dashboard = dashboards :welcome_for_roles @@ -251,6 +269,7 @@ class DashboardTest < Additionals::TestCase def test_disable_welcome_system_default_on_system_default_dashboard_should_not_possible dashboard = dashboards :system_default_welcome + assert dashboard.system_default dashboard.system_default = false @@ -281,15 +300,18 @@ class DashboardTest < Additionals::TestCase dashboard = dashboards :private_project_default dashboard.project_id = 1 + assert_save dashboard end def test_dashboard_name_should_strip_spaces dashboard = dashboards :system_default_welcome dashboard.name = ' new name ' + assert_save dashboard dashboard.reload + assert_equal 'new name', dashboard.name end diff --git a/test/unit/entity_method_test.rb b/test/unit/entity_method_test.rb index f9bbd4ac..580c29d4 100644 --- a/test/unit/entity_method_test.rb +++ b/test/unit/entity_method_test.rb @@ -21,6 +21,7 @@ class EntityMethodTest < Additionals::TestCase def test_allowed_entity_target_projects projects = Dashboard.allowed_entity_target_projects permission: :save_dashboards, user: users(:users_002) + assert_sorted_equal [1, 2, 5], projects.ids end @@ -36,6 +37,7 @@ class EntityMethodTest < Additionals::TestCase projects = Dashboard.allowed_entity_target_projects permission: :save_dashboards, user: users(:users_002), exclude: projects(:projects_005) + assert_sorted_equal [1, 2], projects.ids end @@ -44,6 +46,7 @@ class EntityMethodTest < Additionals::TestCase user: users(:users_002), project: projects(:projects_003), exclude: projects(:projects_005) + assert_sorted_equal [1, 2, 3], projects.ids end end diff --git a/test/unit/helpers/global_helper_test.rb b/test/unit/helpers/global_helper_test.rb index e0670434..422f18d8 100644 --- a/test/unit/helpers/global_helper_test.rb +++ b/test/unit/helpers/global_helper_test.rb @@ -37,15 +37,19 @@ class GlobalHelperTest < Redmine::HelperTest def test_font_awesome_icon html = font_awesome_icon 'fas_cloud-upload-alt', class: 'test' + assert_include 'class="fas fa-cloud-upload-alt test"', html html = font_awesome_icon 'fab_xing', class: 'test' + assert_include 'class="fab fa-xing test"', html html = font_awesome_icon 'fas_cloud-upload-alt', pre_text: 'Testing' + assert_include 'Testing Testing', html end diff --git a/test/unit/i18n_test.rb b/test/unit/i18n_test.rb index 46e1e7ad..e4f4a412 100644 --- a/test/unit/i18n_test.rb +++ b/test/unit/i18n_test.rb @@ -21,13 +21,16 @@ class I18nTest < Additionals::TestCase def test_locales_validness lang_files_count = Dir[Rails.root.join('plugins/additionals/config/locales/*.yml')].size + assert_equal 13, lang_files_count valid_languages.each do |lang| assert set_language_if_valid(lang) case lang.to_s when 'en' + assert_equal 'Open external URLs', l(:label_open_external_urls) when 'pt-BR', 'cs', 'de', 'es', 'fr', 'it', 'ja', 'ko', 'po', 'ru', 'zh-TW', 'zh' + assert_not l(:label_open_external_urls) == 'Open external URLs', lang end end diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index ed565cb5..1861b688 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -25,6 +25,7 @@ class IssueTest < Additionals::TestCase def test_create issue = Issue.new project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create' + assert_save issue assert_equal issue.tracker.default_status, issue.status assert_nil issue.description @@ -35,6 +36,7 @@ class IssueTest < Additionals::TestCase User.current = users :users_003 issue = issues :issues_007 issue.subject = 'Should be be saved' + assert_save issue end end @@ -50,9 +52,11 @@ class IssueTest < Additionals::TestCase issue = issues :issues_008 issue.subject = 'Should be saved' + assert_save issue issue.reload + assert_equal 'Should be saved', issue.subject end end @@ -64,11 +68,14 @@ class IssueTest < Additionals::TestCase assert issue.closed? issue.subject = 'Should be not be saved' + assert_not issue.save issue.reload + assert_not_equal 'Should be not be saved', issue.subject issue.status_id = 1 + assert issue.status_was.is_closed assert_not issue.closed? assert_not issue.save @@ -81,10 +88,12 @@ class IssueTest < Additionals::TestCase issue = Issue.generate subject: 'new issue for closing test', status_id: 1 + assert_save issue issue = Issue.generate subject: 'new issue for closing test and closed state', status_id: 5 + assert_save issue end end @@ -95,9 +104,11 @@ class IssueTest < Additionals::TestCase issue = issues :issues_008 issue.subject = 'Should be saved' + assert_save issue issue.reload + assert_equal 'Should be saved', issue.subject end end @@ -106,10 +117,12 @@ class IssueTest < Additionals::TestCase with_plugin_settings 'additionals', issue_freezed_with_close: 1 do User.current = users :users_003 issue = issues :issues_008 + assert_save issue # but changed issues should throw error issue.subject = 'changed' + assert_not issue.save end end @@ -119,6 +132,7 @@ class IssueTest < Additionals::TestCase issue_auto_assign_status: ['1'], issue_auto_assign_role: '1' do issue = Issue.new project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create' + assert_save issue assert_equal 2, issue.assigned_to_id end @@ -129,6 +143,7 @@ class IssueTest < Additionals::TestCase issue_auto_assign_status: ['1'], issue_auto_assign_role: '1' do issue = Issue.new project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create' + assert_save issue assert_nil issue.assigned_to_id end @@ -137,6 +152,7 @@ class IssueTest < Additionals::TestCase issue_auto_assign_status: [], issue_auto_assign_role: '1' do issue = Issue.new project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create' + assert_save issue assert_nil issue.assigned_to_id end @@ -145,6 +161,7 @@ class IssueTest < Additionals::TestCase issue_auto_assign_status: ['1'], issue_auto_assign_role: '' do issue = Issue.new project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create' + assert_save issue assert_nil issue.assigned_to_id end diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index f9f7a76a..b1a4a5bb 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -29,21 +29,25 @@ class ProjectTest < Additionals::TestCase def test_assignable_users_amount with_settings issue_group_assignment: '1' do project = Project.find 5 + assert_equal project.assignable_users.count, project.assignable_principals.count end with_settings issue_group_assignment: '0' do project = Project.find 5 + assert_not_equal project.assignable_users.count, project.assignable_principals.count end end def test_visible_users project = projects :projects_005 + assert_equal 3, project.visible_users.count end def test_visible_principals project = projects :projects_005 + assert_equal 4, project.visible_principals.count end @@ -68,6 +72,7 @@ class ProjectTest < Additionals::TestCase assert_kind_of Hash, principals_by_role role = Role.find 1 + assert_kind_of Array, principals_by_role[role] assert_includes principals_by_role[role], User.find(2) end @@ -80,10 +85,12 @@ class ProjectTest < Additionals::TestCase # User.current = User.find 2 principals_by_role = Project.find(1).principals_by_role + assert_equal 1, principals_by_role.count User.current = User.find 1 principals_by_role = Project.find(1).principals_by_role + assert_equal 2, principals_by_role.count end @@ -116,6 +123,7 @@ class ProjectTest < Additionals::TestCase def test_consider_hidden_roles_without_hide_roles project = projects :projects_001 + assert_not project.consider_hidden_roles? end diff --git a/test/unit/redmine_plugin_kit_loader_test.rb b/test/unit/redmine_plugin_kit_loader_test.rb index 48e4e466..986221db 100644 --- a/test/unit/redmine_plugin_kit_loader_test.rb +++ b/test/unit/redmine_plugin_kit_loader_test.rb @@ -101,6 +101,7 @@ class RedminePluginKitLoaderTest < Additionals::TestCase def test_apply_without_data loader = RedminePluginKit::Loader.new plugin_id: @plugin_id + assert loader.apply! end @@ -109,6 +110,7 @@ class RedminePluginKitLoaderTest < Additionals::TestCase loader.add_helper 'Settings' loader.add_patch 'Issue' loader.add_global_helper Additionals::Helpers + assert loader.apply! end @@ -134,11 +136,13 @@ class RedminePluginKitLoaderTest < Additionals::TestCase def test_load_model_hooks hooks = RedminePluginKit::Loader.new(plugin_id: @plugin_id).load_model_hooks! + assert hooks.is_a? Module end def test_load_hooks hooks = RedminePluginKit::Loader.new(plugin_id: @plugin_id).load_view_hooks! + assert hooks.is_a? Module end diff --git a/test/unit/role_test.rb b/test/unit/role_test.rb index 594d1aef..2b48691a 100644 --- a/test/unit/role_test.rb +++ b/test/unit/role_test.rb @@ -14,24 +14,30 @@ class RoleTest < Additionals::TestCase def test_with_permission role = Role.new name: 'role without hide' + assert_save role role.reload + assert_not role.hide role = Role.new name: 'role with hide', hide: true + assert_save role role.reload + assert role.hide end def test_edit role = roles :roles_001 role.hide = true + assert_save role role.reload + assert role.hide end end diff --git a/test/unit/time_entry_test.rb b/test/unit/time_entry_test.rb index 5a9754ef..612db637 100644 --- a/test/unit/time_entry_test.rb +++ b/test/unit/time_entry_test.rb @@ -23,12 +23,14 @@ class TimeEntryTest < Additionals::TestCase def test_create_time_entry_without_issue entry = TimeEntry.generate project: projects(:projects_001) + assert entry.valid? assert_save entry end def test_create_time_entry_with_open_issue entry = TimeEntry.generate issue: issues(:issues_002) + assert_not entry.issue.closed? assert entry.valid? assert_save entry @@ -38,6 +40,7 @@ class TimeEntryTest < Additionals::TestCase User.current = nil entry = TimeEntry.generate issue: issues(:issues_008) + assert entry.issue.closed? assert_not entry.valid? assert_not entry.save @@ -51,6 +54,7 @@ class TimeEntryTest < Additionals::TestCase Member.create! principal: User.current, project_id: project.id, role_ids: [role.id] entry = TimeEntry.generate issue: issues(:issues_008) + assert entry.issue.closed? assert entry.valid? assert_save entry diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index aa4c6e97..b29ba468 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -23,6 +23,7 @@ class UserTest < Additionals::TestCase admin_user = User.generate! admin: true users = User.visible.active.with_permission :save_dashboards + assert_equal 5, users.count assert users.exists?(id: admin_user) end @@ -81,6 +82,7 @@ class UserTest < Additionals::TestCase user = users :users_002 options = { skip_pre_condition: true, project: nil } + assert_sorted_equal Project.where(Project.allowed_to_condition(user, :view_issues, **options)).ids, user.allowed_project_ids_for(:view_issues, **options) diff --git a/test/unit/wiki_formating/markdown_test.rb b/test/unit/wiki_formating/markdown_test.rb index 8d400fd5..26fe4afa 100644 --- a/test/unit/wiki_formating/markdown_test.rb +++ b/test/unit/wiki_formating/markdown_test.rb @@ -16,6 +16,7 @@ module WikiFormatting with_plugin_settings 'additionals', legacy_smiley_support: 1, emoji_support: 0 do text = 'A small test :) with an smilie' + assert_equal '

A small test with an smilie

', @formatter.new(text).to_html.strip end @@ -26,6 +27,7 @@ module WikiFormatting emoji_support: 1, disable_emoji_native_support: 1 do text = 'A test with a :heart: emoji' + assert_equal '

A test with a emoji

", @formatter.new(text).to_html.strip @@ -37,12 +39,14 @@ module WikiFormatting emoji_support: 1, disable_emoji_native_support: 1 do text = ':heart: and :)' + assert_equal '

" \ ' and

', @formatter.new(text).to_html.strip text = ' :) and :heart:' + assert_equal '

and' \ '

", diff --git a/test/unit/wiki_formating/textile_test.rb b/test/unit/wiki_formating/textile_test.rb index 6f9fd5fb..0596ddd8 100644 --- a/test/unit/wiki_formating/textile_test.rb +++ b/test/unit/wiki_formating/textile_test.rb @@ -22,6 +22,7 @@ module WikiFormatting @to_test['A test with a :) smiley'] = 'A test with a smiley' @to_test[':) :)'] = '' \ ' ' + assert_html_output @to_test end end @@ -35,6 +36,7 @@ module WikiFormatting str = 'A test with a :heart: emoji and a :) smiley' @to_test[str] = 'A test with a emoji and a :) smiley" + assert_html_output @to_test end end @@ -52,6 +54,7 @@ module WikiFormatting @to_test[':) and :heart:'] = ' and' \ ' " + assert_html_output @to_test end end