Sha256: 9b5cd0480cb0a5db48766a2368f55626b28d420ba28b0eb39b416c3d24c186bf

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

# -*- encoding : utf-8 -*-
require 'spec_helper'

describe Pacto do
  around(:each) do |example|
    $stdout = StringIO.new
    example.run
    $stdout = STDOUT
  end

  def output
    $stdout.string.strip
  end

  def mock_investigation(errors)
    expect(JSON::Validator).to receive(:fully_validate).with(any_args).and_return errors
  end

  describe '.validate_contract' do
    let(:contract_path) { contract_file 'contract' }

    context 'valid' do
      it 'returns true' do
        mock_investigation []
        success = described_class.validate_contract contract_path
        expect(success).to be true
      end
    end

    context 'invalid' do
      it 'raises an InvalidContract error' do
        mock_investigation ['Error 1']
        expect { described_class.validate_contract contract_path }.to raise_error(Pacto::InvalidContract)
      end
    end
  end

  describe 'loading contracts' do
    let(:contracts_path) { contracts_folder }
    let(:host) { 'localhost' }

    it 'instantiates a contract list' do
      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(contracts_path, host)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pacto-0.4.0.rc3 spec/unit/pacto/pacto_spec.rb
pacto-0.4.0.rc2 spec/unit/pacto/pacto_spec.rb