Sha256: f144257e6d364cf0d9220d6ba454bd96d9a30b6046d6ee65d52bd08cc9929cdb

Contents?: true

Size: 1.81 KB

Versions: 9

Compression:

Stored size: 1.81 KB

Contents

require 'spec_helper'

describe Bogus::VerifiesContracts do
  let(:real_interactions) { stub }
  let(:doubled_interactions) { stub }
  let(:verifies_contracts) { isolate(Bogus::VerifiesContracts) }

  let(:matched_interaction) { interaction("matched") }

  it "fails unmatched calls" do
    first_interaction = interaction("first")
    second_interaction = interaction("second")
    other_interaction = interaction("other")

    stub(doubled_interactions).for_fake(:fake_name){[first_interaction, matched_interaction, second_interaction]}
    stub(real_interactions).for_fake(:fake_name){[matched_interaction, other_interaction]}

    stub(real_interactions).recorded?(:fake_name, first_interaction) { false }
    stub(real_interactions).recorded?(:fake_name, second_interaction) { false }
    stub(real_interactions).recorded?(:fake_name, matched_interaction) { true }

    expect_verify_to_raise_error_with_interactions(:fake_name,
                                                   [first_interaction, second_interaction],
                                                   [matched_interaction, other_interaction])
  end

  it "passes with all calls matched" do
    stub(doubled_interactions).for_fake(:fake_name) { [matched_interaction] }
    stub(real_interactions).recorded?(:fake_name, matched_interaction) { true }

    expect {
      verifies_contracts.verify(:fake_name)
    }.not_to raise_error
  end

  def expect_verify_to_raise_error_with_interactions(name, missed, real)
    verifies_contracts.verify(name)
    fail
  rescue Bogus::ContractNotFulfilled => contract_error
    contract_error.fake_name.should == name
    contract_error.missed_interactions.should == missed
    contract_error.actual_interactions.should == real
  end

  def interaction(method)
    Bogus::Interaction.new(method, [:foo, :bar]) { "return value" }
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
bogus-0.1.4 spec/bogus/contracts/verifies_contracts_spec.rb
bogus-0.1.3 spec/bogus/verifies_contracts_spec.rb
bogus-0.1.2 spec/bogus/verifies_contracts_spec.rb
bogus-0.1.1 spec/bogus/verifies_contracts_spec.rb
bogus-0.1.0 spec/bogus/verifies_contracts_spec.rb
bogus-0.0.4 spec/bogus/verifies_contracts_spec.rb
bogus-0.0.3 spec/bogus/verifies_contracts_spec.rb
bogus-0.0.3.rc.2 spec/bogus/verifies_contracts_spec.rb
bogus-0.0.3.rc.1 spec/bogus/verifies_contracts_spec.rb