ledermann-rails-settings 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,252 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SettingsTest < Test::Unit::TestCase
4
- setup_db
5
-
6
- def setup
7
- Settings.create!(:var => 'test', :value => 'foo')
8
- Settings.create!(:var => 'test2', :value => 'bar')
9
-
10
- # Reset defaults
11
- Settings.defaults = {}.with_indifferent_access
12
- end
13
-
14
- def teardown
15
- User.delete_all
16
- Settings.delete_all
17
- end
18
-
19
- def test_defaults
20
- Settings.defaults[:foo] = 'default foo'
21
-
22
- assert_nil Settings.target(:foo)
23
- assert_equal 'default foo', Settings.foo
24
-
25
- Settings.foo = 'bar'
26
- assert_equal 'bar', Settings.foo
27
- assert_not_nil Settings.target(:foo)
28
- end
29
-
30
- def tests_defaults_true
31
- Settings.defaults[:foo] = true
32
- assert_equal true, Settings.foo
33
- end
34
-
35
- def tests_defaults_false
36
- Settings.defaults[:foo] = false
37
- assert_equal false, Settings.foo
38
- end
39
-
40
- def test_get
41
- assert_setting 'foo', :test
42
- assert_setting 'bar', :test2
43
- end
44
-
45
- def test_update
46
- assert_assign_setting '321', :test
47
- end
48
-
49
- def test_create
50
- assert_assign_setting '123', :onetwothree
51
- end
52
-
53
- def test_complex_serialization
54
- complex = [1, '2', {:three => true}]
55
- Settings.complex = complex
56
- assert_equal complex, Settings.complex
57
- end
58
-
59
- def test_serialization_of_float
60
- Settings.float = 0.01
61
- Settings.reload
62
- assert_equal 0.01, Settings.float
63
- assert_equal 0.02, Settings.float * 2
64
- end
65
-
66
- def test_target_scope
67
- user1 = User.create! :name => 'First user'
68
- user2 = User.create! :name => 'Second user'
69
-
70
- assert_assign_setting 1, :one, user1
71
- assert_assign_setting 2, :two, user2
72
-
73
- assert_setting 1, :one, user1
74
- assert_setting 2, :two, user2
75
-
76
- assert_setting nil, :one
77
- assert_setting nil, :two
78
-
79
- assert_setting nil, :two, user1
80
- assert_setting nil, :one, user2
81
-
82
- assert_equal({ "one" => 1}, user1.settings.all('one'))
83
- assert_equal({ "two" => 2}, user2.settings.all('two'))
84
- assert_equal({ "one" => 1}, user1.settings.all('o'))
85
- assert_equal({}, user1.settings.all('non_existing_var'))
86
- end
87
-
88
- def test_named_scope
89
- user_without_settings = User.create! :name => 'User without settings'
90
- user_with_settings = User.create! :name => 'User with settings'
91
- user_with_settings.settings.one = '1'
92
- user_with_settings.settings.two = '2'
93
-
94
- assert_equal [user_with_settings], User.with_settings
95
- assert_equal [user_with_settings], User.with_settings_for('one')
96
- assert_equal [user_with_settings], User.with_settings_for('two')
97
- assert_equal [], User.with_settings_for('foo')
98
-
99
- assert_equal [user_without_settings], User.without_settings
100
- assert_equal [user_without_settings], User.without_settings_for('one')
101
- assert_equal [user_without_settings], User.without_settings_for('two')
102
- assert_equal [user_without_settings, user_with_settings], User.without_settings_for('foo')
103
- end
104
-
105
- def test_delete_settings_after_destroying_target
106
- user1 = User.create! :name => 'Mr. Foo'
107
- user2 = User.create! :name => 'Mr. Bar'
108
- user1.settings.example = 42
109
- user2.settings.example = 43
110
-
111
- before_count = Settings.count
112
- user1.destroy
113
- assert_equal before_count - 1, Settings.count
114
-
115
- before_count = Settings.count
116
- user2.destroy
117
- assert_equal before_count - 1, Settings.count
118
- end
119
-
120
- def test_all
121
- assert_equal({ "test2" => "bar", "test" => "foo" }, Settings.all)
122
- assert_equal({ "test2" => "bar" }, Settings.all('test2'))
123
- assert_equal({ "test2" => "bar", "test" => "foo" }, Settings.all('test'))
124
- assert_equal({}, Settings.all('non_existing_var'))
125
- end
126
-
127
- def test_merge
128
- assert_raise(TypeError) do
129
- Settings.merge! :test, { :a => 1 }
130
- end
131
-
132
- Settings[:hash] = { :one => 1 }
133
- Settings.merge! :hash, { :two => 2 }
134
- assert_equal({ :one => 1, :two => 2 }, Settings[:hash])
135
-
136
- assert_raise(ArgumentError) do
137
- Settings.merge! :hash, 123
138
- end
139
-
140
- Settings.merge! :empty_hash, { :two => 2 }
141
- assert_equal({ :two => 2 }, Settings[:empty_hash])
142
- end
143
-
144
- def test_destroy
145
- Settings.destroy :test
146
- assert_equal nil, Settings.test
147
-
148
- assert_raise(Settings::SettingNotFound) do
149
- Settings.destroy :unknown
150
- end
151
- end
152
-
153
- def test_false
154
- Settings.test3 = false
155
- assert_setting(false, 'test3')
156
-
157
- Settings.destroy :test3
158
- assert_setting(nil, 'test3')
159
- end
160
-
161
- def test_class_level_settings
162
- assert_equal User.settings.name, "ScopedSettings"
163
- end
164
-
165
- def test_object_inherits_class_settings_before_default
166
- Settings.defaults[:foo] = 'global default'
167
- User.settings.foo = 'model default'
168
-
169
- user = User.create! :name => 'Dwight'
170
-
171
- assert_equal user.settings.foo, 'model default'
172
- assert_equal 'global default', Settings.foo
173
- end
174
-
175
- def test_class_inherits_default_settings
176
- Settings.defaults[:foo] = 'bar'
177
- assert_equal User.settings.foo, 'bar'
178
- end
179
-
180
- def test_sets_settings_with_hash
181
- user = User.create! :name => 'Mr. Foo'
182
- user.settings[:one] = '1'
183
- user.settings[:two] = '2'
184
- user.settings = { :two => '2a', :three => '3' }
185
-
186
- assert_equal '1', user.settings[:one] # ensure existing settings remain intact
187
- assert_equal '2a', user.settings[:two] # ensure settings are properly overwritten
188
- assert_equal '3', user.settings[:three] # ensure new setting are created
189
- end
190
-
191
- def test_all_includes_defaults
192
- Settings.defaults[:foo] = 'bar'
193
- user = User.create! :name => 'Mr. Foo'
194
- assert_equal({ 'foo' => 'bar' }, user.settings.all)
195
- end
196
-
197
- private
198
- def assert_setting(value, key, scope_target=nil)
199
- key = key.to_sym
200
-
201
- if scope_target
202
- assert_equal value, scope_target.instance_eval("settings.#{key}")
203
- assert_equal value, scope_target.settings[key.to_sym]
204
- assert_equal value, scope_target.settings[key.to_s]
205
- else
206
- assert_equal value, eval("Settings.#{key}")
207
- assert_equal value, Settings[key.to_sym]
208
- assert_equal value, Settings[key.to_s]
209
- end
210
- end
211
-
212
- def assert_assign_setting(value, key, scope_target=nil)
213
- key = key.to_sym
214
-
215
- if scope_target
216
- assert_equal value, (scope_target.settings[key] = value)
217
- assert_setting value, key, scope_target
218
- scope_target.settings[key] = nil
219
-
220
- assert_equal value, (scope_target.settings[key.to_s] = value)
221
- assert_setting value, key, scope_target
222
- else
223
- assert_equal value, (Settings[key] = value)
224
- assert_setting value, key
225
- Settings[key] = nil
226
-
227
- assert_equal value, (Settings[key.to_s] = value)
228
- assert_setting value, key
229
- end
230
- end
231
- end
232
-
233
- class CachedSettingsTest < SettingsTest
234
- def setup
235
- Settings.cache = ActiveSupport::Cache::MemoryStore.new
236
- Settings.cache_options = { :expires_in => 5.minutes }
237
- super
238
- end
239
-
240
- def test_caching_is_in_place
241
- Settings.progress = "boing"
242
- Settings.connection.execute("delete from settings")
243
- assert_equal "boing", Settings.progress
244
- Settings.cache.clear
245
- assert_nil Settings.progress
246
- end
247
-
248
- def teardown
249
- Settings.cache.clear
250
- super
251
- end
252
- end
data/test/test_helper.rb DELETED
@@ -1,34 +0,0 @@
1
- require 'rubygems'
2
-
3
- require 'active_support'
4
- require 'active_support/test_case'
5
- require 'active_record'
6
- require 'test/unit'
7
-
8
- require "#{File.dirname(__FILE__)}/../init"
9
-
10
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
11
- ActiveRecord::Migration.verbose = false
12
-
13
- class User < ActiveRecord::Base
14
- has_settings
15
- end
16
-
17
- def setup_db
18
- ActiveRecord::Schema.define(:version => 1) do
19
- create_table :settings do |t|
20
- t.string :var, :null => false
21
- t.text :value, :null => true
22
- t.integer :target_id, :null => true
23
- t.string :target_type, :limit => 30, :null => true
24
- t.timestamps
25
- end
26
- add_index :settings, [ :target_type, :target_id, :var ], :unique => true
27
-
28
- create_table :users do |t|
29
- t.string :name
30
- end
31
- end
32
- end
33
-
34
- puts "Testing with ActiveRecord #{ActiveRecord::VERSION::STRING}"