Sha256: c74ce64f5ff15a901a8eec60f286d3ce69c5a67396f114cabbea8af6b9ecc300

Contents?: true

Size: 1.29 KB

Versions: 48

Compression:

Stored size: 1.29 KB

Contents

module RSpec
  module Rails
    module Matchers
      # @private
      class BeValid < RSpec::Matchers::BuiltIn::Be
        def initialize(*args)
          @args = args
        end

        def matches?(actual)
          @actual = actual
          actual.valid?(*@args)
        end

        def failure_message
          message = "expected #{actual.inspect} to be valid"

          if actual.respond_to?(:errors) && actual.method(:errors).arity < 1
            errors = if actual.errors.respond_to?(:full_messages)
                       actual.errors.full_messages
                     else
                       actual.errors
                     end

            message << ", but got errors: #{errors.map(&:to_s).join(', ')}"
          end

          message
        end

        def failure_message_when_negated
          "expected #{actual.inspect} not to be valid"
        end
      end

      # @api public
      # Passes if the given model instance's `valid?` method is true, meaning
      # all of the `ActiveModel::Validations` passed and no errors exist. If a
      # message is not given, a default message is shown listing each error.
      #
      # @example
      #     thing = Thing.new
      #     expect(thing).to be_valid
      def be_valid(*args)
        BeValid.new(*args)
      end
    end
  end
end

Version data entries

48 entries across 45 versions & 7 rubygems

Version Path
rspec-rails-7.1.1 lib/rspec/rails/matchers/be_valid.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/rspec-rails-7.1.0/lib/rspec/rails/matchers/be_valid.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/rspec-rails-7.1.0/lib/rspec/rails/matchers/be_valid.rb
rspec-rails-7.1.0 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-7.0.2 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-7.0.1 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-7.0.0 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.5 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.4 lib/rspec/rails/matchers/be_valid.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/rspec-rails-6.1.3/lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.3 lib/rspec/rails/matchers/be_valid.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/rspec-rails-6.0.4/lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.2 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.1 lib/rspec/rails/matchers/be_valid.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/rspec-rails-5.1.1/lib/rspec/rails/matchers/be_valid.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/rspec-rails-5.1.2/lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.1.0 lib/rspec/rails/matchers/be_valid.rb
rspec-rails-6.0.4 lib/rspec/rails/matchers/be_valid.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/rspec-rails-5.1.1/lib/rspec/rails/matchers/be_valid.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/rspec-rails-5.1.2/lib/rspec/rails/matchers/be_valid.rb