Module: Contracts

Defined in:
lib/contracts.rb,
lib/contracts/request.rb,
lib/contracts/version.rb,
lib/contracts/contract.rb,
lib/contracts/response.rb,
lib/contracts/rake_task.rb,
lib/contracts/extensions.rb,
lib/contracts/response_adapter.rb,
lib/contracts/instantiated_contract.rb

Defined Under Namespace

Modules: Extensions Classes: Contract, InstantiatedContract, RakeTask, Request, Response, ResponseAdapter

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.build_from_file(contract_path, host) ⇒ Object



19
20
21
22
23
24
# File 'lib/contracts.rb', line 19

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

.register(name, contract) ⇒ Object

Raises:

  • (ArgumentError)


26
27
28
29
# File 'lib/contracts.rb', line 26

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

.registeredObject



39
40
41
# File 'lib/contracts.rb', line 39

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

.unregister_all!Object



43
44
45
# File 'lib/contracts.rb', line 43

def self.unregister_all!
  @registered = {}
end

.use(contract_name, values = nil, path = nil) ⇒ Object

Raises:

  • (ArgumentError)


31
32
33
34
35
36
37
# File 'lib/contracts.rb', line 31

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