Sha256: a722a4e6888a5f5edf53eb94c40cc94d745ce484d44431b1fcaa675ad1f9efa0

Contents?: true

Size: 693 Bytes

Versions: 2

Compression:

Stored size: 693 Bytes

Contents

# frozen_string_literal: true

module Clowne
  module RSpec
    module Helpers # :nodoc: all
      attr_reader :cloner

      def with_traits(*traits)
        @traits = traits
        self
      end

      def matches?(actual)
        raise ArgumentError, non_cloner_message unless actual <= ::Clowne::Cloner

        @cloner = actual
        super
      end

      def plan
        @plan ||=
          if @traits.nil?
            cloner.default_plan
          else
            cloner.plan_with_traits(@traits)
          end
      end

      def non_cloner_message
        'expected a cloner to be passed to `expect(...)`, ' \
        "but got #{actual_formatted}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clowne-1.1.0 lib/clowne/rspec/helpers.rb
clowne-1.0.0 lib/clowne/rspec/helpers.rb