spec/integration/e2e_spec.rb in pacto-0.3.1 vs spec/integration/e2e_spec.rb in pacto-0.4.0.rc1

- old
+ new

@@ -1,62 +1,61 @@ -describe 'Pacto' do - let(:contract_path) { 'spec/integration/data/simple_contract.json' } - let(:strict_contract_path) { 'spec/integration/data/strict_contract.json' } +# -*- encoding : utf-8 -*- +describe Pacto do + let(:contract_path) { 'spec/fixtures/contracts/simple_contract.json' } + let(:strict_contract_path) { 'spec/fixtures/contracts/strict_contract.json' } before :all do WebMock.allow_net_connect! end - context 'Contract validation' do - before :all do - @server = Pacto::Server::Dummy.new 8000, '/hello', '{"message": "Hello World!"}' - @server.start + context 'Contract investigation' do + around :each do |example| + run_pacto do + example.run + end end - after :all do - @server.terminate - end - it 'verifies the contract against a producer' do - contract = Pacto.load_contracts(contract_path, 'http://localhost:8000') - expect(contract.validate_all.flatten).to eq([]) + # FIXME: Does this really test what it says it does?? + contract = described_class.load_contracts(contract_path, 'http://localhost:8000') + expect(contract.simulate_consumers.map(&:successful?).uniq).to eq([true]) end end context 'Stubbing a collection of contracts' do it 'generates a server that stubs the contract for consumers' do - contracts = Pacto.load_contracts(contract_path, 'http://dummyprovider.com') - contracts.stub_all + contracts = described_class.load_contracts(contract_path, 'http://dummyprovider.com') + contracts.stub_providers response = get_json('http://dummyprovider.com/hello') expect(response['message']).to eq 'bar' end end context 'Journey' do it 'stubs multiple services with a single use' do - Pacto.configure do |c| + described_class.configure do |c| c.strict_matchers = false c.register_hook Pacto::Hooks::ERBHook.new end - contracts = Pacto.load_contracts 'spec/integration/data/', 'http://dummyprovider.com' - contracts.stub_all(:device_id => 42) + contracts = described_class.load_contracts 'spec/fixtures/contracts/', 'http://dummyprovider.com' + contracts.stub_providers(device_id: 42) login_response = get_json('http://dummyprovider.com/hello') expect(login_response.keys).to eq ['message'] expect(login_response['message']).to be_kind_of(String) devices_response = get_json('http://dummyprovider.com/strict') - expect(devices_response['devices']).to have(2).items + expect(devices_response['devices'].size).to eq(2) expect(devices_response['devices'][0]).to eq('/dev/42') expect(devices_response['devices'][1]).to eq('/dev/43') end end def get_json(url) response = Faraday.get(url) do |req| - req.headers = {'Accept' => 'application/json' } + req.headers = { 'Accept' => 'application/json' } end MultiJson.load(response.body) end end