shoulda-matchers 3.0.0.rc1 → 3.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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/Gemfile.lock +12 -41
  4. data/NEWS.md +118 -26
  5. data/README.md +34 -11
  6. data/doc_config/yard/templates/default/fulldoc/html/css/bootstrap.css +0 -0
  7. data/doc_config/yard/templates/default/fulldoc/html/css/style.css +4 -0
  8. data/gemfiles/4.0.0.gemfile +2 -3
  9. data/gemfiles/4.0.0.gemfile.lock +47 -77
  10. data/gemfiles/4.0.1.gemfile +2 -3
  11. data/gemfiles/4.0.1.gemfile.lock +51 -79
  12. data/gemfiles/4.1.gemfile +2 -3
  13. data/gemfiles/4.1.gemfile.lock +73 -103
  14. data/gemfiles/4.2.gemfile +2 -3
  15. data/gemfiles/4.2.gemfile.lock +90 -124
  16. data/lib/shoulda/matchers.rb +1 -0
  17. data/lib/shoulda/matchers/action_controller/callback_matcher.rb +6 -8
  18. data/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +1 -3
  19. data/lib/shoulda/matchers/action_controller/flash_store.rb +1 -8
  20. data/lib/shoulda/matchers/action_controller/permit_matcher.rb +140 -88
  21. data/lib/shoulda/matchers/action_controller/redirect_to_matcher.rb +2 -5
  22. data/lib/shoulda/matchers/action_controller/render_template_matcher.rb +5 -10
  23. data/lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb +2 -4
  24. data/lib/shoulda/matchers/action_controller/rescue_from_matcher.rb +1 -3
  25. data/lib/shoulda/matchers/action_controller/respond_with_matcher.rb +3 -5
  26. data/lib/shoulda/matchers/action_controller/route_matcher.rb +5 -7
  27. data/lib/shoulda/matchers/action_controller/set_flash_matcher.rb +35 -9
  28. data/lib/shoulda/matchers/action_controller/set_session_matcher.rb +3 -3
  29. data/lib/shoulda/matchers/active_model.rb +57 -1
  30. data/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +2 -5
  31. data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +162 -54
  32. data/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +5 -2
  33. data/lib/shoulda/matchers/active_model/have_secure_password_matcher.rb +1 -3
  34. data/lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb +24 -11
  35. data/lib/shoulda/matchers/active_model/numericality_matchers/even_number_matcher.rb +4 -3
  36. data/lib/shoulda/matchers/active_model/numericality_matchers/numeric_type_matcher.rb +0 -2
  37. data/lib/shoulda/matchers/active_model/numericality_matchers/odd_number_matcher.rb +4 -3
  38. data/lib/shoulda/matchers/active_model/numericality_matchers/only_integer_matcher.rb +2 -1
  39. data/lib/shoulda/matchers/active_model/validate_absence_of_matcher.rb +15 -13
  40. data/lib/shoulda/matchers/active_model/validate_acceptance_of_matcher.rb +3 -3
  41. data/lib/shoulda/matchers/active_model/validate_confirmation_of_matcher.rb +3 -3
  42. data/lib/shoulda/matchers/active_model/validate_exclusion_of_matcher.rb +4 -4
  43. data/lib/shoulda/matchers/active_model/validate_inclusion_of_matcher.rb +8 -8
  44. data/lib/shoulda/matchers/active_model/validate_length_of_matcher.rb +8 -8
  45. data/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +12 -14
  46. data/lib/shoulda/matchers/active_model/validate_presence_of_matcher.rb +10 -4
  47. data/lib/shoulda/matchers/active_model/validation_matcher.rb +0 -3
  48. data/lib/shoulda/matchers/active_model/validator.rb +0 -8
  49. data/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +4 -6
  50. data/lib/shoulda/matchers/active_record/association_matcher.rb +58 -43
  51. data/lib/shoulda/matchers/active_record/define_enum_for_matcher.rb +2 -2
  52. data/lib/shoulda/matchers/active_record/have_db_column_matcher.rb +3 -5
  53. data/lib/shoulda/matchers/active_record/have_db_index_matcher.rb +3 -5
  54. data/lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb +1 -4
  55. data/lib/shoulda/matchers/active_record/serialize_matcher.rb +3 -5
  56. data/lib/shoulda/matchers/active_record/validate_uniqueness_of_matcher.rb +7 -7
  57. data/lib/shoulda/matchers/doublespeak/double.rb +10 -1
  58. data/lib/shoulda/matchers/doublespeak/double_collection.rb +13 -5
  59. data/lib/shoulda/matchers/doublespeak/method_call.rb +10 -1
  60. data/lib/shoulda/matchers/doublespeak/object_double.rb +2 -1
  61. data/lib/shoulda/matchers/doublespeak/world.rb +10 -0
  62. data/lib/shoulda/matchers/error.rb +4 -0
  63. data/lib/shoulda/matchers/independent/delegate_method_matcher.rb +11 -10
  64. data/lib/shoulda/matchers/integrations/libraries.rb +1 -0
  65. data/lib/shoulda/matchers/integrations/libraries/action_controller.rb +1 -1
  66. data/lib/shoulda/matchers/integrations/libraries/active_model.rb +1 -1
  67. data/lib/shoulda/matchers/integrations/libraries/active_record.rb +1 -1
  68. data/lib/shoulda/matchers/integrations/libraries/rails.rb +2 -1
  69. data/lib/shoulda/matchers/integrations/libraries/routing.rb +27 -0
  70. data/lib/shoulda/matchers/integrations/test_frameworks/active_support_test_case.rb +1 -1
  71. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_4.rb +1 -1
  72. data/lib/shoulda/matchers/integrations/test_frameworks/minitest_5.rb +1 -1
  73. data/lib/shoulda/matchers/integrations/test_frameworks/missing_test_framework.rb +1 -1
  74. data/lib/shoulda/matchers/integrations/test_frameworks/rspec.rb +2 -2
  75. data/lib/shoulda/matchers/integrations/test_frameworks/test_unit.rb +1 -1
  76. data/lib/shoulda/matchers/routing.rb +10 -0
  77. data/lib/shoulda/matchers/version.rb +1 -1
  78. data/script/SUPPORTED_VERSIONS +1 -1
  79. data/spec/acceptance/independent_matchers_spec.rb +103 -42
  80. data/spec/doublespeak_spec_helper.rb +5 -1
  81. data/spec/support/acceptance/adds_shoulda_matchers_to_project.rb +34 -11
  82. data/spec/support/acceptance/helpers/rspec_helpers.rb +9 -13
  83. data/spec/support/acceptance/helpers/step_helpers.rb +13 -0
  84. data/spec/support/acceptance/matchers/have_output.rb +1 -1
  85. data/spec/support/acceptance/matchers/indicate_number_of_tests_was_run_matcher.rb +1 -1
  86. data/spec/support/tests/command_runner.rb +5 -1
  87. data/spec/support/unit/helpers/active_record_versions.rb +0 -4
  88. data/spec/support/unit/shared_examples/set_session_or_flash.rb +8 -3
  89. data/spec/unit/shoulda/matchers/action_controller/permit_matcher_spec.rb +198 -39
  90. data/spec/unit/shoulda/matchers/action_controller/route_matcher_spec.rb +269 -102
  91. data/spec/unit/shoulda/matchers/action_controller/set_flash_matcher_spec.rb +24 -0
  92. data/spec/unit/shoulda/matchers/active_model/allow_value_matcher_spec.rb +118 -101
  93. data/spec/unit/shoulda/matchers/active_model/disallow_value_matcher_spec.rb +0 -82
  94. data/spec/unit/shoulda/matchers/active_model/numericality_matchers/comparison_matcher_spec.rb +148 -121
  95. data/spec/unit/shoulda/matchers/active_model/validate_acceptance_of_matcher_spec.rb +20 -8
  96. data/spec/unit/shoulda/matchers/active_model/validate_numericality_of_matcher_spec.rb +64 -183
  97. data/spec/unit/shoulda/matchers/active_model/validate_presence_of_matcher_spec.rb +14 -0
  98. data/spec/unit/shoulda/matchers/doublespeak/double_collection_spec.rb +60 -0
  99. data/spec/unit/shoulda/matchers/doublespeak/double_spec.rb +23 -7
  100. data/spec/unit/shoulda/matchers/routing/route_matcher_spec.rb +242 -0
  101. data/spec/unit_spec_helper.rb +4 -0
  102. data/tasks/documentation.rb +35 -0
  103. metadata +9 -8
  104. data/Guardfile +0 -5
  105. data/cucumber.yml +0 -1
  106. data/lib/shoulda/matchers/active_model/validator_with_captured_range_error.rb +0 -12
@@ -31,15 +31,18 @@ module Shoulda
31
31
  self
32
32
  end
33
33
 
34
+ def ignoring_interference_by_writer
35
+ @allow_matcher.ignoring_interference_by_writer
36
+ self
37
+ end
38
+
34
39
  def failure_message
35
40
  @allow_matcher.failure_message_when_negated
36
41
  end
37
- alias failure_message_for_should failure_message
38
42
 
39
43
  def failure_message_when_negated
40
44
  @allow_matcher.failure_message
41
45
  end
42
- alias failure_message_for_should_not failure_message_when_negated
43
46
 
44
47
  def strict
45
48
  @allow_matcher.strict
@@ -19,7 +19,7 @@ module Shoulda
19
19
  # it { should have_secure_password }
20
20
  # end
21
21
  #
22
- # # Test::Unit
22
+ # # Minitest (Shoulda)
23
23
  # class UserTest < ActiveSupport::TestCase
24
24
  # should have_secure_password
25
25
  # end
@@ -34,8 +34,6 @@ module Shoulda
34
34
  class HaveSecurePasswordMatcher
35
35
  attr_reader :failure_message
36
36
 
37
- alias failure_message_for_should failure_message
38
-
39
37
  CORRECT_PASSWORD = "aBcDe12345"
40
38
  INCORRECT_PASSWORD = "password"
41
39
 
@@ -24,33 +24,42 @@ module Shoulda
24
24
  @strict = false
25
25
  end
26
26
 
27
+ def description
28
+ message = "validate that #{@attribute} is #{comparison_expectation} #{@value}"
29
+
30
+ if @strict
31
+ message << " strictly"
32
+ end
33
+
34
+ message
35
+ end
36
+
27
37
  def for(attribute)
28
38
  @attribute = attribute
29
39
  self
30
40
  end
31
41
 
32
- def matches?(subject)
33
- @subject = subject
34
- all_bounds_correct?
35
- end
36
-
37
42
  def with_message(message)
38
43
  @message = message
44
+ self
39
45
  end
40
46
 
41
- def comparison_description
42
- "#{expectation} #{@value}"
47
+ def matches?(subject)
48
+ @subject = subject
49
+ all_bounds_correct?
43
50
  end
44
51
 
45
52
  def failure_message
46
53
  last_failing_submatcher.failure_message
47
54
  end
48
- alias failure_message_for_should failure_message
49
55
 
50
56
  def failure_message_when_negated
51
57
  last_failing_submatcher.failure_message_when_negated
52
58
  end
53
- alias failure_message_for_should_not failure_message_when_negated
59
+
60
+ def comparison_description
61
+ "#{comparison_expectation} #{@value}"
62
+ end
54
63
 
55
64
  private
56
65
 
@@ -71,7 +80,11 @@ module Shoulda
71
80
  def submatchers
72
81
  @_submatchers ||=
73
82
  comparison_combos.map do |diff, submatcher_method_name|
74
- matcher = __send__(submatcher_method_name, @value + diff, nil)
83
+ matcher = __send__(
84
+ submatcher_method_name,
85
+ (@value + diff).to_s,
86
+ nil
87
+ )
75
88
  matcher.with_message(@message, values: { count: @value })
76
89
  matcher
77
90
  end
@@ -118,7 +131,7 @@ module Shoulda
118
131
  [-diff, 0, diff]
119
132
  end
120
133
 
121
- def expectation
134
+ def comparison_expectation
122
135
  case @operator
123
136
  when :> then "greater than"
124
137
  when :>= then "greater than or equal to"
@@ -8,9 +8,10 @@ module Shoulda
8
8
 
9
9
  def initialize(attribute, options = {})
10
10
  @attribute = attribute
11
- @disallow_value_matcher = DisallowValueMatcher.new(NON_EVEN_NUMBER_VALUE).
12
- for(@attribute).
13
- with_message(:even)
11
+ @disallow_value_matcher =
12
+ DisallowValueMatcher.new(NON_EVEN_NUMBER_VALUE.to_s).
13
+ for(@attribute).
14
+ with_message(:even)
14
15
  end
15
16
 
16
17
  def allowed_type
@@ -38,12 +38,10 @@ module Shoulda
38
38
  def failure_message
39
39
  @disallow_value_matcher.failure_message
40
40
  end
41
- alias failure_message_for_should failure_message
42
41
 
43
42
  def failure_message_when_negated
44
43
  @disallow_value_matcher.failure_message_when_negated
45
44
  end
46
- alias failure_message_for_should_not failure_message_when_negated
47
45
  end
48
46
  end
49
47
  end
@@ -8,9 +8,10 @@ module Shoulda
8
8
 
9
9
  def initialize(attribute, options = {})
10
10
  @attribute = attribute
11
- @disallow_value_matcher = DisallowValueMatcher.new(NON_ODD_NUMBER_VALUE).
12
- for(@attribute).
13
- with_message(:odd)
11
+ @disallow_value_matcher =
12
+ DisallowValueMatcher.new(NON_ODD_NUMBER_VALUE.to_s).
13
+ for(@attribute).
14
+ with_message(:odd)
14
15
  end
15
16
 
16
17
  def allowed_type
@@ -7,7 +7,8 @@ module Shoulda
7
7
  NON_INTEGER_VALUE = 0.1
8
8
  def initialize(attribute)
9
9
  @attribute = attribute
10
- @disallow_value_matcher = DisallowValueMatcher.new(NON_INTEGER_VALUE).
10
+ @disallow_value_matcher =
11
+ DisallowValueMatcher.new(NON_INTEGER_VALUE.to_s).
11
12
  for(attribute).
12
13
  with_message(:not_an_integer)
13
14
  end
@@ -16,7 +16,7 @@ module Shoulda
16
16
  # it { should validate_absence_of(:arms) }
17
17
  # end
18
18
  #
19
- # # Test::Unit
19
+ # # Minitest (Shoulda)
20
20
  # class ArtilleryTest < ActiveSupport::TestCase
21
21
  # should validate_absence_of(:arms)
22
22
  # end
@@ -39,7 +39,7 @@ module Shoulda
39
39
  # it { should validate_absence_of(:arms).on(:create) }
40
40
  # end
41
41
  #
42
- # # Test::Unit
42
+ # # Minitest (Shoulda)
43
43
  # class ArtilleryTest < ActiveSupport::TestCase
44
44
  # should validate_absence_of(:arms).on(:create)
45
45
  # end
@@ -64,7 +64,7 @@ module Shoulda
64
64
  # end
65
65
  # end
66
66
  #
67
- # # Test::Unit
67
+ # # Minitest (Shoulda)
68
68
  # class ArtilleryTest < ActiveSupport::TestCase
69
69
  # should validate_absence_of(:arms).
70
70
  # with_message("We're fresh outta arms here, soldier!")
@@ -86,6 +86,7 @@ module Shoulda
86
86
  def matches?(subject)
87
87
  super(subject)
88
88
  @expected_message ||= :present
89
+
89
90
  disallows_value_of(value, @expected_message)
90
91
  end
91
92
 
@@ -103,21 +104,22 @@ module Shoulda
103
104
  else
104
105
  obj
105
106
  end
106
- elsif [Fixnum, Float].include?(attribute_class)
107
- 1
108
- elsif attribute_class == BigDecimal
109
- BigDecimal.new(1, 0)
110
- elsif !attribute_class || attribute_class == String
111
- 'an arbitrary value'
112
107
  else
113
- attribute_class.new
108
+ case column_type
109
+ when :integer, :float then 1
110
+ when :decimal then BigDecimal.new(1, 0)
111
+ when :datetime, :time, :timestamp then Time.now
112
+ when :date then Date.new
113
+ when :binary then "0"
114
+ else 'an arbitrary value'
115
+ end
114
116
  end
115
117
  end
116
118
 
117
- def attribute_class
119
+ def column_type
118
120
  @subject.class.respond_to?(:columns_hash) &&
119
- @subject.class.columns_hash[@attribute.to_s].respond_to?(:klass) &&
120
- @subject.class.columns_hash[@attribute.to_s].klass
121
+ @subject.class.columns_hash[@attribute.to_s].respond_to?(:type) &&
122
+ @subject.class.columns_hash[@attribute.to_s].type
121
123
  end
122
124
 
123
125
  def collection?
@@ -16,7 +16,7 @@ module Shoulda
16
16
  # it { should validate_acceptance_of(:eula) }
17
17
  # end
18
18
  #
19
- # # Test::Unit
19
+ # # Minitest (Shoulda)
20
20
  # class RegistrationTest < ActiveSupport::TestCase
21
21
  # should validate_acceptance_of(:eula)
22
22
  # end
@@ -42,7 +42,7 @@ module Shoulda
42
42
  # end
43
43
  # end
44
44
  #
45
- # # Test::Unit
45
+ # # Minitest (Shoulda)
46
46
  # class RegistrationTest < ActiveSupport::TestCase
47
47
  # should validate_acceptance_of(:terms_of_service).on(:create)
48
48
  # end
@@ -67,7 +67,7 @@ module Shoulda
67
67
  # end
68
68
  # end
69
69
  #
70
- # # Test::Unit
70
+ # # Minitest (Shoulda)
71
71
  # class RegistrationTest < ActiveSupport::TestCase
72
72
  # should validate_acceptance_of(:terms_of_service).
73
73
  # with_message('You must accept the terms of service')
@@ -16,7 +16,7 @@ module Shoulda
16
16
  # it { should validate_confirmation_of(:email) }
17
17
  # end
18
18
  #
19
- # # Test::Unit
19
+ # # Minitest (Shoulda)
20
20
  # class UserTest < ActiveSupport::TestCase
21
21
  # should validate_confirmation_of(:email)
22
22
  # end
@@ -39,7 +39,7 @@ module Shoulda
39
39
  # it { should validate_confirmation_of(:password).on(:create) }
40
40
  # end
41
41
  #
42
- # # Test::Unit
42
+ # # Minitest (Shoulda)
43
43
  # class UserTest < ActiveSupport::TestCase
44
44
  # should validate_confirmation_of(:password).on(:create)
45
45
  # end
@@ -64,7 +64,7 @@ module Shoulda
64
64
  # end
65
65
  # end
66
66
  #
67
- # # Test::Unit
67
+ # # Minitest (Shoulda)
68
68
  # class UserTest < ActiveSupport::TestCase
69
69
  # should validate_confirmation_of(:password).
70
70
  # with_message('Please re-enter your password')
@@ -23,7 +23,7 @@ module Shoulda
23
23
  # end
24
24
  # end
25
25
  #
26
- # # Test::Unit
26
+ # # Minitest (Shoulda)
27
27
  # class GameTest < ActiveSupport::TestCase
28
28
  # should validate_exclusion_of(:supported_os).
29
29
  # in_array(['Mac', 'Linux'])
@@ -46,7 +46,7 @@ module Shoulda
46
46
  # end
47
47
  # end
48
48
  #
49
- # # Test::Unit
49
+ # # Minitest (Shoulda)
50
50
  # class GameTest < ActiveSupport::TestCase
51
51
  # should validate_exclusion_of(:floors_with_enemies).
52
52
  # in_range(5..8)
@@ -76,7 +76,7 @@ module Shoulda
76
76
  # end
77
77
  # end
78
78
  #
79
- # # Test::Unit
79
+ # # Minitest (Shoulda)
80
80
  # class GameTest < ActiveSupport::TestCase
81
81
  # should validate_exclusion_of(:weapon).
82
82
  # in_array(['pistol', 'paintball gun', 'stick']).
@@ -105,7 +105,7 @@ module Shoulda
105
105
  # end
106
106
  # end
107
107
  #
108
- # # Test::Unit
108
+ # # Minitest (Shoulda)
109
109
  # class GameTest < ActiveSupport::TestCase
110
110
  # should validate_exclusion_of(:weapon).
111
111
  # in_array(['pistol', 'paintball gun', 'stick']).
@@ -24,7 +24,7 @@ module Shoulda
24
24
  # end
25
25
  # end
26
26
  #
27
- # # Test::Unit
27
+ # # Minitest (Shoulda)
28
28
  # class IssueTest < ActiveSupport::TestCase
29
29
  # should validate_inclusion_of(:state).
30
30
  # in_array(%w(open resolved unresolved))
@@ -44,7 +44,7 @@ module Shoulda
44
44
  # it { should validate_inclusion_of(:state).in_range(1..5) }
45
45
  # end
46
46
  #
47
- # # Test::Unit
47
+ # # Minitest (Shoulda)
48
48
  # class IssueTest < ActiveSupport::TestCase
49
49
  # should validate_inclusion_of(:state).in_range(1..5)
50
50
  # end
@@ -87,7 +87,7 @@ module Shoulda
87
87
  # end
88
88
  # end
89
89
  #
90
- # # Test::Unit
90
+ # # Minitest (Shoulda)
91
91
  # class IssueTest < ActiveSupport::TestCase
92
92
  # should validate_inclusion_of(:severity).
93
93
  # in_array(%w(low medium high)).
@@ -116,7 +116,7 @@ module Shoulda
116
116
  # end
117
117
  # end
118
118
  #
119
- # # Test::Unit
119
+ # # Minitest (Shoulda)
120
120
  # class IssueTest < ActiveSupport::TestCase
121
121
  # should validate_inclusion_of(:severity).
122
122
  # in_array(%w(low medium high)).
@@ -152,7 +152,7 @@ module Shoulda
152
152
  # end
153
153
  # end
154
154
  #
155
- # # Test::Unit
155
+ # # Minitest (Shoulda)
156
156
  # class PersonTest < ActiveSupport::TestCase
157
157
  # should validate_inclusion_of(:age).
158
158
  # in_range(0..65).
@@ -188,7 +188,7 @@ module Shoulda
188
188
  # end
189
189
  # end
190
190
  #
191
- # # Test::Unit
191
+ # # Minitest (Shoulda)
192
192
  # class PersonTest < ActiveSupport::TestCase
193
193
  # should validate_inclusion_of(:age).
194
194
  # in_range(0..21).
@@ -218,7 +218,7 @@ module Shoulda
218
218
  # end
219
219
  # end
220
220
  #
221
- # # Test::Unit
221
+ # # Minitest (Shoulda)
222
222
  # class IssueTest < ActiveSupport::TestCase
223
223
  # should validate_inclusion_of(:state).
224
224
  # in_array(%w(open resolved unresolved)).
@@ -248,7 +248,7 @@ module Shoulda
248
248
  # end
249
249
  # end
250
250
  #
251
- # # Test::Unit
251
+ # # Minitest (Shoulda)
252
252
  # class IssueTest < ActiveSupport::TestCase
253
253
  # should validate_inclusion_of(:state).
254
254
  # in_array(%w(open resolved unresolved)).
@@ -25,7 +25,7 @@ module Shoulda
25
25
  # end
26
26
  # end
27
27
  #
28
- # # Test::Unit
28
+ # # Minitest (Shoulda)
29
29
  # class UserTest < ActiveSupport::TestCase
30
30
  # should validate_length_of(:password).
31
31
  # is_at_least(10).
@@ -51,7 +51,7 @@ module Shoulda
51
51
  # it { should validate_length_of(:bio).is_at_least(15) }
52
52
  # end
53
53
  #
54
- # # Test::Unit
54
+ # # Minitest (Shoulda)
55
55
  #
56
56
  # class UserTest < ActiveSupport::TestCase
57
57
  # should validate_length_of(:bio).is_at_least(15)
@@ -75,7 +75,7 @@ module Shoulda
75
75
  # it { should validate_length_of(:status_update).is_at_most(140) }
76
76
  # end
77
77
  #
78
- # # Test::Unit
78
+ # # Minitest (Shoulda)
79
79
  # class UserTest < ActiveSupport::TestCase
80
80
  # should validate_length_of(:status_update).is_at_most(140)
81
81
  # end
@@ -98,7 +98,7 @@ module Shoulda
98
98
  # it { should validate_length_of(:favorite_superhero).is_equal_to(6) }
99
99
  # end
100
100
  #
101
- # # Test::Unit
101
+ # # Minitest (Shoulda)
102
102
  # class UserTest < ActiveSupport::TestCase
103
103
  # should validate_length_of(:favorite_superhero).is_equal_to(6)
104
104
  # end
@@ -123,7 +123,7 @@ module Shoulda
123
123
  # end
124
124
  # end
125
125
  #
126
- # # Test::Unit
126
+ # # Minitest (Shoulda)
127
127
  # class UserTest < ActiveSupport::TestCase
128
128
  # should validate_length_of(:password).
129
129
  # is_at_least(5).is_at_most(30)
@@ -151,7 +151,7 @@ module Shoulda
151
151
  # end
152
152
  # end
153
153
  #
154
- # # Test::Unit
154
+ # # Minitest (Shoulda)
155
155
  # class UserTest < ActiveSupport::TestCase
156
156
  # should validate_length_of(:password).
157
157
  # is_at_least(10).
@@ -180,7 +180,7 @@ module Shoulda
180
180
  # end
181
181
  # end
182
182
  #
183
- # # Test::Unit
183
+ # # Minitest (Shoulda)
184
184
  # class UserTest < ActiveSupport::TestCase
185
185
  # should validate_length_of(:secret_key).
186
186
  # is_at_least(15).
@@ -209,7 +209,7 @@ module Shoulda
209
209
  # end
210
210
  # end
211
211
  #
212
- # # Test::Unit
212
+ # # Minitest (Shoulda)
213
213
  # class UserTest < ActiveSupport::TestCase
214
214
  # should validate_length_of(:secret_key).
215
215
  # is_at_most(100).