Sha256: 841708e7adb337f3a6850614f965ccd31f6baf6cb7019686203c18dd9e723783

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

module RSpec
  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 <tt>should have</tt> 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 <tt>should have</tt> 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
        end
      end

      class ::ActiveRecord::Base #:nodoc:
        extend  RSpec::Rails::Extensions::ActiveRecord::ClassMethods
        include RSpec::Rails::Extensions::ActiveRecord::InstanceMethods
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rspec-rails-2.0.1 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.0.0 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.0.0.rc lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.0.0.beta.22 lib/rspec/rails/extensions/active_record/base.rb