1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# frozen_string_literal: true
# Redmine - project management software
# Copyright (C) 2006-2023 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../test_helper', __FILE__)
class UserPreferenceTest < ActiveSupport::TestCase
fixtures :users, :user_preferences
def setup
User.current = nil
end
def test_hide_mail_should_default_to_true
preference = UserPreference.new
assert_equal true, preference.hide_mail
end
def test_hide_mail_should_default_to_false_with_setting
with_settings :default_users_hide_mail => '0' do
preference = UserPreference.new
assert_equal false, preference.hide_mail
end
end
def test_time_zone_should_default_to_setting
with_settings :default_users_time_zone => 'Paris' do
preference = UserPreference.new
assert_equal 'Paris', preference.time_zone
end
end
def test_no_self_notified_should_default_to_true
preference = UserPreference.new
assert_equal true, preference.no_self_notified
end
def test_no_self_notified_should_default_to_setting
with_settings :default_users_no_self_notified => '0' do
preference = UserPreference.new
assert_equal false, preference.no_self_notified
end
end
def test_auto_watch_on_should_default_to_setting
preference = UserPreference.new
assert_equal ['issue_contributed_to'], preference.auto_watch_on
end
def test_create
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
user.login = "newuser"
user.password, user.password_confirmation = "password", "password"
assert user.save
assert_kind_of UserPreference, user.pref
assert_kind_of Hash, user.pref.others
assert user.pref.save
end
def test_update
user = User.find(1)
assert_equal true, user.pref.hide_mail
user.pref['preftest'] = 'value'
assert user.pref.save
user.reload
assert_equal 'value', user.pref['preftest']
end
def test_others_hash
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
user.login = "newuser"
user.password, user.password_confirmation = "password", "password"
assert user.save
assert_nil user.preference
up = UserPreference.new(:user => user)
assert_kind_of Hash, up.others
up.others = nil
assert_nil up.others
assert up.save
assert_kind_of Hash, up.others
end
def test_reading_value_from_nil_others_hash
up = UserPreference.new(:user => User.new)
up.others = nil
assert_nil up.others
assert_nil up[:foo]
end
def test_writing_value_to_nil_others_hash
up = UserPreference.new(:user => User.new)
up.others = nil
assert_nil up.others
up[:foo] = 'bar'
assert_equal 'bar', up[:foo]
end
def test_removing_a_block_should_clear_its_settings
up = User.find(2).pref
up.my_page_layout = {'top' => ['news', 'documents']}
up.my_page_settings = {'news' => {:foo => 'bar'}, 'documents' => {:baz => 'quz'}}
up.save!
up.remove_block 'news'
up.save!
assert_equal ['documents'], up.my_page_settings.keys
end
def test_toolbar_language_options_setter_should_remove_except_supported_languages
up = User.find(2).pref
# bar is not a supported language
up.toolbar_language_options = 'ruby,cpp,bar,c'
assert_equal 'ruby,cpp,c', up.toolbar_language_options
end
end
|