spec/unit/pacto/pacto_spec.rb in pacto-0.3.1 vs spec/unit/pacto/pacto_spec.rb in pacto-0.4.0.rc1

- old
+ new

@@ -1,5 +1,6 @@ +# -*- encoding : utf-8 -*- require 'spec_helper' describe Pacto do around(:each) do |example| $stdout = StringIO.new @@ -9,54 +10,38 @@ def output $stdout.string.strip end - def mock_validation(errors) + def mock_investigation(errors) expect(JSON::Validator).to receive(:fully_validate).with(any_args).and_return errors end describe '.validate_contract' do context 'valid' do - it 'displays a success message and return true' do - mock_validation [] - success = Pacto.validate_contract 'my_contract.json' - expect(output).to eq 'Validating my_contract.json' - expect(success).to be_true + it 'returns true' do + mock_investigation [] + success = described_class.validate_contract 'my_contract.json' + expect(success).to be true end end context 'invalid' do - it 'displays one error messages and return false' do - mock_validation ['Error 1'] - success = Pacto.validate_contract 'my_contract.json' - expect(output).to match(/error/) - expect(success).to be_false + it 'raises an InvalidContract error' do + mock_investigation ['Error 1'] + expect { described_class.validate_contract 'my_contract.json' }.to raise_error(InvalidContract) end - - it 'displays several error messages and return false' do - mock_validation ['Error 1', 'Error 2'] - success = Pacto.validate_contract 'my_contract.json' - expect(success).to be_false - end end end describe 'loading contracts' do let(:contracts_path) { 'path/to/dir' } let(:host) { 'localhost' } - let(:contract1) { double } - let(:contract2) { double } - let(:factory) { double(:factory) } - before do - allow(Pacto::ContractFactory).to receive(:new).and_return(factory) - end - it 'instantiates a contract list' do - allow(Pacto::ContractFiles).to receive(:for).with(contracts_path).and_return { %w{file1 file2} } - allow(factory).to receive(:build).with(%w{file1 file2}, host).and_return { [contract1, contract2] } - expect(Pacto::ContractList).to receive(:new).with([contract1, contract2]) - Pacto.load_contracts(contracts_path, host) + expect(Pacto::ContractSet).to receive(:new) do |contracts| + contracts.each { |contract| expect(contract).to be_a_kind_of(Pacto::Contract) } + end + described_class.load_contracts('spec/fixtures/contracts/', host) end end end