active_model-better_errors 1.6.3 → 1.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +37 -0
  3. data/.rspec +4 -1
  4. data/.ruby-gemset +1 -0
  5. data/.travis.yml +5 -1
  6. data/Gemfile +9 -13
  7. data/Gemfile.devtools +66 -0
  8. data/Guardfile +32 -0
  9. data/LICENSE.txt +2 -0
  10. data/README.md +12 -10
  11. data/Rakefile +20 -49
  12. data/active_model-better_errors.gemspec +27 -107
  13. data/config/devtools.yml +4 -0
  14. data/config/flay.yml +3 -0
  15. data/config/flog.yml +2 -0
  16. data/config/mutant.yml +3 -0
  17. data/config/reek.yml +103 -0
  18. data/config/rubocop.yml +62 -0
  19. data/config/yardstick.yml +2 -0
  20. data/lib/active_model/better_errors.rb +64 -4
  21. data/lib/active_model/better_errors/array_reporter.rb +14 -0
  22. data/lib/active_model/{error_collecting → better_errors}/emulation.rb +15 -8
  23. data/lib/active_model/{error_collecting → better_errors}/error_collection.rb +14 -6
  24. data/lib/active_model/{error_collecting → better_errors}/error_message.rb +16 -5
  25. data/lib/active_model/{error_collecting → better_errors}/error_message_set.rb +7 -2
  26. data/lib/active_model/{error_collecting → better_errors}/errors.rb +10 -3
  27. data/lib/active_model/better_errors/formatter.rb +26 -0
  28. data/lib/active_model/better_errors/hash_reporter.rb +14 -0
  29. data/lib/active_model/{error_collecting → better_errors}/human_array_reporter.rb +6 -1
  30. data/lib/active_model/{error_collecting → better_errors}/human_hash_reporter.rb +8 -3
  31. data/lib/active_model/better_errors/human_message_formatter.rb +66 -0
  32. data/lib/active_model/{error_collecting → better_errors}/human_message_reporter.rb +19 -12
  33. data/lib/active_model/{error_collecting → better_errors}/machine_array_reporter.rb +10 -2
  34. data/lib/active_model/{error_collecting → better_errors}/machine_hash_reporter.rb +10 -3
  35. data/lib/active_model/{error_collecting → better_errors}/message_reporter.rb +10 -5
  36. data/lib/active_model/{error_collecting → better_errors}/reporter.rb +7 -2
  37. data/lib/active_model/better_errors/version.rb +10 -0
  38. data/spec/spec_helper.rb +19 -10
  39. data/spec/support/i18n_deprecation_silence.rb +4 -0
  40. data/spec/support/models.rb +11 -4
  41. data/spec/support/string_ext.rb +14 -0
  42. data/spec/{lib/active_model/error_collecting → unit/lib/active_model/better_errors}/emulation_spec.rb +8 -6
  43. data/spec/{lib/active_model/error_collecting → unit/lib/active_model/better_errors}/error_collection_spec.rb +66 -62
  44. data/spec/{lib/active_model/error_collecting → unit/lib/active_model/better_errors}/error_message_set_spec.rb +27 -25
  45. data/spec/unit/lib/active_model/better_errors/error_message_spec.rb +315 -0
  46. data/spec/unit/lib/active_model/better_errors/errors_spec.rb +98 -0
  47. data/spec/unit/lib/active_model/better_errors/human_array_reporter_spec.rb +39 -0
  48. data/spec/unit/lib/active_model/better_errors/human_hash_reporter_spec.rb +37 -0
  49. data/spec/{lib/active_model/error_collecting → unit/lib/active_model/better_errors}/human_message_formatter_spec.rb +13 -7
  50. data/spec/unit/lib/active_model/better_errors/human_message_reporter_spec.rb +65 -0
  51. data/spec/unit/lib/active_model/better_errors/machine_array_reporter_spec.rb +45 -0
  52. data/spec/unit/lib/active_model/better_errors/machine_hash_reporter_spec.rb +45 -0
  53. data/spec/unit/lib/active_model/better_errors_spec.rb +37 -0
  54. metadata +98 -143
  55. data/.document +0 -5
  56. data/VERSION +0 -1
  57. data/lib/active_model/error_collecting.rb +0 -49
  58. data/lib/active_model/error_collecting/array_reporter.rb +0 -9
  59. data/lib/active_model/error_collecting/core_ext.rb +0 -6
  60. data/lib/active_model/error_collecting/hash_reporter.rb +0 -9
  61. data/lib/active_model/error_collecting/human_message_formatter.rb +0 -58
  62. data/spec/lib/active_model/better_errors_spec.rb +0 -7
  63. data/spec/lib/active_model/error_collecting/error_message_spec.rb +0 -293
  64. data/spec/lib/active_model/error_collecting/errors_spec.rb +0 -95
  65. data/spec/lib/active_model/error_collecting/human_array_reporter_spec.rb +0 -33
  66. data/spec/lib/active_model/error_collecting/human_hash_reporter_spec.rb +0 -32
  67. data/spec/lib/active_model/error_collecting/human_message_reporter_spec.rb +0 -61
  68. data/spec/lib/active_model/error_collecting/machine_array_reporter_spec.rb +0 -40
  69. data/spec/lib/active_model/error_collecting/machine_hash_reporter_spec.rb +0 -40
  70. data/spec/lib/active_model/error_collecting_spec.rb +0 -22
  71. data/test/integration.rb +0 -10
@@ -1,95 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveModel::ErrorCollecting::Errors do
4
- subject(:instance) { klass.new base }
5
- let(:klass) { ActiveModel::ErrorCollecting::Errors }
6
- let(:base) { User.new }
7
- let(:reporter_name) { :mock }
8
- let(:mock_reporter) {
9
- Class.new do
10
- def initialize(collection)
11
- end
12
- end
13
- }
14
-
15
- describe "#initialize" do
16
- its(:base) { should be base }
17
- end
18
-
19
- describe "#error_collection" do
20
- subject { instance.error_collection }
21
- it { should be_a ActiveModel::ErrorCollecting::ErrorCollection }
22
- its(:base) { should be base }
23
- end
24
-
25
- describe "#message_reporter" do
26
- subject { instance.message_reporter }
27
- let(:mock_reporter) { mock() }
28
- before {
29
- instance.
30
- should_receive(:get_reporter).
31
- with(:message).
32
- and_return(mock_reporter)
33
- }
34
-
35
- it { should be mock_reporter }
36
- end
37
-
38
- describe "#hash_reporter" do
39
- subject { instance.hash_reporter }
40
- let(:mock_reporter) { mock() }
41
- before {
42
- instance.
43
- should_receive(:get_reporter).
44
- with(:hash).
45
- and_return(mock_reporter)
46
- }
47
-
48
- it { should be mock_reporter }
49
- end
50
-
51
- describe "#array_reporter" do
52
- subject { instance.array_reporter }
53
- let(:mock_reporter) { mock() }
54
- before {
55
- instance.
56
- should_receive(:get_reporter).
57
- with(:array).
58
- and_return(mock_reporter)
59
- }
60
-
61
- it { should be mock_reporter }
62
- end
63
-
64
- describe "#set_reporter" do
65
- it "should set the reporter class" do
66
- instance.set_reporter reporter_name, mock_reporter
67
- reporter_classes = instance.instance_variable_get(:@reporter_classes)
68
- reporter_classes[reporter_name.to_s].should == mock_reporter
69
- end
70
-
71
- it "should delete old reporter instance" do
72
- reporters = instance.instance_variable_get(:@reporters)
73
- reporters[reporter_name] = mock()
74
- instance.set_reporter reporter_name, mock_reporter
75
- reporters.has_key?(reporter_name.to_s).should be false
76
- end
77
- end
78
-
79
- describe "#get_reporter_class" do
80
- subject { instance.get_reporter_class(reporter_name) }
81
- before { instance.set_reporter reporter_name, mock_reporter }
82
- it { should == mock_reporter }
83
- end
84
-
85
- describe "#get_reporter" do
86
- subject { instance.get_reporter(reporter_name) }
87
- before { instance.set_reporter reporter_name, mock_reporter }
88
- it { should be_a mock_reporter }
89
- end
90
-
91
- describe "#reporter_classes" do
92
- subject { instance.reporter_classes }
93
- it { should == ::ActiveModel::ErrorCollecting.reporters }
94
- end
95
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveModel::ErrorCollecting::HumanArrayReporter do
4
- subject(:reporter) { klass.new collection }
5
- let(:klass) { ActiveModel::ErrorCollecting::HumanArrayReporter }
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_a" do
18
- subject { reporter.to_a }
19
- let(:expected) { ['foo', 'bar'] }
20
- before do
21
- message_reporter = mock()
22
- ActiveModel::ErrorCollecting::HumanMessageReporter.
23
- should_receive(:new).
24
- and_return(message_reporter)
25
-
26
- message_reporter.
27
- should_receive(:full_messages).
28
- and_return(expected)
29
- end
30
-
31
- it { should == expected }
32
- end
33
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveModel::ErrorCollecting::HumanHashReporter do
4
- subject(:reporter) { klass.new collection }
5
- let(:klass) { ActiveModel::ErrorCollecting::HumanHashReporter }
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
- let(:expected) {{
20
- first_name: ["is invalid", "can't be empty"],
21
- last_name: ["is invalid"]
22
- }}
23
-
24
- before do
25
- collection[:first_name] << :invalid
26
- collection[:first_name] << :empty
27
- collection[:last_name] << :invalid
28
- end
29
-
30
- it { should == expected }
31
- end
32
- end
@@ -1,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveModel::ErrorCollecting::HumanMessageReporter do
4
- subject(:reporter) { klass.new collection }
5
- let(:klass) { ActiveModel::ErrorCollecting::HumanMessageReporter }
6
- let(:collection) { ActiveModel::ErrorCollecting::ErrorCollection.new base}
7
- let(:base) { User.new }
8
-
9
-
10
- describe "#initialize" do
11
- its(:collection) { should be collection }
12
- end
13
-
14
- describe "#base" do
15
- its(:base) { should be base }
16
- end
17
-
18
- describe "#full_message" do
19
- subject { reporter.full_message attribute, message }
20
- let(:attribute) { :first_name }
21
- let(:message) { "is invalid" }
22
-
23
- it { should == "First name is invalid" }
24
- end
25
-
26
- describe "#full_messages" do
27
- subject { reporter.full_messages }
28
- let(:expected) {[
29
- "First name is invalid",
30
- "First name can't be empty",
31
- "Last name is invalid"
32
- ]}
33
-
34
- before do
35
- collection[:first_name] << :invalid
36
- collection[:first_name] << :empty
37
- collection[:last_name] << :invalid
38
- end
39
-
40
- it { should == expected }
41
- end
42
-
43
- describe "#generate_message" do
44
- subject { reporter.generate_message attribute, type, options }
45
- let(:attribute) { :first_name }
46
-
47
- context "when passing symbols as message" do
48
- let(:type) { :too_short }
49
- let(:options) { {count: 3} }
50
- let(:expected) { "is too short (minimum is 3 characters)" }
51
- it { should == expected }
52
- end
53
-
54
- context "when passing strings as message" do
55
- let(:type) { "foo" }
56
- let(:options) { nil }
57
- let(:expected) { type }
58
- it { should == expected }
59
- end
60
- end
61
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveModel::ErrorCollecting::MachineArrayReporter do
4
- subject(:reporter) { klass.new collection }
5
- let(:klass) { ActiveModel::ErrorCollecting::MachineArrayReporter }
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_a" do
18
- subject { reporter.to_a }
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
- attribute: 'first_name',
28
- type: :invalid
29
- }, {
30
- attribute: 'first_name',
31
- type: :too_short,
32
- options: { count: 3 }
33
- },{
34
- attribute: 'last_name',
35
- type: :invalid
36
- }]}
37
-
38
- it { should == expected }
39
- end
40
- end
@@ -1,40 +0,0 @@
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
@@ -1,22 +0,0 @@
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
@@ -1,10 +0,0 @@
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