Sha256: 36799e09367c5c979e21325fa770c2fbd8ef1d857774305a4627a1ee5e4d3c97

Contents?: true

Size: 1.34 KB

Versions: 4

Compression:

Stored size: 1.34 KB

Contents

require "pacto/version"

require "httparty"
require "hash_deep_merge"
require "json"
require "json-schema"
require "json-generator"
require "webmock"
require "ostruct"
require "erb"

require "pacto/extensions"
require "pacto/request"
require "pacto/response_adapter"
require "pacto/response"
require "pacto/instantiated_contract"
require "pacto/contract"
require "pacto/file_pre_processor"

module Pacto
  def self.build_from_file(contract_path, host, file_pre_processor=FilePreProcessor.new)
    contract_definition_expanded = file_pre_processor.process(File.read(contract_path))
    definition = JSON.parse(contract_definition_expanded)
    request = Request.new(host, definition["request"])
    response = Response.new(definition["response"])
    Contract.new(request, response)
  end

  def self.register(name, contract)
    raise ArgumentError, "contract \" #{name}\" has already been registered" if registered.has_key?(name)
    registered[name] = contract
  end

  def self.use(contract_name, values = nil)
    raise ArgumentError, "contract \"#{contract_name}\" not found" unless registered.has_key?(contract_name)
    instantiated_contract = registered[contract_name].instantiate(values)
    instantiated_contract.stub!
    instantiated_contract
  end

  def self.registered
    @registered ||= {}
  end

  def self.unregister_all!
    @registered = {}
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pacto-0.2.0 lib/pacto.rb
pacto-0.1.1 lib/pacto.rb
pacto-0.1.0 lib/pacto.rb
pacto-0.0.1 lib/pacto.rb