diff --git a/lib/rspec/rails/extensions/active_record/base.rb b/lib/rspec/rails/extensions/active_record/base.rb
index a0a8119bad..1bcc09d559 100644
--- a/lib/rspec/rails/extensions/active_record/base.rb
+++ b/lib/rspec/rails/extensions/active_record/base.rb
@@ -3,42 +3,38 @@ module Rails
if using_active_record?
module Extensions
module ActiveRecord
- module ClassMethods
- # :call-seq:
- # ModelClass.should have(:no).records
- # ModelClass.should have(1).record
- # ModelClass.should have(n).records
- #
- # Extension to enhance should have on AR Model classes
- def records
- find(:all)
- end
- alias :record :records
- end
-
- module InstanceMethods
- # :call-seq:
- # model.should have(:no).errors_on(:attribute)
- # model.should have(1).error_on(:attribute)
- # model.should have(n).errors_on(:attribute)
- #
- # Extension to enhance should have on AR Model instances.
- # Calls model.valid? in order to prepare the object's errors
- # object.
- def errors_on(attribute)
- self.valid?
- [self.errors[attribute]].flatten.compact
- end
- alias :error_on :errors_on
+ # :call-seq:
+ # ModelClass.should have(:no).records
+ # ModelClass.should have(1).record
+ # ModelClass.should have(n).records
+ #
+ # Extension to enhance should have on AR Model classes
+ def records
+ find(:all)
end
+ alias :record :records
end
- end
- class ::ActiveRecord::Base #:nodoc:
- extend RSpec::Rails::Extensions::ActiveRecord::ClassMethods
- include RSpec::Rails::Extensions::ActiveRecord::InstanceMethods
+ class ::ActiveRecord::Base #:nodoc:
+ extend RSpec::Rails::Extensions::ActiveRecord
+ end
end
end
end
end
+module ::ActiveModel::Validations
+ # :call-seq:
+ # model.should have(:no).errors_on(:attribute)
+ # model.should have(1).error_on(:attribute)
+ # model.should have(n).errors_on(:attribute)
+ #
+ # Extension to enhance should have on AR Model instances.
+ # Calls model.valid? in order to prepare the object's errors
+ # object.
+ def errors_on(attribute)
+ self.valid?
+ [self.errors[attribute]].flatten.compact
+ end
+ alias :error_on :errors_on
+end
diff --git a/spec/rspec/rails/extensions/active_model/errors_on_spec.rb b/spec/rspec/rails/extensions/active_model/errors_on_spec.rb
new file mode 100644
index 0000000000..cbfe0da1da
--- /dev/null
+++ b/spec/rspec/rails/extensions/active_model/errors_on_spec.rb
@@ -0,0 +1,23 @@
+require "spec_helper"
+
+describe "errors_on" do
+ let(:klass) do
+ Class.new do
+ include ActiveModel::Validations
+ end
+ end
+
+ it "calls valid?" do
+ model = klass.new
+ model.should_receive(:valid?)
+ model.errors_on(:foo)
+ end
+
+ it "returns the errors on that attribute" do
+ model = klass.new
+ model.stub(:errors) do
+ { :foo => ['a', 'b'] }
+ end
+ model.errors_on(:foo).should eq(['a','b'])
+ end
+end
diff --git a/spec/rspec/rails/extensions/active_record/records_spec.rb b/spec/rspec/rails/extensions/active_record/records_spec.rb
new file mode 100644
index 0000000000..173b60d368
--- /dev/null
+++ b/spec/rspec/rails/extensions/active_record/records_spec.rb
@@ -0,0 +1,9 @@
+require 'spec_helper'
+
+describe "records" do
+ it "delegates to find(:all)" do
+ klass = Class.new(ActiveRecord::Base)
+ klass.should_receive(:find).with(:all)
+ klass.records
+ end
+end