diff --git a/lib/shoulda/active_record/macros.rb b/lib/shoulda/active_record/macros.rb index 4449c7e..00c55c6 100644 --- a/lib/shoulda/active_record/macros.rb +++ b/lib/shoulda/active_record/macros.rb @@ -36,10 +36,7 @@ def should_validate_presence_of(*attributes) message = get_options!(attributes, :message) attributes.each do |attribute| - matcher = validate_presence_of(attribute).with_message(message) - should matcher.description do - assert_accepts(matcher, subject) - end + should validate_presence_of(attribute).with_message(message) end end @@ -70,9 +67,7 @@ def should_validate_uniqueness_of(*attributes) matcher = validate_uniqueness_of(attribute). with_message(message).scoped_to(scope) matcher = matcher.case_insensitive unless case_sensitive - should matcher.description do - assert_accepts(matcher, subject) - end + should matcher end end @@ -84,10 +79,7 @@ def should_allow_mass_assignment_of(*attributes) get_options!(attributes) attributes.each do |attribute| - matcher = allow_mass_assignment_of(attribute) - should matcher.description do - assert_accepts matcher, subject - end + should allow_mass_assignment_of(attribute) end end @@ -99,10 +91,7 @@ def should_not_allow_mass_assignment_of(*attributes) get_options!(attributes) attributes.each do |attribute| - matcher = allow_mass_assignment_of(attribute) - should "not #{matcher.description}" do - assert_rejects matcher, subject - end + should_not allow_mass_assignment_of(attribute) end end @@ -114,10 +103,7 @@ def should_have_readonly_attributes(*attributes) get_options!(attributes) attributes.each do |attribute| - matcher = have_readonly_attribute(attribute) - should matcher.description do - assert_accepts matcher, subject - end + should have_readonly_attribute(attribute) end end @@ -134,10 +120,7 @@ def should_have_readonly_attributes(*attributes) def should_not_allow_values_for(attribute, *bad_values) message = get_options!(bad_values, :message) bad_values.each do |value| - matcher = allow_value(value).for(attribute).with_message(message) - should "not #{matcher.description}" do - assert_rejects matcher, subject - end + should_not allow_value(value).for(attribute).with_message(message) end end @@ -149,10 +132,7 @@ def should_not_allow_values_for(attribute, *bad_values) def should_allow_values_for(attribute, *good_values) get_options!(good_values) good_values.each do |value| - matcher = allow_value(value).for(attribute) - should matcher.description do - assert_accepts matcher, subject - end + should allow_value(value).for(attribute) end end @@ -171,15 +151,11 @@ def should_ensure_length_in_range(attribute, range, opts = {}) short_message, long_message = get_options!([opts], :short_message, :long_message) - matcher = ensure_length_of(attribute). + should ensure_length_of(attribute). is_at_least(range.first). with_short_message(short_message). is_at_most(range.last). with_long_message(long_message) - - should matcher.description do - assert_accepts matcher, subject - end end # Ensures that the length of the attribute is at least a certain length @@ -194,13 +170,9 @@ def should_ensure_length_in_range(attribute, range, opts = {}) def should_ensure_length_at_least(attribute, min_length, opts = {}) short_message = get_options!([opts], :short_message) - matcher = ensure_length_of(attribute). + should ensure_length_of(attribute). is_at_least(min_length). with_short_message(short_message) - - should matcher.description do - assert_accepts matcher, subject - end end # Ensures that the length of the attribute is exactly a certain length @@ -214,13 +186,9 @@ def should_ensure_length_at_least(attribute, min_length, opts = {}) # def should_ensure_length_is(attribute, length, opts = {}) message = get_options!([opts], :message) - matcher = ensure_length_of(attribute). + should ensure_length_of(attribute). is_equal_to(length). with_message(message) - - should matcher.description do - assert_accepts matcher, subject - end end # Ensure that the attribute is in the range specified @@ -239,14 +207,11 @@ def should_ensure_value_in_range(attribute, range, opts = {}) :message, :low_message, :high_message) - matcher = ensure_inclusion_of(attribute). + should ensure_inclusion_of(attribute). in_range(range). with_message(message). with_low_message(low_message). with_high_message(high_message) - should matcher.description do - assert_accepts matcher, subject - end end # Ensure that the attribute is numeric @@ -261,11 +226,8 @@ def should_ensure_value_in_range(attribute, range, opts = {}) def should_validate_numericality_of(*attributes) message = get_options!(attributes, :message) attributes.each do |attribute| - matcher = validate_numericality_of(attribute). + should validate_numericality_of(attribute). with_message(message) - should matcher.description do - assert_accepts matcher, subject - end end end @@ -285,10 +247,7 @@ def should_validate_numericality_of(*attributes) def should_have_many(*associations) through, dependent = get_options!(associations, :through, :dependent) associations.each do |association| - matcher = have_many(association).through(through).dependent(dependent) - should matcher.description do - assert_accepts(matcher, subject) - end + should have_many(association).through(through).dependent(dependent) end end @@ -305,10 +264,7 @@ def should_have_many(*associations) def should_have_one(*associations) dependent, through = get_options!(associations, :dependent, :through) associations.each do |association| - matcher = have_one(association).dependent(dependent).through(through) - should matcher.description do - assert_accepts(matcher, subject) - end + should have_one(association).dependent(dependent).through(through) end end @@ -321,10 +277,7 @@ def should_have_and_belong_to_many(*associations) get_options!(associations) associations.each do |association| - matcher = have_and_belong_to_many(association) - should matcher.description do - assert_accepts(matcher, subject) - end + should have_and_belong_to_many(association) end end @@ -335,10 +288,7 @@ def should_have_and_belong_to_many(*associations) def should_belong_to(*associations) dependent = get_options!(associations, :dependent) associations.each do |association| - matcher = belong_to(association).dependent(dependent) - should matcher.description do - assert_accepts(matcher, subject) - end + should belong_to(association).dependent(dependent) end end @@ -388,14 +338,11 @@ def should_have_db_columns(*columns) get_options!(columns, :type, :precision, :limit, :default, :null, :scale, :sql_type) columns.each do |name| - matcher = have_db_column(name). + should have_db_column(name). of_type(column_type). with_options(:precision => precision, :limit => limit, :default => default, :null => null, :scale => scale, :sql_type => sql_type) - should matcher.description do - assert_accepts(matcher, subject) - end end end @@ -421,10 +368,7 @@ def should_have_db_indices(*columns) unique = get_options!(columns, :unique) columns.each do |column| - matcher = have_db_index(column).unique(unique) - should matcher.description do - assert_accepts(matcher, subject) - end + should have_db_index(column).unique(unique) end end @@ -443,10 +387,7 @@ def should_validate_acceptance_of(*attributes) message = get_options!(attributes, :message) attributes.each do |attribute| - matcher = validate_acceptance_of(attribute).with_message(message) - should matcher.description do - assert_accepts matcher, subject - end + should validate_acceptance_of(attribute).with_message(message) end end end diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index 327d138..6f23c43 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -12,8 +12,4 @@ class PostTest < ActiveSupport::TestCase should_validate_presence_of :body, :message => /wtf/ should_validate_presence_of :title should_validate_numericality_of :user_id - - should_fail do - should_validate_uniqueness_of :title, :case_sensitive => false - end end diff --git a/test/unit/tag_test.rb b/test/unit/tag_test.rb index 057995f..4ada181 100644 --- a/test/unit/tag_test.rb +++ b/test/unit/tag_test.rb @@ -8,8 +8,4 @@ class TagTest < ActiveSupport::TestCase should_not_allow_mass_assignment_of :secret should_allow_mass_assignment_of :name - - should_fail do - should_not_allow_mass_assignment_of :name - end end diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 3bf2424..c53527d 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -18,12 +18,6 @@ class UserTest < ActiveSupport::TestCase should_have_db_index [:email, :name], :unique => true should_have_db_index :age, :unique => false - should_fail do - should_have_db_index :phone - should_have_db_index :email, :unique => false - should_have_db_index :age, :unique => true - end - should_not_allow_values_for :email, "blah", "b lah" should_allow_values_for :email, "a@b.com", "asdf@asdf.com" should_allow_values_for :age, 1, 10, 99 @@ -33,20 +27,6 @@ class UserTest < ActiveSupport::TestCase should_ensure_value_in_range :age, 1..100, :low_message => /greater/, :high_message => /less/ - context "with a different low message" do - should_fail do - should_ensure_value_in_range :age, 1..100, :low_message => /more/, - :high_message => /less/ - end - end - - context "with a different high message" do - should_fail do - should_ensure_value_in_range :age, 1..100, :low_message => /greater/, - :high_message => /fewer/ - end - end - should_not_allow_mass_assignment_of :password should_have_class_methods :find, :destroy should_have_instance_methods :email, :age, :email=, :valid? @@ -62,14 +42,5 @@ class UserTest < ActiveSupport::TestCase should_have_readonly_attributes :name - should_fail do - should_not_allow_mass_assignment_of :name, :age - end - should_have_one :profile, :through => :registration - - should_fail do - should_have_one :profile, :through => :interview - should_have_one :address, :through => :registration - end end