Sha256: 47fb04a6ed8a6c46cfa0a024dcbdde3f27ccfd041ea15ff1cac1690f74f18d68

Contents?: true

Size: 1.19 KB

Versions: 32

Compression:

Stored size: 1.19 KB

Contents

require "savon/mock"

module Savon
  module SpecHelper

    class Interface

      def mock!
        Savon.observers << self
      end

      def unmock!
        Savon.observers.clear
      end

      def expects(operation_name)
        expectation = MockExpectation.new(operation_name)
        expectations << expectation
        expectation
      end

      def expectations
        @expectations ||= []
      end

      def notify(operation_name, builder, globals, locals)
        expectation = expectations.shift

        if expectation
          expectation.actual(operation_name, builder, globals, locals)

          expectation.verify!
          expectation.response!
        else
          raise ExpectationError, "Unexpected request to the #{operation_name.inspect} operation."
        end
      rescue ExpectationError
        @expectations.clear
        raise
      end

      def verify!
        return if expectations.empty?
        expectations.each(&:verify!)
      rescue ExpectationError
        @expectations.clear
        raise
      end

    end

    def savon
      @savon ||= Interface.new
    end

    def verify_mocks_for_rspec
      super if defined? super
      savon.verify!
    end

  end
end

Version data entries

32 entries across 32 versions & 4 rubygems

Version Path
savon-2.12.1 lib/savon/mock/spec_helper.rb
savon-2.12.0 lib/savon/mock/spec_helper.rb
savon-2.11.2 lib/savon/mock/spec_helper.rb
savon-SU-2.11.1b lib/savon/mock/spec_helper.rb
savon-SU-2.11.1 lib/savon/mock/spec_helper.rb
savon-2.11.1 lib/savon/mock/spec_helper.rb
savon-2.11.0 lib/savon/mock/spec_helper.rb
savon-2.10.1 lib/savon/mock/spec_helper.rb
savon-2.10.0 lib/savon/mock/spec_helper.rb
savon-2.9.0 lib/savon/mock/spec_helper.rb
savon-2.8.1 lib/savon/mock/spec_helper.rb
savon-2.8.0 lib/savon/mock/spec_helper.rb
savon-2.7.2 lib/savon/mock/spec_helper.rb
savon-2.7.1 lib/savon/mock/spec_helper.rb
savon-2.7.0 lib/savon/mock/spec_helper.rb
savon-2.6.0 lib/savon/mock/spec_helper.rb
savon-2.5.1 lib/savon/mock/spec_helper.rb
savon-2.5.0 lib/savon/mock/spec_helper.rb
savon_with_adapter-2.4.1 lib/savon/mock/spec_helper.rb
savon-2.4.0 lib/savon/mock/spec_helper.rb