Nuevo plugin Additionals 2.0.20
This commit is contained in:
parent
a2a901b71b
commit
93e1e28683
354 changed files with 40514 additions and 0 deletions
74
plugins/additionals/test/unit/additionals_fontawesome_test.rb
Executable file
74
plugins/additionals/test/unit/additionals_fontawesome_test.rb
Executable file
|
@ -0,0 +1,74 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class AdditionalsFontAwesomeTest < 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,
|
||||
:time_entries
|
||||
|
||||
include Redmine::I18n
|
||||
|
||||
def setup
|
||||
set_language_if_valid 'en'
|
||||
end
|
||||
|
||||
def test_value_info_should_return_infos
|
||||
info = AdditionalsFontAwesome.value_info('invalid')
|
||||
assert_equal({}, info)
|
||||
|
||||
info = AdditionalsFontAwesome.value_info('fas_car')
|
||||
assert info.key?(:classes)
|
||||
assert_equal :fas, info[:type]
|
||||
assert_equal 'fas fa-car', info[:classes]
|
||||
assert_not info.key?(:unicode)
|
||||
end
|
||||
|
||||
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]
|
||||
end
|
||||
|
||||
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]
|
||||
end
|
||||
|
||||
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]
|
||||
end
|
||||
|
||||
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]
|
||||
assert_equal 'Amazon', info[:label]
|
||||
end
|
||||
|
||||
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]
|
||||
assert_equal 'Calendar', info[:label]
|
||||
end
|
||||
|
||||
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]
|
||||
assert_equal 'Archive', info[:label]
|
||||
end
|
||||
end
|
55
plugins/additionals/test/unit/additionals_macro_test.rb
Executable file
55
plugins/additionals/test/unit/additionals_macro_test.rb
Executable file
|
@ -0,0 +1,55 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class AdditionalsMacroTest < 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,
|
||||
:time_entries
|
||||
|
||||
include Redmine::I18n
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
|
||||
@all_macros = Redmine::WikiFormatting::Macros.available_macros.map { |macro, _macro_options| macro.to_s }
|
||||
end
|
||||
|
||||
def test_all
|
||||
available_macros = AdditionalsMacro.all
|
||||
|
||||
assert_not_equal 0, available_macros.count
|
||||
end
|
||||
|
||||
def test_all_with_only_names
|
||||
available_macros = AdditionalsMacro.all(only_names: true)
|
||||
assert available_macros.include?('child_pages')
|
||||
end
|
||||
|
||||
def test_with_filter
|
||||
available_macros = AdditionalsMacro.all(filtered: ['child_pages'], only_names: true)
|
||||
assert available_macros.exclude?('child_pages')
|
||||
|
||||
for_two_macros_selection = @all_macros - %w[child_pages collapse] + ['', 'nonexistingmacro']
|
||||
available_macros = AdditionalsMacro.all(filtered: for_two_macros_selection, only_names: true)
|
||||
|
||||
# -1 (hello world is always removed)
|
||||
assert_equal %w[child_pages collapse], available_macros
|
||||
end
|
||||
|
||||
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 available_macros.exclude?('child_pages')
|
||||
|
||||
available_macros = AdditionalsMacro.all(only_names: true, controller_only: 'wiki')
|
||||
assert available_macros.include?('child_pages')
|
||||
end
|
||||
end
|
88
plugins/additionals/test/unit/helpers/global_helper_test.rb
Executable file
88
plugins/additionals/test/unit/helpers/global_helper_test.rb
Executable file
|
@ -0,0 +1,88 @@
|
|||
require File.expand_path('../../../test_helper', __FILE__)
|
||||
|
||||
class GlobalHelperTest < ActionView::TestCase
|
||||
include Additionals::Helpers
|
||||
include AdditionalsFontawesomeHelper
|
||||
include AdditionalsMenuHelper
|
||||
include CustomFieldsHelper
|
||||
include Redmine::I18n
|
||||
include ERB::Util
|
||||
|
||||
fixtures :projects, :trackers, :issue_statuses, :issues,
|
||||
:enumerations, :users, :issue_categories,
|
||||
:projects_trackers,
|
||||
:roles,
|
||||
:member_roles,
|
||||
:members,
|
||||
:enabled_modules,
|
||||
:custom_fields,
|
||||
:attachments,
|
||||
:versions
|
||||
|
||||
def setup
|
||||
super
|
||||
set_language_if_valid('en')
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_system_info
|
||||
text = system_info
|
||||
|
||||
assert_not_equal '', text
|
||||
assert_not_equal 'unknown', text
|
||||
end
|
||||
|
||||
def test_windows_platform
|
||||
assert_nil windows_platform?
|
||||
end
|
||||
|
||||
def test_user_with_avatar
|
||||
html = user_with_avatar(users(:users_001))
|
||||
|
||||
assert_include 'Redmine Admin', html
|
||||
end
|
||||
|
||||
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 <span', html
|
||||
|
||||
html = font_awesome_icon('fas_cloud-upload-alt', post_text: 'Testing')
|
||||
assert_include '</span> Testing', html
|
||||
end
|
||||
|
||||
def test_parse_issue_url
|
||||
stubs(:request).returns(stub('original_url' => 'http://redmine.local/issues/1#note-2'))
|
||||
|
||||
assert_equal({ issue_id: nil, comment_id: nil },
|
||||
parse_issue_url(0, nil))
|
||||
assert_equal({ issue_id: nil, comment_id: nil },
|
||||
parse_issue_url('', nil))
|
||||
assert_equal({ issue_id: nil, comment_id: nil },
|
||||
parse_issue_url('http://localhost/issues/23', nil))
|
||||
assert_equal({ issue_id: '23', comment_id: nil },
|
||||
parse_issue_url('http://redmine.local/issues/23', nil))
|
||||
assert_equal({ issue_id: '23', comment_id: 2 },
|
||||
parse_issue_url('http://redmine.local/issues/23#note-2', nil))
|
||||
assert_equal({ issue_id: '23', comment_id: 2 },
|
||||
parse_issue_url('http://redmine.local/issues/issues/23/edit#note-2', nil))
|
||||
end
|
||||
|
||||
def test_render_issue_macro_link
|
||||
issue = Issue.generate!
|
||||
issue.init_journal(User.first, 'Adding notes')
|
||||
issue.save
|
||||
|
||||
stubs(:request).returns(stub('original_url' => 'http://redmine.local/issues/1#note-2'))
|
||||
|
||||
assert_match %r{/issues/#{issue.id}}, render_issue_macro_link(issue, 'Sample subject')
|
||||
assert_no_match(/Adding notes/, render_issue_macro_link(issue, 'Sample subject'))
|
||||
assert_match(/Adding notes/, render_issue_macro_link(issue, 'Sample subject', 1))
|
||||
assert_match %r{N/A}, render_issue_macro_link(issue, 'Sample subject', 100)
|
||||
end
|
||||
end
|
50
plugins/additionals/test/unit/i18n_test.rb
Executable file
50
plugins/additionals/test/unit/i18n_test.rb
Executable file
|
@ -0,0 +1,50 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class I18nTest < Additionals::TestCase
|
||||
include Redmine::I18n
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def teardown
|
||||
set_language_if_valid 'en'
|
||||
end
|
||||
|
||||
def test_valid_languages
|
||||
assert valid_languages.is_a?(Array)
|
||||
assert valid_languages.first.is_a?(Symbol)
|
||||
end
|
||||
|
||||
def test_locales_validness
|
||||
lang_files_count = Dir[Rails.root.join('plugins',
|
||||
'additionals',
|
||||
'config',
|
||||
'locales',
|
||||
'*.yml')].size
|
||||
assert_equal 8, lang_files_count
|
||||
valid_languages.each do |lang|
|
||||
assert set_language_if_valid(lang)
|
||||
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
|
||||
end
|
105
plugins/additionals/test/unit/issue_test.rb
Executable file
105
plugins/additionals/test/unit/issue_test.rb
Executable file
|
@ -0,0 +1,105 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class IssueTest < 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,
|
||||
:time_entries
|
||||
|
||||
include Redmine::I18n
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
set_language_if_valid 'en'
|
||||
end
|
||||
|
||||
def teardown
|
||||
User.current = nil
|
||||
end
|
||||
|
||||
def test_create
|
||||
issue = Issue.new(project_id: 1, tracker_id: 1, author_id: 3, subject: 'test_create')
|
||||
assert issue.save
|
||||
assert_equal issue.tracker.default_status, issue.status
|
||||
assert_nil issue.description
|
||||
end
|
||||
|
||||
def test_change_open_issue
|
||||
with_additionals_settings(issue_freezed_with_close: 1) do
|
||||
User.current = users(:users_003)
|
||||
issue = issues(:issues_007)
|
||||
issue.subject = 'Should be be saved'
|
||||
assert issue.save
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_closed_issue_with_permission
|
||||
with_additionals_settings(issue_freezed_with_close: 1) do
|
||||
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)
|
||||
Member.create!(principal: User.current, project_id: project.id, role_ids: [role.id])
|
||||
|
||||
issue = issues(:issues_008)
|
||||
|
||||
issue.subject = 'Should be saved'
|
||||
assert issue.save
|
||||
|
||||
issue.reload
|
||||
assert_equal 'Should be saved', issue.subject
|
||||
end
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
issue.subject = 'Should be saved'
|
||||
assert issue.save
|
||||
|
||||
issue.reload
|
||||
assert_equal 'Should be saved', issue.subject
|
||||
end
|
||||
end
|
||||
|
||||
def test_auto_assigned_to
|
||||
with_additionals_settings(issue_status_change: '0',
|
||||
issue_auto_assign: '1',
|
||||
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 issue.save
|
||||
assert_equal 2, issue.assigned_to_id
|
||||
end
|
||||
end
|
||||
|
||||
def test_disabled_auto_assigned_to
|
||||
with_additionals_settings(issue_status_change: '0',
|
||||
issue_auto_assign: '0',
|
||||
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 issue.save
|
||||
assert_nil issue.assigned_to_id
|
||||
end
|
||||
end
|
||||
end
|
50
plugins/additionals/test/unit/query_test.rb
Executable file
50
plugins/additionals/test/unit/query_test.rb
Executable file
|
@ -0,0 +1,50 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class QueryTest < Additionals::TestCase
|
||||
fixtures :projects, :users, :members, :member_roles, :roles,
|
||||
:trackers, :projects_trackers,
|
||||
:enabled_modules,
|
||||
:roles
|
||||
|
||||
def setup
|
||||
prepare_query_tests
|
||||
end
|
||||
|
||||
def test_issue_query_principals_with_hide
|
||||
User.current = @user_with_hide
|
||||
query = IssueQuery.new(project: @project, name: '_')
|
||||
|
||||
# show all members + current user of hidden role
|
||||
assert_equal 3, query.principals.count
|
||||
end
|
||||
|
||||
def test_issue_query_principals_with_show_hide_permission
|
||||
User.current = @user_with_show_hide
|
||||
query = IssueQuery.new(project: @project, name: '_')
|
||||
|
||||
# show all members with 2 users of hidden role
|
||||
assert_equal 4, query.principals.count
|
||||
end
|
||||
|
||||
def prepare_query_tests
|
||||
@role1 = Role.new(name: 'principal test hide1', users_visibility: 'members_of_visible_projects', hide: true)
|
||||
@role1.add_permission!('view_issues')
|
||||
@role1.save!
|
||||
|
||||
@role2 = Role.new(name: 'principal test hide2', users_visibility: 'members_of_visible_projects', hide: true)
|
||||
@role2.add_permission!('view_issues', 'show_hidden_roles_in_memberbox')
|
||||
@role2.save!
|
||||
|
||||
@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)
|
||||
m.member_roles.build(role_id: @role1.id)
|
||||
m.save!
|
||||
|
||||
@user_with_show_hide = User.generate!(firstname: 'hide2', lastname: 'role')
|
||||
m = Member.new(user_id: @user_with_show_hide.id, project_id: @project.id)
|
||||
m.member_roles.build(role_id: @role2.id)
|
||||
m.save!
|
||||
end
|
||||
end
|
35
plugins/additionals/test/unit/role_test.rb
Executable file
35
plugins/additionals/test/unit/role_test.rb
Executable file
|
@ -0,0 +1,35 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class RoleTest < Additionals::TestCase
|
||||
fixtures :projects, :users, :members, :member_roles, :roles,
|
||||
:trackers, :projects_trackers,
|
||||
:enabled_modules,
|
||||
:roles
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
end
|
||||
|
||||
def test_create
|
||||
role = Role.new(name: 'role without hide')
|
||||
assert role.save
|
||||
|
||||
role.reload
|
||||
assert_equal false, role.hide
|
||||
|
||||
role = Role.new(name: 'role with hide', hide: true)
|
||||
assert role.save
|
||||
|
||||
role.reload
|
||||
assert_equal true, role.hide
|
||||
end
|
||||
|
||||
def test_edit
|
||||
role = roles(:roles_001)
|
||||
role.hide = true
|
||||
assert role.save
|
||||
|
||||
role.reload
|
||||
assert_equal true, role.hide
|
||||
end
|
||||
end
|
65
plugins/additionals/test/unit/time_entry_test.rb
Executable file
65
plugins/additionals/test/unit/time_entry_test.rb
Executable file
|
@ -0,0 +1,65 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class TimeEntryTest < Additionals::TestCase
|
||||
fixtures :issues, :projects, :users, :time_entries,
|
||||
:members, :roles, :member_roles,
|
||||
:trackers, :issue_statuses,
|
||||
:projects_trackers,
|
||||
:journals, :journal_details,
|
||||
:issue_categories, :enumerations,
|
||||
:groups_users,
|
||||
:enabled_modules
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
end
|
||||
|
||||
def teardown
|
||||
User.current = nil
|
||||
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'
|
||||
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')
|
||||
assert_not entry.issue.closed?
|
||||
assert entry.valid?
|
||||
assert entry.save
|
||||
end
|
||||
|
||||
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
|
||||
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)
|
||||
role = Role.create!(name: 'Additionals Tester', permissions: [:log_time_on_closed_issues])
|
||||
Member.where(user_id: User.current).delete_all
|
||||
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')
|
||||
assert entry.issue.closed?
|
||||
assert entry.valid?
|
||||
assert entry.save
|
||||
end
|
||||
end
|
104
plugins/additionals/test/unit/watcher_test.rb
Executable file
104
plugins/additionals/test/unit/watcher_test.rb
Executable file
|
@ -0,0 +1,104 @@
|
|||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class WatcherTest < Additionals::TestCase
|
||||
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles, :enabled_modules,
|
||||
:issues, :issue_statuses, :enumerations, :trackers, :projects_trackers,
|
||||
:boards, :messages,
|
||||
:wikis, :wiki_pages,
|
||||
:watchers
|
||||
|
||||
def setup
|
||||
prepare_tests
|
||||
@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
|
||||
User.current = @author
|
||||
issue = Issue.generate(author_id: @author.id)
|
||||
issue.save
|
||||
assert_equal 0, issue.watchers.count
|
||||
assert_not issue.watched_by?(@author)
|
||||
end
|
||||
end
|
||||
|
||||
def test_new_issue_with_no_autowatch_by_user
|
||||
with_additionals_settings(issue_autowatch_involved: 1) do
|
||||
User.current = @author
|
||||
User.current.pref.update_attribute :autowatch_involved_issue, false
|
||||
|
||||
issue = Issue.generate(author_id: @author.id)
|
||||
issue.save
|
||||
assert_equal 0, issue.watchers.count
|
||||
assert_not issue.watched_by?(@author)
|
||||
end
|
||||
end
|
||||
|
||||
def test_new_issue_with_author_watch_only
|
||||
with_additionals_settings(issue_autowatch_involved: 1) do
|
||||
User.current = @author
|
||||
issue = Issue.generate(author_id: @author.id)
|
||||
issue.save
|
||||
assert_equal 1, issue.watchers.count
|
||||
assert issue.watched_by?(@author)
|
||||
end
|
||||
end
|
||||
|
||||
def test_new_issue_with_author_and_assigned_to_watchers
|
||||
with_additionals_settings(issue_autowatch_involved: 1) do
|
||||
User.current = @author
|
||||
issue = Issue.generate(author_id: @author.id, assigned_to: @assigned_user)
|
||||
issue.save
|
||||
|
||||
assert_equal 2, issue.watchers.count
|
||||
assert issue.watched_by?(@author)
|
||||
assert issue.watched_by?(@assigned_user)
|
||||
end
|
||||
end
|
||||
|
||||
def test_issue_do_not_add_author_with_user_change
|
||||
with_additionals_settings(issue_autowatch_involved: 1) do
|
||||
User.current = @author
|
||||
|
||||
issue = Issue.generate(author_id: @author.id, assigned_to: @assigned_user)
|
||||
issue.save
|
||||
assert_equal 2, issue.watchers.count
|
||||
|
||||
issue.remove_watcher(@author)
|
||||
issue.reload
|
||||
assert_equal 1, issue.watchers.count
|
||||
|
||||
User.current = @changing_user
|
||||
issue.subject = 'Changing....'
|
||||
issue.save
|
||||
|
||||
assert_equal 2, issue.watchers.count
|
||||
assert issue.watched_by?(@changing_user)
|
||||
assert issue.watched_by?(@assigned_user)
|
||||
end
|
||||
end
|
||||
|
||||
def test_issue_do_not_add_assigned_to_with_user_change
|
||||
with_additionals_settings(issue_autowatch_involved: 1) do
|
||||
User.current = @author
|
||||
|
||||
issue = Issue.generate(author_id: @author.id, assigned_to: @assigned_user)
|
||||
issue.save
|
||||
assert_equal 2, issue.watchers.count
|
||||
|
||||
issue.remove_watcher(@assigned_user)
|
||||
issue.reload
|
||||
assert_equal 1, issue.watchers.count
|
||||
|
||||
User.current = @changing_user
|
||||
issue.subject = 'Changing....'
|
||||
issue.save
|
||||
|
||||
assert_equal 2, issue.watchers.count
|
||||
assert issue.watched_by?(@author)
|
||||
assert issue.watched_by?(@changing_user)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue