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