Actualizar plugin Additionals a 3.0.0

This commit is contained in:
Manuel Cillero 2020-11-22 21:30:25 +01:00
parent 3d976f1b3b
commit a26f5567af
399 changed files with 70374 additions and 4093 deletions

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class AdditionalsFontAwesomeTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,

View file

@ -0,0 +1,44 @@
require File.expand_path '../../test_helper', __FILE__
class AdditionalsJournalTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
:trackers, :projects_trackers,
:enabled_modules,
:issue_statuses, :issue_categories, :workflows,
:enumerations,
:issues, :journals, :journal_details,
:custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values
def setup
prepare_tests
@issue = issues :issues_001
@current_journal = Journal.new journalized: @issue, user: users(:users_001), notes: ''
end
def test_journal_history_with_added_entries
assert_difference('JournalDetail.count', 2) do
assert AdditionalsJournal.save_journal_history(@current_journal,
'issue_test_relation',
[1],
[1, 2, 3])
end
end
def test_journal_history_with_removed_entries
assert_difference('JournalDetail.count', 2) do
assert AdditionalsJournal.save_journal_history(@current_journal,
'issue_test_relation',
[1, 2, 3],
[1])
end
end
def test_journal_history_without_changes
assert_difference('JournalDetail.count', 0) do
assert AdditionalsJournal.save_journal_history(@current_journal,
'issue_test_relation',
[1, 2, 3],
[1, 2, 3])
end
end
end

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class AdditionalsMacroTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,

View file

@ -0,0 +1,59 @@
require File.expand_path '../../test_helper', __FILE__
class AdditionalsTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
:trackers, :projects_trackers,
:enabled_modules,
:enumerations
include Redmine::I18n
def setup
prepare_tests
end
def test_true
assert Additionals.true? 1
assert Additionals.true? true
assert Additionals.true? 'true'
assert Additionals.true? 'True'
assert_not Additionals.true?(-1)
assert_not Additionals.true? 0
assert_not Additionals.true? '0'
assert_not Additionals.true? 1000
assert_not Additionals.true? false
assert_not Additionals.true? 'false'
assert_not Additionals.true? 'False'
assert_not Additionals.true? 'yes'
assert_not Additionals.true? ''
assert_not Additionals.true? nil
assert_not Additionals.true? 'unknown'
end
def test_settings
assert_raises NoMethodError do
Additionals.settings[:open_external_urls]
end
end
def test_setting
assert_equal 'Don\'t forget to define acceptance criteria!',
Additionals.setting(:new_ticket_message)
assert Additionals.setting?(:open_external_urls)
assert_nil Additionals.setting(:no_existing_key)
end
def test_setting_bool
assert Additionals.setting?(:open_external_urls)
assert_not Additionals.setting?(:add_go_to_top)
end
def test_load_macros
assert_equal ['fa'], Additionals.load_macros(['fa'])
assert_raises LoadError do
Additionals.load_macros(%w[fa invalid])
end
end
end

View file

@ -0,0 +1,18 @@
require File.expand_path '../../test_helper', __FILE__
class DashboardContentTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
:trackers, :projects_trackers,
:enabled_modules,
:enumerations,
:dashboards, :dashboard_roles
def setup
prepare_tests
end
def test_types
assert DashboardContent.types.include?(DashboardContentProject::TYPE_NAME)
assert DashboardContent.types.include?(DashboardContentWelcome::TYPE_NAME)
end
end

View file

@ -0,0 +1,281 @@
require File.expand_path '../../test_helper', __FILE__
class DashboardTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
:trackers, :projects_trackers,
:enabled_modules,
:issue_statuses, :issue_categories, :workflows,
:enumerations,
:issues, :journals, :journal_details,
:custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values,
:dashboards, :dashboard_roles
def setup
prepare_tests
User.current = users :users_002
end
def test_create_welcome_dashboard
dashboard = Dashboard.new name: 'my welcome dashboard',
dashboard_type: DashboardContentWelcome::TYPE_NAME,
author_id: 2
assert dashboard.save
end
def test_create_project_dashboard
dashboard = Dashboard.new name: 'my project dashboard',
dashboard_type: DashboardContentProject::TYPE_NAME,
project: Project.find(1),
author_id: 2
assert dashboard.save
end
def test_do_not_create_dashboard_for_role_without_roles
dashboard = Dashboard.new name: 'dashboard for roles',
dashboard_type: DashboardContentWelcome::TYPE_NAME,
author_id: 2,
visibility: Dashboard::VISIBILITY_ROLES
assert_not dashboard.valid?
end
def test_create_dashboard_with_roles
dashboard = Dashboard.new name: 'dashboard for roles',
dashboard_type: DashboardContentWelcome::TYPE_NAME,
author_id: 2,
visibility: Dashboard::VISIBILITY_ROLES,
roles: Role.where(id: [1, 3]).to_a
assert dashboard.save
dashboard.reload
assert_equal [1, 3], dashboard.role_ids.sort
end
def test_create_dashboard_with_unused_role_should_visible_for_author
used_role = Role.generate!
dashboard = Dashboard.new name: 'dashboard for unused role',
dashboard_type: DashboardContentWelcome::TYPE_NAME,
author_id: 2,
visibility: Dashboard::VISIBILITY_ROLES,
roles: [used_role]
assert dashboard.save
dashboard.reload
assert_equal [used_role.id], dashboard.role_ids
assert dashboard.visible?
end
def test_system_default_welcome_should_exist
assert_equal 1, Dashboard.welcome_only.where(system_default: true).count
end
def test_system_default_project_should_exist
assert_equal 1, Dashboard.project_only.where(system_default: true).count
end
def test_change_system_default_welcome_without_set_system_default
dashboard = Dashboard.new dashboard_type: DashboardContentWelcome::TYPE_NAME,
name: 'WelcomeTest',
system_default: true,
author: User.current,
visibility: 2
assert dashboard.save
assert dashboard.system_default
assert_equal 2, dashboard.visibility
end
def test_change_system_default_project_without_set_system_default
dashboard = Dashboard.new dashboard_type: DashboardContentProject::TYPE_NAME,
name: 'ProjectTest',
system_default: true,
author: User.current,
visibility: 2
assert dashboard.valid?
assert dashboard.save
assert dashboard.system_default
assert_equal 2, dashboard.visibility
end
def test_system_default_welcome_allowed_only_once
assert Dashboard.create!(dashboard_type: DashboardContentWelcome::TYPE_NAME,
name: 'WelcomeTest',
system_default: true,
author: User.current,
visibility: 2)
assert_equal 1, Dashboard.welcome_only.where(system_default: true).count
end
def test_system_default_project_allowed_only_once
assert Dashboard.create!(dashboard_type: DashboardContentProject::TYPE_NAME,
name: 'ProjectTest',
system_default: true,
project_id: nil,
author: User.current,
visibility: 2)
assert_equal 1, Dashboard.project_only.where(system_default: true).count
end
def test_system_default_welcome_requires_public_visibility
dashboard = Dashboard.create!(dashboard_type: DashboardContentWelcome::TYPE_NAME,
name: 'WelcomeTest public',
system_default: true,
author: User.current,
visibility: 2)
assert dashboard.valid?
dashboard.visibility = 0
assert_not dashboard.valid?
end
def test_system_default_project_requires_public_visibility
dashboard = Dashboard.new(dashboard_type: DashboardContentProject::TYPE_NAME,
name: 'ProjectTest public',
system_default: true,
project_id: nil,
author: User.current,
visibility: 2)
assert dashboard.valid?
dashboard.visibility = 0
assert_not dashboard.valid?
end
def test_system_default_welcome_should_not_be_deletable
assert_raise(Exception) do
Dashboard.welcome_only
.where(system_default: true)
.destroy_all
end
end
def test_system_default_project_should_not_be_deletable
assert_raise(Exception) do
Dashboard.project_only
.where(system_default: true)
.destroy_all
end
end
def test_dashboard_with_unique_name_scope
dashboard = Dashboard.new(dashboard_type: DashboardContentProject::TYPE_NAME,
author_id: 2,
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
def test_dashboard_welcome_scope
assert_equal 4, Dashboard.visible.welcome_only.count
end
def test_dashboard_project_scope
assert_equal 2, Dashboard.visible.project_only.count
end
def test_destroy_dashboard_without_roles
dashboard = dashboards :private_welcome2
assert dashboard.roles.none?
assert dashboard.destroyable_by? users(:users_002)
assert_difference 'Dashboard.count', -1 do
assert dashboard.destroy
end
end
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 relation.save
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 dashboard.save
dashboard.reload
assert_equal 3, dashboard.roles.count
end
def test_destroy_dashboard_with_roles
User.current = users :users_001
# change system default
dashboard2 = dashboards :public_welcome
dashboard2.system_default = true
assert dashboard2.save
dashboard = dashboards :welcome_for_roles
dashboard.reload
assert dashboard.roles.any?
assert dashboard.destroyable_by? users(:users_001)
assert_difference 'Dashboard.count', -1 do
assert_difference 'DashboardRole.count', -2 do
assert_no_difference 'Role.count' do
assert dashboard.destroy
end
end
end
end
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
assert_raise Dashboard::SystemDefaultChangeException do
dashboard.save!
end
end
def test_disable_project_system_default_on_system_default_dashboard_should_not_possible
dashboard = dashboards :system_default_project
dashboard.system_default = false
assert_raise Dashboard::SystemDefaultChangeException do
dashboard.save!
end
end
def test_project_system_default_should_not_assignable_with_project_id
dashboard = dashboards :system_default_project
dashboard.project_id = 1
assert_raise Dashboard::ProjectSystemDefaultChangeException do
dashboard.save!
end
end
def test_project_id_should_changeable_on_non_system_default
dashboard = dashboards :private_project_default
dashboard.project_id = 1
dashboard.save!
end
end

View file

@ -5,6 +5,7 @@ class GlobalHelperTest < ActionView::TestCase
include AdditionalsFontawesomeHelper
include AdditionalsMenuHelper
include CustomFieldsHelper
include AvatarsHelper
include Redmine::I18n
include ERB::Util

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class I18nTest < Additionals::TestCase
include Redmine::I18n
@ -18,32 +18,17 @@ class I18nTest < Additionals::TestCase
end
def test_locales_validness
lang_files_count = Dir[Rails.root.join('plugins',
'additionals',
'config',
'locales',
'*.yml')].size
assert_equal 8, lang_files_count
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
# check if parse error exists
::I18n.locale = 'de'
assert_equal 'Externe URLs', l(:label_external_urls)
::I18n.locale = 'en'
assert_equal 'External urls', l(:label_external_urls)
::I18n.locale = 'es'
assert_equal 'URLs externos', l(:label_external_urls)
::I18n.locale = 'fr'
assert_equal 'Les urnes externes', l(:label_external_urls)
::I18n.locale = 'it'
assert_equal 'Esterno urls', l(:label_external_urls)
::I18n.locale = 'ja'
assert_equal '外部URL', l(:label_external_urls)
::I18n.locale = 'zh-TW'
assert_equal '外部連結', l(:label_external_urls)
::I18n.locale = 'zh'
assert_equal '外部 URLs', l(:label_external_urls)
set_language_if_valid('en')
end

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class IssueTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
@ -30,8 +30,8 @@ class IssueTest < Additionals::TestCase
def test_change_open_issue
with_additionals_settings(issue_freezed_with_close: 1) do
User.current = users(:users_003)
issue = issues(:issues_007)
User.current = users :users_003
issue = issues :issues_007
issue.subject = 'Should be be saved'
assert issue.save
end
@ -39,13 +39,13 @@ class IssueTest < Additionals::TestCase
def test_change_closed_issue_with_permission
with_additionals_settings(issue_freezed_with_close: 1) do
User.current = users(:users_003)
User.current = users :users_003
role = Role.create!(name: 'Additionals Tester', permissions: [:edit_closed_issues])
Member.where(user_id: User.current).delete_all
project = projects(:projects_001)
project = projects :projects_001
Member.create!(principal: User.current, project_id: project.id, role_ids: [role.id])
issue = issues(:issues_008)
issue = issues :issues_008
issue.subject = 'Should be saved'
assert issue.save
@ -57,21 +57,40 @@ class IssueTest < Additionals::TestCase
def test_change_closed_issue_without_permission
with_additionals_settings(issue_freezed_with_close: 1) do
User.current = users(:users_003)
issue = issues(:issues_008)
User.current = users :users_003
issue = issues :issues_008
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
end
end
def test_new_issue_should_always_be_changeable
with_additionals_settings issue_freezed_with_close: 1 do
User.current = users :users_003
issue = Issue.generate subject: 'new issue for closing test',
status_id: 1
assert issue.save
issue = Issue.generate subject: 'new issue for closing test and closed state',
status_id: 5
assert issue.save
end
end
def test_change_closed_issue_without_permission_but_freezed_disabled
with_additionals_settings(issue_freezed_with_close: 0) do
User.current = users(:users_003)
issue = issues(:issues_008)
with_additionals_settings issue_freezed_with_close: 0 do
User.current = users :users_003
issue = issues :issues_008
issue.subject = 'Should be saved'
assert issue.save
@ -81,11 +100,22 @@ class IssueTest < Additionals::TestCase
end
end
def test_unchanged_existing_issue_should_not_create_validation_error
with_additionals_settings issue_freezed_with_close: 1 do
User.current = users :users_003
issue = issues :issues_008
assert issue.save
# but changed issues should throw error
issue.subject = 'changed'
assert_not issue.save
end
end
def test_auto_assigned_to
with_additionals_settings(issue_status_change: '0',
issue_auto_assign: '1',
with_additionals_settings issue_auto_assign: 1,
issue_auto_assign_status: ['1'],
issue_auto_assign_role: '1') do
issue_auto_assign_role: '1' do
issue = Issue.new(project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create')
assert issue.save
assert_equal 2, issue.assigned_to_id
@ -93,10 +123,25 @@ class IssueTest < Additionals::TestCase
end
def test_disabled_auto_assigned_to
with_additionals_settings(issue_status_change: '0',
issue_auto_assign: '0',
with_additionals_settings issue_auto_assign: 0,
issue_auto_assign_status: ['1'],
issue_auto_assign_role: '1') do
issue_auto_assign_role: '1' do
issue = Issue.new(project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create')
assert issue.save
assert_nil issue.assigned_to_id
end
with_additionals_settings issue_auto_assign: 1,
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 issue.save
assert_nil issue.assigned_to_id
end
with_additionals_settings issue_auto_assign: 1,
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 issue.save
assert_nil issue.assigned_to_id

View file

@ -0,0 +1,84 @@
require File.expand_path '../../test_helper', __FILE__
class ProjectTest < Additionals::TestCase
fixtures :projects, :trackers, :issue_statuses, :issues,
:journals, :journal_details,
:enumerations, :users, :issue_categories,
:projects_trackers,
:custom_fields,
:custom_fields_projects,
:custom_fields_trackers,
:custom_values,
:roles,
:member_roles,
:members,
:enabled_modules,
:groups_users,
:repositories,
:workflows,
:attachments
def setup
User.current = nil
end
def test_assignable_users_amount
with_settings issue_group_assignment: '1' do
project = Project.find(5)
assert_equal project.assignable_users.count, project.assignable_users_and_groups.count
end
with_settings issue_group_assignment: '0' do
project = Project.find(5)
assert_not_equal project.assignable_users.count, project.assignable_users_and_groups.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
def test_destroy_project
User.current = users :users_001
@ecookbook = projects :projects_001
# dashboards
assert @ecookbook.dashboards.any?
@ecookbook.destroy
# make sure that the project non longer exists
assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) }
# make sure related data was removed
assert_nil Dashboard.where(project_id: @ecookbook.id).first
end
def test_users_by_role
users_by_role = Project.find(1).users_by_role
assert_kind_of Hash, users_by_role
role = Role.find(1)
assert_kind_of Array, users_by_role[role]
assert users_by_role[role].include?(User.find(2))
end
def test_users_by_role_with_hidden_role
Role.update_all users_visibility: 'members_of_visible_projects'
role = Role.find 2
role.hide = 1
role.save!
assert_equal 0, Role.where.not(users_visibility: 'members_of_visible_projects').count
assert role.hide
# User.current = User.find 2
assert_equal 1, Project.find(1).users_by_role.count
User.current = User.find 1
assert_equal 2, Project.find(1).users_by_role.count
end
end

View file

@ -1,16 +1,19 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class QueryTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
:groups_users,
:trackers, :projects_trackers,
:enabled_modules,
:roles
:roles,
:repositories
def setup
prepare_query_tests
User.current = nil
end
def test_issue_query_principals_with_hide
prepare_query_tests
User.current = @user_with_hide
query = IssueQuery.new(project: @project, name: '_')
@ -19,6 +22,7 @@ class QueryTest < Additionals::TestCase
end
def test_issue_query_principals_with_show_hide_permission
prepare_query_tests
User.current = @user_with_show_hide
query = IssueQuery.new(project: @project, name: '_')
@ -26,6 +30,8 @@ class QueryTest < Additionals::TestCase
assert_equal 4, query.principals.count
end
private
def prepare_query_tests
@role1 = Role.new(name: 'principal test hide1', users_visibility: 'members_of_visible_projects', hide: true)
@role1.add_permission!('view_issues')
@ -35,7 +41,7 @@ class QueryTest < Additionals::TestCase
@role2.add_permission!('view_issues', 'show_hidden_roles_in_memberbox')
@role2.save!
@project = projects(:projects_001)
@project = projects :projects_001
@user_with_hide = User.generate!(firstname: 'hide1', lastname: 'role')
m = Member.new(user_id: @user_with_hide.id, project_id: @project.id)

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class RoleTest < Additionals::TestCase
fixtures :projects, :users, :members, :member_roles, :roles,
@ -10,18 +10,18 @@ class RoleTest < Additionals::TestCase
prepare_tests
end
def test_create
def test_with_permission
role = Role.new(name: 'role without hide')
assert role.save
role.reload
assert_equal false, role.hide
assert_not role.hide
role = Role.new(name: 'role with hide', hide: true)
assert role.save
role.reload
assert_equal true, role.hide
assert role.hide
end
def test_edit
@ -30,6 +30,6 @@ class RoleTest < Additionals::TestCase
assert role.save
role.reload
assert_equal true, role.hide
assert role.hide
end
end

View file

@ -1,7 +1,8 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class TimeEntryTest < Additionals::TestCase
fixtures :issues, :projects, :users, :time_entries,
fixtures :users, :email_addresses,
:issues, :projects, :time_entries,
:members, :roles, :member_roles,
:trackers, :issue_statuses,
:projects_trackers,
@ -19,16 +20,13 @@ class TimeEntryTest < Additionals::TestCase
end
def test_create_time_entry_without_issue
entry = TimeEntry.new(project: projects(:projects_001), user: users(:users_001), activity: TimeEntryActivity.first, hours: 100)
entry.spent_on = '2010-01-01'
entry = TimeEntry.generate(project: projects(:projects_001))
assert entry.valid?
assert entry.save
end
def test_create_time_entry_with_open_issue
entry = TimeEntry.new(project: projects(:projects_001), user: users(:users_001), activity: TimeEntryActivity.first, hours: 100)
entry.spent_on = '2010-01-01'
entry.issue = Issue.create(project_id: 1, tracker_id: 1, author_id: 1, status_id: 1, subject: 'open issue')
entry = TimeEntry.generate(issue: issues(:issues_002))
assert_not entry.issue.closed?
assert entry.valid?
assert entry.save
@ -36,28 +34,21 @@ class TimeEntryTest < Additionals::TestCase
def test_create_time_entry_with_closed_issue_without_permission
User.current = nil
issue = Issue.generate(project_id: 1, subject: 'closed issue')
issue.status = IssueStatus.where(is_closed: true).first
issue.save
entry = TimeEntry.new(project: projects(:projects_001), user: users(:users_001), activity: TimeEntryActivity.first, hours: 100)
entry.spent_on = '2010-01-01'
entry.issue = issue
entry = TimeEntry.generate(issue: issues(:issues_008))
assert entry.issue.closed?
assert_not entry.valid?
assert_not entry.save
end
def test_create_time_entry_with_closed_issue_with_permission
User.current = users(:users_003)
User.current = users :users_003
role = Role.create!(name: 'Additionals Tester', permissions: [:log_time_on_closed_issues])
Member.where(user_id: User.current).delete_all
project = projects(:projects_001)
project = projects :projects_001
Member.create!(principal: User.current, project_id: project.id, role_ids: [role.id])
entry = TimeEntry.new(project: projects(:projects_001), user: User.current, activity: TimeEntryActivity.first, hours: 100)
entry.spent_on = '2010-01-01'
entry.issue = Issue.create(project_id: 1, tracker_id: 1, author_id: 1, status_id: 5, subject: 'closed issue')
entry = TimeEntry.generate(issue: issues(:issues_008))
assert entry.issue.closed?
assert entry.valid?
assert entry.save

View file

@ -0,0 +1,66 @@
require File.expand_path '../../test_helper', __FILE__
class UserTest < Additionals::TestCase
fixtures :users, :groups_users, :email_addresses,
:members, :projects, :roles, :member_roles, :auth_sources,
:trackers, :issue_statuses,
:projects_trackers,
:watchers,
:issue_categories, :enumerations, :issues,
:journals, :journal_details,
:enabled_modules,
:tokens, :user_preferences,
:dashboards, :dashboard_roles
def setup
prepare_tests
User.current = users :users_002
end
def test_with_permission
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
def test_with_permission_on_project
assert_equal 3, User.visible.active.with_permission(:save_dashboards, projects(:projects_001)).count
end
def test_admin_should_can_be_admin
assert User.where(admin: true).first.can_be_admin?
end
def test_non_admin_should_can_not_be_admin
assert_not User.where(admin: false).first.can_be_admin?
end
def test_sudoer_should_can_be_admin
skip 'Skip redmine_sudo test, because redmine_contacts is not installed' unless Redmine::Plugin.installed?('redmine_sudo')
user = users :users_001
user.sudoer = true
user.save!
user.reload
assert user.sudoer
assert user.admin
assert User.where(sudoer: true).first.can_be_admin?
user.admin = false
user.save!
user.reload
assert user.sudoer
assert_not user.admin
assert User.where(sudoer: true).first.can_be_admin?
end
def test_non_sudoer_without_admin_can_not_be_admin
skip 'Skip redmine_sudo test, because redmine_contacts is not installed' unless Redmine::Plugin.installed?('redmine_sudo')
assert_not User.where(sudoer: false, admin: false).first.can_be_admin?
end
end

View file

@ -1,4 +1,4 @@
require File.expand_path('../../test_helper', __FILE__)
require File.expand_path '../../test_helper', __FILE__
class WatcherTest < Additionals::TestCase
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles, :enabled_modules,
@ -9,15 +9,15 @@ class WatcherTest < Additionals::TestCase
def setup
prepare_tests
@author = users(:users_001)
@assigned_user = users(:users_002)
@changing_user = users(:users_004)
@author = users :users_001
@assigned_user = users :users_002
@changing_user = users :users_004
end
def test_new_issue_with_no_autowatch
with_additionals_settings(issue_autowatch_involved: 0) do
with_additionals_settings issue_autowatch_involved: 0 do
User.current = @author
issue = Issue.generate(author_id: @author.id)
issue = Issue.generate author_id: @author.id
issue.save
assert_equal 0, issue.watchers.count
assert_not issue.watched_by?(@author)