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