Sha256: 3aa138c30a8356dc08e90f1d57dc930e76a6e96504d9a26cd12d10710cee1ee2

Contents?: true

Size: 887 Bytes

Versions: 43

Compression:

Stored size: 887 Bytes

Contents

# Helper services with prepended ServiceModule
# https://gitlab.com/gitlab-org/gitlab-foss/-/issues/33587
#
# ex:
# expect_next_instance_of(service_class) do |instance|
#   expect(instance).to receive(:call)
# end

module NextInstanceOf
  def expect_next_instance_of(klass, *new_args)
    stub_new(expect(klass), *new_args) do |expectation|
      yield(expectation)
    end
  end

  def allow_next_instance_of(klass, *new_args)
    stub_new(allow(klass), *new_args) do |allowance|
      yield(allowance)
    end
  end

  private

  def stub_new(target, *new_args)
    receive_new = receive(:new)
    receive_new.with(*new_args) if new_args.any?

    target.to receive_new.and_wrap_original do |method, *original_args|
      method.call(*original_args).tap do |instance|
        yield(instance)
      end
    end
  end
end

RSpec.configure do |config|
  config.include NextInstanceOf
end

Version data entries

43 entries across 43 versions & 2 rubygems

Version Path
spree_core-4.10.1 lib/spree/testing_support/next_instance_of.rb
spree_core-4.10.0 lib/spree/testing_support/next_instance_of.rb
spree_core-4.9.0 lib/spree/testing_support/next_instance_of.rb
spree_core-4.8.3 lib/spree/testing_support/next_instance_of.rb
spree_core-4.8.2 lib/spree/testing_support/next_instance_of.rb
spree_core-4.7.3 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.6 lib/spree/testing_support/next_instance_of.rb
spree_core-4.5.5 lib/spree/testing_support/next_instance_of.rb
spree_core-4.2.7 lib/spree/testing_support/next_instance_of.rb
spree_core-4.3.3 lib/spree/testing_support/next_instance_of.rb
spree_core-4.4.1 lib/spree/testing_support/next_instance_of.rb
spree_core-4.5.4 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.5 lib/spree/testing_support/next_instance_of.rb
spree_core-4.7.2 lib/spree/testing_support/next_instance_of.rb
spree_core-4.7.1 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.4 lib/spree/testing_support/next_instance_of.rb
spree_core-4.7.0 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.3 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.2 lib/spree/testing_support/next_instance_of.rb
spree_core-4.6.1 lib/spree/testing_support/next_instance_of.rb