shoulda-matchers 4.4.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +22 -0
  3. data/README.md +18 -18
  4. data/lib/shoulda/matchers.rb +12 -13
  5. data/lib/shoulda/matchers/action_controller.rb +13 -13
  6. data/lib/shoulda/matchers/action_controller/callback_matcher.rb +4 -89
  7. data/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +3 -2
  8. data/lib/shoulda/matchers/action_controller/flash_store.rb +2 -4
  9. data/lib/shoulda/matchers/action_controller/permit_matcher.rb +29 -27
  10. data/lib/shoulda/matchers/action_controller/redirect_to_matcher.rb +6 -8
  11. data/lib/shoulda/matchers/action_controller/render_template_matcher.rb +6 -8
  12. data/lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb +16 -13
  13. data/lib/shoulda/matchers/action_controller/rescue_from_matcher.rb +2 -1
  14. data/lib/shoulda/matchers/action_controller/route_matcher.rb +5 -6
  15. data/lib/shoulda/matchers/action_controller/route_params.rb +1 -1
  16. data/lib/shoulda/matchers/action_controller/set_session_or_flash_matcher.rb +19 -13
  17. data/lib/shoulda/matchers/active_model.rb +25 -15
  18. data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +29 -36
  19. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_changed_value_error.rb +1 -1
  20. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setter.rb +5 -5
  21. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setter_and_validator.rb +2 -2
  22. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setters.rb +1 -1
  23. data/lib/shoulda/matchers/active_model/allow_value_matcher/attribute_setters_and_validators.rb +1 -1
  24. data/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +1 -1
  25. data/lib/shoulda/matchers/active_model/have_secure_password_matcher.rb +51 -25
  26. data/lib/shoulda/matchers/active_model/helpers.rb +2 -2
  27. data/lib/shoulda/matchers/active_model/numericality_matchers.rb +0 -5
  28. data/lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb +32 -34
  29. data/lib/shoulda/matchers/active_model/numericality_matchers/numeric_type_matcher.rb +1 -1
  30. data/lib/shoulda/matchers/active_model/qualifiers/ignoring_interference_by_writer.rb +1 -1
  31. data/lib/shoulda/matchers/active_model/validate_absence_of_matcher.rb +10 -2
  32. data/lib/shoulda/matchers/active_model/validate_confirmation_of_matcher.rb +2 -2
  33. data/lib/shoulda/matchers/active_model/validate_exclusion_of_matcher.rb +8 -7
  34. data/lib/shoulda/matchers/active_model/validate_inclusion_of_matcher.rb +26 -25
  35. data/lib/shoulda/matchers/active_model/validate_length_of_matcher.rb +6 -6
  36. data/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +40 -27
  37. data/lib/shoulda/matchers/active_model/validate_presence_of_matcher.rb +4 -4
  38. data/lib/shoulda/matchers/active_model/validation_matcher.rb +6 -8
  39. data/lib/shoulda/matchers/active_model/validation_matcher/build_description.rb +2 -4
  40. data/lib/shoulda/matchers/active_model/validation_message_finder.rb +2 -4
  41. data/lib/shoulda/matchers/active_model/validator.rb +4 -9
  42. data/lib/shoulda/matchers/active_record.rb +26 -14
  43. data/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +6 -3
  44. data/lib/shoulda/matchers/active_record/association_matcher.rb +101 -48
  45. data/lib/shoulda/matchers/active_record/association_matchers.rb +0 -12
  46. data/lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb +5 -2
  47. data/lib/shoulda/matchers/active_record/association_matchers/dependent_matcher.rb +4 -4
  48. data/lib/shoulda/matchers/active_record/association_matchers/inverse_of_matcher.rb +1 -1
  49. data/lib/shoulda/matchers/active_record/association_matchers/join_table_matcher.rb +11 -6
  50. data/lib/shoulda/matchers/active_record/association_matchers/model_reflection.rb +2 -9
  51. data/lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb +12 -7
  52. data/lib/shoulda/matchers/active_record/association_matchers/option_verifier.rb +23 -5
  53. data/lib/shoulda/matchers/active_record/association_matchers/optional_matcher.rb +3 -3
  54. data/lib/shoulda/matchers/active_record/association_matchers/order_matcher.rb +1 -1
  55. data/lib/shoulda/matchers/active_record/association_matchers/required_matcher.rb +4 -4
  56. data/lib/shoulda/matchers/active_record/association_matchers/source_matcher.rb +3 -2
  57. data/lib/shoulda/matchers/active_record/association_matchers/through_matcher.rb +7 -5
  58. data/lib/shoulda/matchers/active_record/define_enum_for_matcher.rb +18 -9
  59. data/lib/shoulda/matchers/active_record/have_attached_matcher.rb +46 -8
  60. data/lib/shoulda/matchers/active_record/have_db_column_matcher.rb +39 -17
  61. data/lib/shoulda/matchers/active_record/have_db_index_matcher.rb +1 -1
  62. data/lib/shoulda/matchers/active_record/have_implicit_order_column.rb +7 -7
  63. data/lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb +12 -10
  64. data/lib/shoulda/matchers/active_record/have_rich_text_matcher.rb +11 -7
  65. data/lib/shoulda/matchers/active_record/have_secure_token_matcher.rb +2 -0
  66. data/lib/shoulda/matchers/active_record/serialize_matcher.rb +13 -9
  67. data/lib/shoulda/matchers/active_record/uniqueness.rb +4 -4
  68. data/lib/shoulda/matchers/active_record/uniqueness/test_model_creator.rb +1 -3
  69. data/lib/shoulda/matchers/active_record/uniqueness/test_models.rb +0 -2
  70. data/lib/shoulda/matchers/active_record/validate_uniqueness_of_matcher.rb +78 -71
  71. data/lib/shoulda/matchers/doublespeak.rb +9 -9
  72. data/lib/shoulda/matchers/doublespeak/double.rb +1 -1
  73. data/lib/shoulda/matchers/doublespeak/double_collection.rb +3 -3
  74. data/lib/shoulda/matchers/doublespeak/double_implementation_registry.rb +8 -5
  75. data/lib/shoulda/matchers/doublespeak/object_double.rb +1 -1
  76. data/lib/shoulda/matchers/doublespeak/stub_implementation.rb +1 -5
  77. data/lib/shoulda/matchers/doublespeak/world.rb +2 -2
  78. data/lib/shoulda/matchers/error.rb +1 -1
  79. data/lib/shoulda/matchers/independent.rb +1 -0
  80. data/lib/shoulda/matchers/independent/delegate_method_matcher.rb +14 -16
  81. data/lib/shoulda/matchers/integrations.rb +6 -6
  82. data/lib/shoulda/matchers/integrations/configuration.rb +1 -1
  83. data/lib/shoulda/matchers/integrations/libraries/action_controller.rb +1 -1
  84. data/lib/shoulda/matchers/integrations/libraries/rails.rb +2 -2
  85. data/lib/shoulda/matchers/integrations/test_frameworks.rb +2 -4
  86. data/lib/shoulda/matchers/integrations/test_frameworks/active_support_test_case.rb +1 -1
  87. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_4.rb +1 -1
  88. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_5.rb +1 -1
  89. data/lib/shoulda/matchers/integrations/test_frameworks/missing_test_framework.rb +1 -1
  90. data/lib/shoulda/matchers/integrations/test_frameworks/test_unit.rb +1 -1
  91. data/lib/shoulda/matchers/rails_shim.rb +5 -42
  92. data/lib/shoulda/matchers/util.rb +9 -2
  93. data/lib/shoulda/matchers/util/word_wrap.rb +7 -7
  94. data/lib/shoulda/matchers/version.rb +1 -1
  95. data/lib/shoulda/matchers/warn.rb +3 -3
  96. data/shoulda-matchers.gemspec +12 -9
  97. metadata +14 -14
  98. data/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +0 -159
@@ -1,17 +1,10 @@
1
1
  require 'forwardable'
2
+ require 'logger'
2
3
 
3
4
  module Shoulda
4
5
  module Matchers
5
6
  # @private
6
7
  module Doublespeak
7
- autoload :Double, 'shoulda/matchers/doublespeak/double'
8
- autoload :DoubleCollection, 'shoulda/matchers/doublespeak/double_collection'
9
- autoload :DoubleImplementationRegistry, 'shoulda/matchers/doublespeak/double_implementation_registry'
10
- autoload :MethodCall, 'shoulda/matchers/doublespeak/method_call'
11
- autoload :ObjectDouble, 'shoulda/matchers/doublespeak/object_double'
12
- autoload :ProxyImplementation, 'shoulda/matchers/doublespeak/proxy_implementation'
13
- autoload :World, 'shoulda/matchers/doublespeak/world'
14
-
15
8
  class << self
16
9
  extend Forwardable
17
10
 
@@ -28,7 +21,7 @@ module Shoulda
28
21
 
29
22
  def debug(&block)
30
23
  if debugging_enabled?
31
- puts block.call
24
+ puts block.call # rubocop:disable Rails/Output
32
25
  end
33
26
  end
34
27
  end
@@ -36,4 +29,11 @@ module Shoulda
36
29
  end
37
30
  end
38
31
 
32
+ require 'shoulda/matchers/doublespeak/double'
33
+ require 'shoulda/matchers/doublespeak/double_collection'
34
+ require 'shoulda/matchers/doublespeak/double_implementation_registry'
35
+ require 'shoulda/matchers/doublespeak/method_call'
36
+ require 'shoulda/matchers/doublespeak/object_double'
37
+ require 'shoulda/matchers/doublespeak/proxy_implementation'
39
38
  require 'shoulda/matchers/doublespeak/stub_implementation'
39
+ require 'shoulda/matchers/doublespeak/world'
@@ -82,7 +82,7 @@ module Shoulda
82
82
  method_name: _method_name,
83
83
  args: args,
84
84
  block: block,
85
- caller: caller
85
+ caller: caller,
86
86
  )
87
87
  implementation.call(call)
88
88
  end
@@ -18,19 +18,19 @@ module Shoulda
18
18
  end
19
19
 
20
20
  def activate
21
- doubles_by_method_name.each do |method_name, double|
21
+ doubles_by_method_name.each do |_method_name, double|
22
22
  double.activate
23
23
  end
24
24
  end
25
25
 
26
26
  def deactivate
27
- doubles_by_method_name.each do |method_name, double|
27
+ doubles_by_method_name.each do |_method_name, double|
28
28
  double.deactivate
29
29
  end
30
30
  end
31
31
 
32
32
  def calls_by_method_name
33
- doubles_by_method_name.reduce({}) do |hash, (method_name, double)|
33
+ doubles_by_method_name.inject({}) do |hash, (method_name, double)|
34
34
  hash.merge method_name => double.calls.map(&:args)
35
35
  end
36
36
  end
@@ -4,23 +4,26 @@ module Shoulda
4
4
  # @private
5
5
  module DoubleImplementationRegistry
6
6
  class << self
7
- REGISTRY = {}
8
-
9
7
  def find(type)
10
8
  find_class!(type).create
11
9
  end
12
10
 
13
11
  def register(klass, type)
14
- REGISTRY[type] = klass
12
+ registry[type] = klass
15
13
  end
16
14
 
17
15
  private
18
16
 
19
17
  def find_class!(type)
20
- REGISTRY.fetch(type) do
21
- raise ArgumentError, "No double implementation class found for '#{type}'"
18
+ registry.fetch(type) do
19
+ raise ArgumentError, 'No double implementation class found for'\
20
+ " '#{type}'"
22
21
  end
23
22
  end
23
+
24
+ def registry
25
+ @_registry ||= {}
26
+ end
24
27
  end
25
28
  end
26
29
  end
@@ -27,7 +27,7 @@ module Shoulda
27
27
  method_name: method_name,
28
28
  args: args,
29
29
  block: block,
30
- caller: ::Kernel.caller
30
+ caller: ::Kernel.caller,
31
31
  )
32
32
  calls << call
33
33
  (calls_by_method_name[method_name] ||= []) << call
@@ -14,11 +14,7 @@ module Shoulda
14
14
  end
15
15
 
16
16
  def returns(value = nil, &block)
17
- if block
18
- @implementation = block
19
- else
20
- @implementation = proc { value }
21
- end
17
+ @implementation = block || proc { value }
22
18
  end
23
19
 
24
20
  def call(call)
@@ -39,13 +39,13 @@ module Shoulda
39
39
  private
40
40
 
41
41
  def activate
42
- double_collections_by_class.each do |klass, double_collection|
42
+ double_collections_by_class.each do |_klass, double_collection|
43
43
  double_collection.activate
44
44
  end
45
45
  end
46
46
 
47
47
  def deactivate
48
- double_collections_by_class.each do |klass, double_collection|
48
+ double_collections_by_class.each do |_klass, double_collection|
49
49
  double_collection.deactivate
50
50
  end
51
51
  end
@@ -18,7 +18,7 @@ module Shoulda
18
18
  end
19
19
 
20
20
  def message
21
- ""
21
+ ''
22
22
  end
23
23
 
24
24
  def inspect
@@ -1,4 +1,5 @@
1
1
  require 'shoulda/matchers/independent/delegate_method_matcher'
2
+ require 'shoulda/matchers/independent/delegate_method_matcher/target_not_defined_error'
2
3
 
3
4
  module Shoulda
4
5
  module Matchers
@@ -176,9 +176,6 @@ module Shoulda
176
176
 
177
177
  # @private
178
178
  class DelegateMethodMatcher
179
- autoload :StubbedTarget, 'shoulda/matchers/independent/delegate_method_matcher/stubbed_target'
180
- autoload :DelegateObjectNotSpecified, 'shoulda/matchers/independent/delegate_method_matcher/target_not_defined_error'
181
-
182
179
  def initialize(delegating_method)
183
180
  @delegating_method = delegating_method
184
181
 
@@ -222,9 +219,9 @@ module Shoulda
222
219
  end
223
220
 
224
221
  if expects_to_allow_nil_delegate_object?
225
- string << ", allowing "
222
+ string << ', allowing '
226
223
  string << formatted_delegate_object_reader_method_name
227
- string << " to return nil"
224
+ string << ' to return nil'
228
225
  end
229
226
 
230
227
  string
@@ -248,7 +245,7 @@ module Shoulda
248
245
  def with_prefix(prefix = nil)
249
246
  @delegating_method =
250
247
  :"#{build_delegating_method_prefix(prefix)}_#{delegate_method}"
251
- delegate_method
248
+ delegate_method
252
249
  self
253
250
  end
254
251
 
@@ -259,8 +256,8 @@ module Shoulda
259
256
 
260
257
  def build_delegating_method_prefix(prefix)
261
258
  case prefix
262
- when true, nil then delegate_object_reader_method
263
- else prefix
259
+ when true, nil then delegate_object_reader_method
260
+ else prefix
264
261
  end
265
262
  end
266
263
 
@@ -347,7 +344,7 @@ module Shoulda
347
344
  if options[:include_module]
348
345
  class_under_test.to_s
349
346
  else
350
- ""
347
+ ''
351
348
  end
352
349
  end
353
350
 
@@ -401,11 +398,12 @@ module Shoulda
401
398
  true
402
399
  rescue Module::DelegationError
403
400
  false
404
- rescue NoMethodError => error
405
- if error.message =~ /undefined method `#{delegate_method}' for nil:NilClass/
401
+ rescue NoMethodError => e
402
+ if e.message =~
403
+ /undefined method `#{delegate_method}' for nil:NilClass/
406
404
  false
407
405
  else
408
- raise error
406
+ raise e
409
407
  end
410
408
  end
411
409
  else
@@ -442,17 +440,17 @@ module Shoulda
442
440
  end
443
441
 
444
442
  def formatted_calls_on_delegate_object
445
- string = ""
443
+ string = ''
446
444
 
447
445
  if calls_on_delegate_object.any?
448
446
  string << "\n\n"
449
447
  calls_on_delegate_object.each_with_index do |call, i|
450
448
  name = call.method_name
451
- args = call.args.map { |arg| arg.inspect }.join(', ')
452
- string << "#{i+1}) #{name}(#{args})\n"
449
+ args = call.args.map(&:inspect).join(', ')
450
+ string << "#{i + 1}) #{name}(#{args})\n"
453
451
  end
454
452
  else
455
- string << " (none)"
453
+ string << ' (none)'
456
454
  end
457
455
 
458
456
  string.rstrip!
@@ -2,12 +2,6 @@ module Shoulda
2
2
  module Matchers
3
3
  # @private
4
4
  module Integrations
5
- autoload :Configuration, 'shoulda/matchers/integrations/configuration'
6
- autoload :ConfigurationError, 'shoulda/matchers/integrations/configuration_error'
7
- autoload :Inclusion, 'shoulda/matchers/integrations/inclusion'
8
- autoload :Rails, 'shoulda/matchers/integrations/rails'
9
- autoload :Registry, 'shoulda/matchers/integrations/registry'
10
-
11
5
  class << self
12
6
  def register_library(klass, name)
13
7
  library_registry.register(klass, name)
@@ -39,5 +33,11 @@ module Shoulda
39
33
  end
40
34
  end
41
35
 
36
+ require 'shoulda/matchers/integrations/configuration'
37
+ require 'shoulda/matchers/integrations/configuration_error'
38
+ require 'shoulda/matchers/integrations/inclusion'
39
+ require 'shoulda/matchers/integrations/rails'
40
+ require 'shoulda/matchers/integrations/registry'
41
+
42
42
  require 'shoulda/matchers/integrations/libraries'
43
43
  require 'shoulda/matchers/integrations/test_frameworks'
@@ -60,7 +60,7 @@ EOT
60
60
  end
61
61
 
62
62
  def no_test_frameworks_added?
63
- @test_frameworks.empty? || !@test_frameworks.any?(&:present?)
63
+ @test_frameworks.empty? || @test_frameworks.none?(&:present?)
64
64
  end
65
65
 
66
66
  def no_libraries_added?
@@ -13,7 +13,7 @@ module Shoulda
13
13
  test_framework.include(matchers_module, type: :controller)
14
14
 
15
15
  include_into(::ActionController::TestCase, matchers_module) do
16
- def subject
16
+ def subject # rubocop:disable Lint/NestedMethodDefinition
17
17
  @controller
18
18
  end
19
19
  end
@@ -12,8 +12,8 @@ module Shoulda
12
12
  :active_model,
13
13
  :active_record,
14
14
  :action_controller,
15
- :routing
16
- ]
15
+ :routing,
16
+ ].freeze
17
17
 
18
18
  def integrate_with(test_framework)
19
19
  Shoulda::Matchers.assertion_exception_class =
@@ -1,17 +1,15 @@
1
+ require 'shoulda/matchers/integrations/test_frameworks/active_support_test_case'
1
2
  require 'shoulda/matchers/integrations/test_frameworks/minitest_4'
2
3
  require 'shoulda/matchers/integrations/test_frameworks/minitest_5'
3
4
  require 'shoulda/matchers/integrations/test_frameworks/missing_test_framework'
4
5
  require 'shoulda/matchers/integrations/test_frameworks/rspec'
6
+ require 'shoulda/matchers/integrations/test_frameworks/test_unit'
5
7
 
6
8
  module Shoulda
7
9
  module Matchers
8
10
  module Integrations
9
11
  # @private
10
12
  module TestFrameworks
11
- autoload :ActiveSupportTestCase, 'shoulda/matchers/integrations/test_frameworks/active_support_test_case'
12
- autoload :Minitest4, 'shoulda/matchers/integrations/test_frameworks/minitest_4'
13
- autoload :Minitest5, 'shoulda/matchers/integrations/test_frameworks/minitest_5'
14
- autoload :TestUnit, 'shoulda/matchers/integrations/test_frameworks/test_unit'
15
13
  end
16
14
  end
17
15
  end
@@ -9,7 +9,7 @@ module Shoulda
9
9
  def validate!
10
10
  end
11
11
 
12
- def include(*modules, **options)
12
+ def include(*modules, **_options)
13
13
  test_case_class.include(*modules)
14
14
  end
15
15
 
@@ -9,7 +9,7 @@ module Shoulda
9
9
  def validate!
10
10
  end
11
11
 
12
- def include(*modules, **options)
12
+ def include(*modules, **_options)
13
13
  test_case_class.class_eval do
14
14
  include(*modules)
15
15
  extend(*modules)
@@ -10,7 +10,7 @@ module Shoulda
10
10
  def validate!
11
11
  end
12
12
 
13
- def include(*modules, **options)
13
+ def include(*modules, **_options)
14
14
  test_case_class.class_eval do
15
15
  include(*modules)
16
16
  extend(*modules)
@@ -20,7 +20,7 @@ Shoulda::Matchers.configure do |config|
20
20
  with.test_framework :test_unit
21
21
  end
22
22
  end
23
- EOT
23
+ EOT
24
24
  end
25
25
 
26
26
  def include(*modules, **options)
@@ -9,7 +9,7 @@ module Shoulda
9
9
  def validate!
10
10
  end
11
11
 
12
- def include(*modules, **options)
12
+ def include(*modules, **_options)
13
13
  test_case_class.class_eval do
14
14
  include(*modules)
15
15
  extend(*modules)
@@ -1,26 +1,14 @@
1
1
  module Shoulda
2
2
  module Matchers
3
3
  # @private
4
- module RailsShim
4
+ module RailsShim # rubocop:disable Metrics/ModuleLength
5
5
  class << self
6
- def action_pack_gte_5?
7
- Gem::Requirement.new('>= 5').satisfied_by?(action_pack_version)
8
- end
9
-
10
- def action_pack_lt_5?
11
- Gem::Requirement.new('< 5').satisfied_by?(action_pack_version)
12
- end
13
-
14
6
  def action_pack_version
15
7
  Gem::Version.new(::ActionPack::VERSION::STRING)
16
8
  rescue NameError
17
9
  Gem::Version.new('0')
18
10
  end
19
11
 
20
- def active_record_gte_5?
21
- Gem::Requirement.new('>= 5').satisfied_by?(active_record_version)
22
- end
23
-
24
12
  def active_record_gte_6?
25
13
  Gem::Requirement.new('>= 6').satisfied_by?(active_record_version)
26
14
  end
@@ -57,17 +45,6 @@ module Shoulda
57
45
  )
58
46
  end
59
47
 
60
- def make_controller_request(context, verb, action, request_params)
61
- params =
62
- if action_pack_gte_5?
63
- { params: request_params }
64
- else
65
- request_params
66
- end
67
-
68
- context.__send__(verb, action, params)
69
- end
70
-
71
48
  def serialized_attributes_for(model)
72
49
  attribute_types_for(model).
73
50
  inject({}) do |hash, (attribute_name, attribute_type)|
@@ -85,26 +62,10 @@ module Shoulda
85
62
  serialized_attributes_for(model)[attribute_name.to_s]
86
63
  end
87
64
 
88
- def tables_and_views(connection)
89
- if active_record_gte_5?
90
- connection.data_sources
91
- else
92
- connection.tables
93
- end
94
- end
95
-
96
65
  def verb_for_update
97
66
  :patch
98
67
  end
99
68
 
100
- def validation_message_key_for_association_required_option
101
- if active_record_gte_5?
102
- :required
103
- else
104
- :blank
105
- end
106
- end
107
-
108
69
  def parent_of(mod)
109
70
  if mod.respond_to?(:module_parent)
110
71
  mod.module_parent
@@ -180,10 +141,12 @@ module Shoulda
180
141
  options
181
142
  )
182
143
  default_translation_keys = [
183
- :"activemodel.errors.models.#{model_name}.attributes.#{attribute}.#{type}",
144
+ :"activemodel.errors.models.#{model_name}.attributes.#{attribute}
145
+ .#{type}",
184
146
  :"activemodel.errors.models.#{model_name}.#{type}",
185
147
  :"activemodel.errors.messages.#{type}",
186
- :"activerecord.errors.models.#{model_name}.attributes.#{attribute}.#{type}",
148
+ :"activerecord.errors.models.#{model_name}.attributes.#{attribute}
149
+ .#{type}",
187
150
  :"activerecord.errors.models.#{model_name}.#{type}",
188
151
  :"activerecord.errors.messages.#{type}",
189
152
  :"errors.attributes.#{attribute}.#{type}",