Sha256: a107f415e5e1731fd5a49e878de4a5a1223eb1b8fba052ecb8f6f689131bda29

Contents?: true

Size: 1.64 KB

Versions: 8

Compression:

Stored size: 1.64 KB

Contents

module RSpec
  module Rails
    if defined?(ActiveRecord)
      module Extensions
        module ActiveRecord
          # Extension to enhance `to have` on AR Model classes
          #
          # @example
          #
          #     ModelClass.should have(:no).records
          #     ModelClass.should have(1).record
          #     ModelClass.should have(n).records
          if ::ActiveRecord::VERSION::STRING >= '4'
            def records
              all.to_a
            end
          else
            def records
              find(:all)
            end
          end
          alias :record :records
        end

        class ::ActiveRecord::Base
          extend RSpec::Rails::Extensions::ActiveRecord
        end
      end
    end
  end
end

if defined?(::ActiveModel)
  module ::ActiveModel::Validations
    # Extension to enhance `to have` on AR Model instances.  Calls
    # model.valid? in order to prepare the object's errors object. Accepts
    # a :context option to specify the validation context.
    #
    # You can also use this to specify the content of the error messages.
    #
    # @example
    #
    #     expect(model).to have(:no).errors_on(:attribute)
    #     expect(model).to have(1).error_on(:attribute)
    #     expect(model).to have(n).errors_on(:attribute)
    #     expect(model).to have(n).errors_on(:attribute, :context => :create)
    #
    #     expect(model.errors_on(:attribute)).to include("can't be blank")
    def errors_on(attribute, options = {})
      valid_args = [options[:context]].compact
      self.valid?(*valid_args)

      [self.errors[attribute]].flatten.compact
    end

    alias :error_on :errors_on
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rspec-rails-2.99.0 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.99.0.rc1 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.14.2 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-3.0.0.beta2 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.99.0.beta2 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.14.1 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-3.0.0.beta1 lib/rspec/rails/extensions/active_record/base.rb
rspec-rails-2.99.0.beta1 lib/rspec/rails/extensions/active_record/base.rb