lib/pacto.rb in pacto-0.2.5 vs lib/pacto.rb in pacto-0.3.0.pre
- old
+ new
@@ -1,46 +1,75 @@
-require "pacto/version"
+require 'pacto/version'
-require "httparty"
-require "hash_deep_merge"
-require "json"
-require "json-schema"
-require "json-generator"
-require "webmock"
-require "ostruct"
-require "erb"
+require 'httparty'
+require 'hash_deep_merge'
+require 'multi_json'
+require 'json-schema'
+require 'json-generator'
+require 'webmock'
+require 'ostruct'
+require 'erb'
+require 'logger'
-require "pacto/exceptions/invalid_contract.rb"
-require "pacto/extensions"
-require "pacto/request"
-require "pacto/response_adapter"
-require "pacto/response"
-require "pacto/instantiated_contract"
-require "pacto/contract"
-require "pacto/contract_factory"
-require "pacto/file_pre_processor"
+require 'pacto/core/contract_repository'
+require 'pacto/core/configuration'
+require 'pacto/core/callback'
+require 'pacto/logger'
+require 'pacto/exceptions/invalid_contract.rb'
+require 'pacto/extensions'
+require 'pacto/request'
+require 'pacto/response_adapter'
+require 'pacto/response'
+require 'pacto/stubs/built_in'
+require 'pacto/contract'
+require 'pacto/contract_factory'
+require 'pacto/erb_processor'
+require 'pacto/hash_merge_processor'
+require 'pacto/stubs/built_in'
+require 'pacto/meta_schema'
+require 'pacto/hooks/erb_hook'
+require 'pacto/generator'
module Pacto
- def self.build_from_file(contract_path, host, file_pre_processor=FilePreProcessor.new)
- ContractFactory.build_from_file(contract_path, host, file_pre_processor)
+ class << self
+
+ def configuration
+ @configuration ||= Configuration.new
+ end
+
+ def clear!
+ Pacto.configuration.provider.reset!
+ @configuration = nil
+ unregister_all!
+ end
+
+ def configure
+ yield(configuration)
+ end
end
- def self.register(name, contract)
- raise ArgumentError, "contract \" #{name}\" has already been registered" if registered.has_key?(name)
- registered[name] = contract
+ def self.validate_contract contract
+ Pacto::MetaSchema.new.validate contract
+ puts 'All contracts successfully meta-validated'
+ true
+ rescue InvalidContract => exception
+ puts 'Validation errors detected'
+ exception.errors.each do |error|
+ puts " Error: #{error}"
+ end
+ false
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
+ def self.build_from_file(contract_path, host, file_pre_processor = Pacto.configuration.preprocessor)
+ ContractFactory.build_from_file(contract_path, host, file_pre_processor)
end
- def self.registered
- @registered ||= {}
+ def self.load(contract_name)
+ build_from_file(path_for(contract_name), nil)
end
- def self.unregister_all!
- @registered = {}
+ private
+
+ def self.path_for(contract)
+ File.join(configuration.contracts_path, "#{contract}.json")
end
end