Sha256: 6ee555c6e1f51d76cb26e9d7c8adfd26a2a88fedd7bec016142096b29baa0094

Contents?: true

Size: 1.8 KB

Versions: 3

Compression:

Stored size: 1.8 KB

Contents

require "./spec/spec_helper"

describe Economic::Proxies::Actions::FindByName do
  let(:session) { make_session }
  let(:proxy) { Economic::CreditorContactProxy.new(session) }

  subject {
    Economic::Proxies::Actions::FindByName.new(proxy, "Bob")
  }

  describe "#call" do
    it "gets contact data from the API" do
      mock_request("CreditorContact_FindByName", {"name" => "Bob"}, :multiple)
      subject.call
    end

    it "returns creditor contacts" do
      stub_request("CreditorContact_FindByName", nil, :multiple)
      expect(subject.call.first).to be_instance_of(Economic::CreditorContact)
    end

    it "returns empty when nothing is found" do
      stub_request("CreditorContact_FindByName", nil, :none)
      expect(subject.call).to be_empty
    end

    context "when calling proxy is owned by session" do
      it "returns all creditor contacts" do
        stub_request("CreditorContact_FindByName", nil, :multiple)
        expect(subject.call.size).to eq(2)
      end
    end

    context "when calling proxy is owned by a creditor" do
      it "returns only contacts for creditor" do
        # Note the order of these stubs actually matters. They need to match
        # the order they are called in in the implementation
        stub_request("CreditorContact_FindByName", nil, :multiple)
        stub_request("CreditorContact_GetData", nil, :success)
        stub_request("Creditor_GetData", nil, :success)
        stub_request("CreditorContact_GetData", nil, :success)
        stub_request("Creditor_GetData", nil, :success)
        creditor = session.creditors.build
        proxy = Economic::CreditorContactProxy.new(creditor)
        action = Economic::Proxies::Actions::FindByName.new(proxy, "Bob")
        action.call.each { |contact| expect(contact.creditor).to eq(creditor) }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rconomic-0.7.0 spec/economic/proxies/actions/find_by_name_spec.rb
rconomic-0.6.1 spec/economic/proxies/actions/find_by_name_spec.rb
rconomic-0.6.0 spec/economic/proxies/actions/find_by_name_spec.rb