Sha256: c984784fb30f7e55249ae83b38b066def971a200d6545a7858a78058c046cc80

Contents?: true

Size: 997 Bytes

Versions: 1

Compression:

Stored size: 997 Bytes

Contents

require_relative "records_demonstration"
require_relative "verifies_call/finds_verifiable_calls"
require_relative "verifies_call/raises_verification_error"

module Mocktail
  class VerifiesCall
    extend T::Sig

    def initialize
      @records_demonstration = RecordsDemonstration.new
      @finds_verifiable_calls = FindsVerifiableCalls.new
      @raises_verification_error = RaisesVerificationError.new
    end

    def verify(demo, demo_config)
      recording = @records_demonstration.record(demo, demo_config)
      verifiable_calls = @finds_verifiable_calls.find(recording, demo_config)

      unless verification_satisfied?(verifiable_calls.size, demo_config)
        @raises_verification_error.raise(recording, verifiable_calls, demo_config)
      end
      nil
    end

    private

    def verification_satisfied?(verifiable_call_count, demo_config)
      (demo_config.times.nil? && verifiable_call_count > 0) ||
        (demo_config.times == verifiable_call_count)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mocktail-2.0.0 lib/mocktail/verifies_call.rb