instructure-active_model-better_errors 1.6.3.rails2

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 (45) hide show
  1. data/.document +5 -0
  2. data/.gitmodules +3 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +18 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +183 -0
  8. data/Rakefile +57 -0
  9. data/VERSION +1 -0
  10. data/active_model-better_errors.gemspec +110 -0
  11. data/lib/active_model/better_errors.rb +17 -0
  12. data/lib/active_model/error_collecting/array_reporter.rb +9 -0
  13. data/lib/active_model/error_collecting/core_ext.rb +6 -0
  14. data/lib/active_model/error_collecting/emulation.rb +65 -0
  15. data/lib/active_model/error_collecting/error_collection.rb +86 -0
  16. data/lib/active_model/error_collecting/error_message.rb +88 -0
  17. data/lib/active_model/error_collecting/error_message_set.rb +33 -0
  18. data/lib/active_model/error_collecting/errors.rb +52 -0
  19. data/lib/active_model/error_collecting/hash_reporter.rb +9 -0
  20. data/lib/active_model/error_collecting/human_array_reporter.rb +9 -0
  21. data/lib/active_model/error_collecting/human_hash_reporter.rb +15 -0
  22. data/lib/active_model/error_collecting/human_message_formatter.rb +72 -0
  23. data/lib/active_model/error_collecting/human_message_reporter.rb +32 -0
  24. data/lib/active_model/error_collecting/machine_array_reporter.rb +19 -0
  25. data/lib/active_model/error_collecting/machine_hash_reporter.rb +22 -0
  26. data/lib/active_model/error_collecting/message_reporter.rb +17 -0
  27. data/lib/active_model/error_collecting/reporter.rb +14 -0
  28. data/lib/active_model/error_collecting.rb +49 -0
  29. data/spec/lib/active_model/better_errors_spec.rb +7 -0
  30. data/spec/lib/active_model/error_collecting/emulation_spec.rb +45 -0
  31. data/spec/lib/active_model/error_collecting/error_collection_spec.rb +205 -0
  32. data/spec/lib/active_model/error_collecting/error_message_set_spec.rb +96 -0
  33. data/spec/lib/active_model/error_collecting/error_message_spec.rb +293 -0
  34. data/spec/lib/active_model/error_collecting/errors_spec.rb +95 -0
  35. data/spec/lib/active_model/error_collecting/human_array_reporter_spec.rb +33 -0
  36. data/spec/lib/active_model/error_collecting/human_hash_reporter_spec.rb +32 -0
  37. data/spec/lib/active_model/error_collecting/human_message_formatter_spec.rb +22 -0
  38. data/spec/lib/active_model/error_collecting/human_message_reporter_spec.rb +61 -0
  39. data/spec/lib/active_model/error_collecting/machine_array_reporter_spec.rb +40 -0
  40. data/spec/lib/active_model/error_collecting/machine_hash_reporter_spec.rb +40 -0
  41. data/spec/lib/active_model/error_collecting_spec.rb +22 -0
  42. data/spec/spec_helper.rb +30 -0
  43. data/spec/support/models.rb +7 -0
  44. data/test/integration.rb +10 -0
  45. metadata +308 -0
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveModel::ErrorCollecting::MachineHashReporter do
4
+ subject(:reporter) { klass.new collection }
5
+ let(:klass) { ActiveModel::ErrorCollecting::MachineHashReporter }
6
+ let(:collection) { ActiveModel::ErrorCollecting::ErrorCollection.new base}
7
+ let(:base) { User.new }
8
+
9
+ describe "#initialize" do
10
+ its(:collection) { should be collection }
11
+ end
12
+
13
+ describe "#base" do
14
+ its(:base) { should be base }
15
+ end
16
+
17
+ describe "#to_hash" do
18
+ subject { reporter.to_hash }
19
+
20
+ before do
21
+ collection[:first_name] << :invalid
22
+ collection[:first_name] << [ :too_short, { count: 3 } ]
23
+ collection[:last_name] << :invalid
24
+ end
25
+
26
+ let(:expected) {{
27
+ first_name: [{
28
+ type: :invalid
29
+ }, {
30
+ type: :too_short,
31
+ options: { count: 3 }
32
+ }],
33
+ last_name: [{
34
+ type: :invalid
35
+ }]
36
+ }}
37
+
38
+ it { should == expected }
39
+ end
40
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveModel::ErrorCollecting do
4
+ describe ".set_reporter" do
5
+ subject { ActiveModel::ErrorCollecting.reporters[name.to_s] }
6
+ before { ActiveModel::ErrorCollecting.set_reporter name, reporter }
7
+ after { ActiveModel::ErrorCollecting.set_reporter name, nil }
8
+ let(:name) { :mock }
9
+ let(:reporter) { Class.new }
10
+ it { should be reporter }
11
+ end
12
+
13
+ describe ".reporters" do
14
+ subject { ActiveModel::ErrorCollecting.reporters }
15
+ let(:expected) {{
16
+ 'message' => ActiveModel::ErrorCollecting::HumanMessageReporter,
17
+ 'array' => ActiveModel::ErrorCollecting::HumanArrayReporter,
18
+ 'hash' => ActiveModel::ErrorCollecting::HumanHashReporter
19
+ }}
20
+ it { should == expected }
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'pry'
5
+
6
+ require 'active_model/better_errors'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ def migrate_test_db
13
+ ActiveRecord::Base.connection.create_table(:users) do |t|
14
+ t.string :first_name
15
+ t.string :last_name
16
+ t.string :email
17
+ end
18
+ ActiveRecord::Base.connection.create_table(:rulers) do |t|
19
+ t.int :length
20
+ end
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.before(:all) do
25
+ ActiveRecord::Base.establish_connection(
26
+ adapter: 'sqlite3',
27
+ database: ':memory:')
28
+ migrate_test_db
29
+ end
30
+ end
@@ -0,0 +1,7 @@
1
+ class User < ActiveRecord::Base
2
+ validates_presence_of :first_name, :last_name, message: "plz...?"
3
+ end
4
+
5
+ class Ruler < ActiveRecord::Base
6
+ validates_numericality_of :length, less_than_or_equal_to: 12, greater_than_or_equal_to: 4
7
+ end
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'active_model/better_errors'
5
+ require 'minitest/unit'
6
+
7
+ MiniTest::Unit::TestCase.add_setup_hook do
8
+ @__old_errors_class = ActiveModel::Errors
9
+ ActiveModel.stubs(:Errors).returns(ActiveModel::ErrorCollecting::Errors)
10
+ end
metadata ADDED
@@ -0,0 +1,308 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: instructure-active_model-better_errors
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.3.rails2
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Aaron Qian
9
+ - Byron Anderson
10
+ - Brian Palmer
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2013-11-08 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activerecord
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.11
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 2.3.11
32
+ - !ruby/object:Gem::Dependency
33
+ name: rake
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 2.12.0
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 2.12.0
64
+ - !ruby/object:Gem::Dependency
65
+ name: pry
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: yard
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rdoc
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: bundler
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: jeweler
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: simplecov
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ - !ruby/object:Gem::Dependency
161
+ name: bcrypt-ruby
162
+ requirement: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: 3.0.0
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 3.0.0
176
+ - !ruby/object:Gem::Dependency
177
+ name: mocha
178
+ requirement: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: 0.12.1
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: 0.12.1
192
+ - !ruby/object:Gem::Dependency
193
+ name: sqlite3
194
+ requirement: !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ - !ruby/object:Gem::Dependency
209
+ name: debugger
210
+ requirement: !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ! '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ! '>='
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ description: ActiveModel::Errors class is not designed for API consumption. This gem
225
+ allows for that while keeping compatibility with existing rails API.
226
+ email:
227
+ - aq1018@gmail.com
228
+ - byronanderson32@gmail.com
229
+ - brianp@instructure.com
230
+ executables: []
231
+ extensions: []
232
+ extra_rdoc_files:
233
+ - LICENSE.txt
234
+ - README.md
235
+ files:
236
+ - .document
237
+ - .gitmodules
238
+ - .rspec
239
+ - .travis.yml
240
+ - Gemfile
241
+ - LICENSE.txt
242
+ - README.md
243
+ - Rakefile
244
+ - VERSION
245
+ - active_model-better_errors.gemspec
246
+ - lib/active_model/better_errors.rb
247
+ - lib/active_model/error_collecting.rb
248
+ - lib/active_model/error_collecting/array_reporter.rb
249
+ - lib/active_model/error_collecting/core_ext.rb
250
+ - lib/active_model/error_collecting/emulation.rb
251
+ - lib/active_model/error_collecting/error_collection.rb
252
+ - lib/active_model/error_collecting/error_message.rb
253
+ - lib/active_model/error_collecting/error_message_set.rb
254
+ - lib/active_model/error_collecting/errors.rb
255
+ - lib/active_model/error_collecting/hash_reporter.rb
256
+ - lib/active_model/error_collecting/human_array_reporter.rb
257
+ - lib/active_model/error_collecting/human_hash_reporter.rb
258
+ - lib/active_model/error_collecting/human_message_formatter.rb
259
+ - lib/active_model/error_collecting/human_message_reporter.rb
260
+ - lib/active_model/error_collecting/machine_array_reporter.rb
261
+ - lib/active_model/error_collecting/machine_hash_reporter.rb
262
+ - lib/active_model/error_collecting/message_reporter.rb
263
+ - lib/active_model/error_collecting/reporter.rb
264
+ - spec/lib/active_model/better_errors_spec.rb
265
+ - spec/lib/active_model/error_collecting/emulation_spec.rb
266
+ - spec/lib/active_model/error_collecting/error_collection_spec.rb
267
+ - spec/lib/active_model/error_collecting/error_message_set_spec.rb
268
+ - spec/lib/active_model/error_collecting/error_message_spec.rb
269
+ - spec/lib/active_model/error_collecting/errors_spec.rb
270
+ - spec/lib/active_model/error_collecting/human_array_reporter_spec.rb
271
+ - spec/lib/active_model/error_collecting/human_hash_reporter_spec.rb
272
+ - spec/lib/active_model/error_collecting/human_message_formatter_spec.rb
273
+ - spec/lib/active_model/error_collecting/human_message_reporter_spec.rb
274
+ - spec/lib/active_model/error_collecting/machine_array_reporter_spec.rb
275
+ - spec/lib/active_model/error_collecting/machine_hash_reporter_spec.rb
276
+ - spec/lib/active_model/error_collecting_spec.rb
277
+ - spec/spec_helper.rb
278
+ - spec/support/models.rb
279
+ - test/integration.rb
280
+ homepage: http://github.com/codekitchen/active_model-better_errors
281
+ licenses:
282
+ - MIT
283
+ post_install_message:
284
+ rdoc_options: []
285
+ require_paths:
286
+ - lib
287
+ required_ruby_version: !ruby/object:Gem::Requirement
288
+ none: false
289
+ requirements:
290
+ - - ! '>='
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ segments:
294
+ - 0
295
+ hash: 1857896897828088317
296
+ required_rubygems_version: !ruby/object:Gem::Requirement
297
+ none: false
298
+ requirements:
299
+ - - ! '>'
300
+ - !ruby/object:Gem::Version
301
+ version: 1.3.1
302
+ requirements: []
303
+ rubyforge_project:
304
+ rubygems_version: 1.8.23
305
+ signing_key:
306
+ specification_version: 3
307
+ summary: API consumable error messages with ActiveModel::Errors drop-in compatibility.
308
+ test_files: []