dm_preferences 0.5.6 → 1.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.
Files changed (60) hide show
  1. checksums.yaml +13 -5
  2. data/.gitignore +2 -0
  3. data/.travis.yml +2 -2
  4. data/{CHANGELOG.rdoc → CHANGELOG.md} +26 -15
  5. data/LICENSE +2 -0
  6. data/{README.rdoc → README.md} +144 -96
  7. data/Rakefile +20 -27
  8. data/dm_preferences.gemspec +7 -5
  9. data/lib/generators/{USAGE → preferences/USAGE} +0 -0
  10. data/lib/generators/{preferences_generator.rb → preferences/preferences_generator.rb} +0 -0
  11. data/lib/generators/{templates → preferences/templates}/create_preferences.rb +5 -1
  12. data/lib/preferences.rb +33 -10
  13. data/lib/preferences/engine.rb +2 -1
  14. data/lib/preferences/preference_definition.rb +15 -4
  15. data/lib/preferences/version.rb +1 -1
  16. data/spec/dummy/Rakefile +6 -0
  17. data/spec/dummy/app/models/.keep +0 -0
  18. data/{test/app_root → spec/dummy}/app/models/car.rb +0 -0
  19. data/{test/app_root → spec/dummy}/app/models/employee.rb +0 -0
  20. data/{test/app_root → spec/dummy}/app/models/manager.rb +0 -0
  21. data/{test/app_root → spec/dummy}/app/models/user.rb +0 -0
  22. data/spec/dummy/bin/bundle +3 -0
  23. data/spec/dummy/bin/rails +4 -0
  24. data/spec/dummy/bin/rake +4 -0
  25. data/spec/dummy/bin/setup +29 -0
  26. data/spec/dummy/config.ru +4 -0
  27. data/spec/dummy/config/application.rb +32 -0
  28. data/spec/dummy/config/boot.rb +5 -0
  29. data/spec/dummy/config/database.yml +25 -0
  30. data/spec/dummy/config/environment.rb +5 -0
  31. data/spec/dummy/config/environments/development.rb +41 -0
  32. data/spec/dummy/config/environments/production.rb +79 -0
  33. data/spec/dummy/config/environments/test.rb +42 -0
  34. data/spec/dummy/config/initializers/assets.rb +11 -0
  35. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  36. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  37. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  38. data/spec/dummy/config/initializers/inflections.rb +16 -0
  39. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  40. data/spec/dummy/config/initializers/session_store.rb +3 -0
  41. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  42. data/spec/dummy/config/locales/en.yml +23 -0
  43. data/spec/dummy/config/routes.rb +56 -0
  44. data/spec/dummy/config/secrets.yml +22 -0
  45. data/{test/app_root → spec/dummy}/db/migrate/001_create_users.rb +0 -0
  46. data/{test/app_root → spec/dummy}/db/migrate/002_create_cars.rb +0 -0
  47. data/{test/app_root → spec/dummy}/db/migrate/003_create_employees.rb +0 -0
  48. data/spec/dummy/db/migrate/004_create_preferences.rb +16 -0
  49. data/spec/dummy/db/schema.rb +42 -0
  50. data/spec/functional/preferences_spec.rb +1427 -0
  51. data/spec/spec_helper.rb +20 -0
  52. data/spec/support/assert_queries.rb +36 -0
  53. data/{test → spec/support}/factory.rb +1 -1
  54. data/spec/unit/preference_definition_spec.rb +249 -0
  55. data/{test/unit/preference_test.rb → spec/unit/preference_spec.rb} +114 -122
  56. metadata +127 -53
  57. data/test/app_root/db/migrate/004_migrate_preferences_to_version_1.rb +0 -13
  58. data/test/functional/preferences_test.rb +0 -1387
  59. data/test/test_helper.rb +0 -26
  60. data/test/unit/preference_definition_test.rb +0 -237
data/test/test_helper.rb DELETED
@@ -1,26 +0,0 @@
1
- # Load the plugin testing framework
2
- $:.unshift("#{File.dirname(__FILE__)}/../../plugin_test_helper/lib")
3
- require 'rubygems'
4
- require 'plugin_test_helper'
5
-
6
- # Run the migrations
7
- ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
8
-
9
- # Mixin the factory helper
10
- require File.expand_path("#{File.dirname(__FILE__)}/factory")
11
- Test::Unit::TestCase.class_eval do
12
- include Factory
13
- end
14
-
15
- # Add query counter
16
- ActiveRecord::Base.connection.class.class_eval do
17
- IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/, /^SAVEPOINT/, /^ROLLBACK TO SAVEPOINT/, /^RELEASE SAVEPOINT/, /SHOW FIELDS/]
18
-
19
- def execute_with_query_record(sql, name = nil, &block)
20
- $queries_executed ||= []
21
- $queries_executed << sql unless IGNORED_SQL.any? { |r| sql =~ r }
22
- execute_without_query_record(sql, name, &block)
23
- end
24
-
25
- alias_method_chain :execute, :query_record
26
- end
@@ -1,237 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
-
3
- class PreferenceDefinitionByDefaultTest < ActiveSupport::TestCase
4
- def setup
5
- @definition = Preferences::PreferenceDefinition.new(:notifications)
6
- end
7
-
8
- def test_should_have_a_name
9
- assert_equal 'notifications', @definition.name
10
- end
11
-
12
- def test_should_not_have_a_default_value
13
- assert_nil @definition.default_value
14
- end
15
-
16
- def test_should_have_a_type
17
- assert_equal :boolean, @definition.type
18
- end
19
-
20
- def test_should_type_cast_values_as_booleans
21
- assert_equal nil, @definition.type_cast(nil)
22
- assert_equal true, @definition.type_cast(true)
23
- assert_equal false, @definition.type_cast(false)
24
- assert_equal false, @definition.type_cast(0)
25
- assert_equal true, @definition.type_cast(1)
26
- end
27
- end
28
-
29
- class PreferenceDefinitionTest < ActiveSupport::TestCase
30
- def test_should_raise_exception_if_invalid_option_specified
31
- assert_raise(ArgumentError) {Preferences::PreferenceDefinition.new(:notifications, :invalid => true)}
32
- end
33
- end
34
-
35
- class PreferenceDefinitionWithDefaultValueTest < ActiveSupport::TestCase
36
- def setup
37
- @definition = Preferences::PreferenceDefinition.new(:notifications, :boolean, :default => 1)
38
- end
39
-
40
- def test_should_type_cast_default_values
41
- assert_equal true, @definition.default_value
42
- end
43
- end
44
-
45
- class PreferenceDefinitionWithGroupDefaultsTest < ActiveSupport::TestCase
46
- def setup
47
- @definition = Preferences::PreferenceDefinition.new(:notifications, :boolean, :default => 1, :group_defaults => {:chat => 0})
48
- end
49
-
50
- def test_should_use_default_for_default_group
51
- assert_equal true, @definition.default_value
52
- end
53
-
54
- def test_should_use_default_for_unknown_group
55
- assert_equal true, @definition.default_value('email')
56
- end
57
-
58
- def test_should_use_group_default_for_known_group
59
- assert_equal false, @definition.default_value('chat')
60
- end
61
- end
62
-
63
- class PreferenceDefinitionWithStringifiedTypeTest < ActiveSupport::TestCase
64
- def setup
65
- @definition = Preferences::PreferenceDefinition.new(:notifications, 'any')
66
- end
67
-
68
- def test_should_symbolize_type
69
- assert_equal :any, @definition.type
70
- end
71
- end
72
-
73
- class PreferenceDefinitionWithAnyTypeTest < ActiveSupport::TestCase
74
- def setup
75
- @definition = Preferences::PreferenceDefinition.new(:notifications, :any)
76
- end
77
-
78
- def test_use_custom_type
79
- assert_equal :any, @definition.type
80
- end
81
-
82
- def test_should_not_be_number
83
- assert !@definition.number?
84
- end
85
-
86
- def test_should_not_type_cast
87
- assert_equal nil, @definition.type_cast(nil)
88
- assert_equal 0, @definition.type_cast(0)
89
- assert_equal 1, @definition.type_cast(1)
90
- assert_equal false, @definition.type_cast(false)
91
- assert_equal true, @definition.type_cast(true)
92
- assert_equal '', @definition.type_cast('')
93
- end
94
-
95
- def test_should_query_false_if_value_is_nil
96
- assert_equal false, @definition.query(nil)
97
- end
98
-
99
- def test_should_query_true_if_value_is_zero
100
- assert_equal true, @definition.query(0)
101
- end
102
-
103
- def test_should_query_true_if_value_is_not_zero
104
- assert_equal true, @definition.query(1)
105
- assert_equal true, @definition.query(-1)
106
- end
107
-
108
- def test_should_query_false_if_value_is_blank
109
- assert_equal false, @definition.query('')
110
- end
111
-
112
- def test_should_query_true_if_value_is_not_blank
113
- assert_equal true, @definition.query('hello')
114
- end
115
- end
116
-
117
- class PreferenceDefinitionWithBooleanTypeTest < ActiveSupport::TestCase
118
- def setup
119
- @definition = Preferences::PreferenceDefinition.new(:notifications)
120
- end
121
-
122
- def test_should_not_be_number
123
- assert !@definition.number?
124
- end
125
-
126
- def test_should_not_type_cast_if_value_is_nil
127
- assert_equal nil, @definition.type_cast(nil)
128
- end
129
-
130
- def test_should_type_cast_to_false_if_value_is_zero
131
- assert_equal false, @definition.type_cast(0)
132
- end
133
-
134
- def test_should_type_cast_to_true_if_value_is_not_zero
135
- assert_equal true, @definition.type_cast(1)
136
- end
137
-
138
- def test_should_type_cast_to_true_if_value_is_true_string
139
- assert_equal true, @definition.type_cast('true')
140
- end
141
-
142
- def test_should_type_cast_to_nil_if_value_is_not_true_string
143
- assert_nil @definition.type_cast('')
144
- end
145
-
146
- def test_should_query_false_if_value_is_nil
147
- assert_equal false, @definition.query(nil)
148
- end
149
-
150
- def test_should_query_true_if_value_is_one
151
- assert_equal true, @definition.query(1)
152
- end
153
-
154
- def test_should_query_false_if_value_not_one
155
- assert_equal false, @definition.query(0)
156
- end
157
-
158
- def test_should_query_true_if_value_is_true_string
159
- assert_equal true, @definition.query('true')
160
- end
161
-
162
- def test_should_query_false_if_value_is_not_true_string
163
- assert_equal false, @definition.query('')
164
- end
165
- end
166
-
167
- class PreferenceDefinitionWithNumericTypeTest < ActiveSupport::TestCase
168
- def setup
169
- @definition = Preferences::PreferenceDefinition.new(:notifications, :integer)
170
- end
171
-
172
- def test_should_be_number
173
- assert @definition.number?
174
- end
175
-
176
- def test_should_type_cast_true_to_integer
177
- assert_equal 1, @definition.type_cast(true)
178
- end
179
-
180
- def test_should_type_cast_false_to_integer
181
- assert_equal 0, @definition.type_cast(false)
182
- end
183
-
184
- def test_should_type_cast_string_to_integer
185
- assert_equal 0, @definition.type_cast('hello')
186
- end
187
-
188
- def test_should_query_false_if_value_is_nil
189
- assert_equal false, @definition.query(nil)
190
- end
191
-
192
- def test_should_query_true_if_value_is_one
193
- assert_equal true, @definition.query(1)
194
- end
195
-
196
- def test_should_query_false_if_value_is_zero
197
- assert_equal false, @definition.query(0)
198
- end
199
- end
200
-
201
- class PreferenceDefinitionWithStringTypeTest < ActiveSupport::TestCase
202
- def setup
203
- @definition = Preferences::PreferenceDefinition.new(:notifications, :string)
204
- end
205
-
206
- def test_should_not_be_number
207
- assert !@definition.number?
208
- end
209
-
210
- def test_should_type_cast_integers_to_strings
211
- assert_equal '1', @definition.type_cast('1')
212
- end
213
-
214
- def test_should_not_type_cast_booleans
215
- assert_equal true, @definition.type_cast(true)
216
- end
217
-
218
- def test_should_query_false_if_value_is_nil
219
- assert_equal false, @definition.query(nil)
220
- end
221
-
222
- def test_should_query_true_if_value_is_one
223
- assert_equal true, @definition.query(1)
224
- end
225
-
226
- def test_should_query_true_if_value_is_zero
227
- assert_equal true, @definition.query(0)
228
- end
229
-
230
- def test_should_query_false_if_value_is_blank
231
- assert_equal false, @definition.query('')
232
- end
233
-
234
- def test_should_query_true_if_value_is_not_blank
235
- assert_equal true, @definition.query('hello')
236
- end
237
- end