require 'spec_helper' require 'pact_broker/groups/service' require 'pact_broker/index/service' module PactBroker module Groups describe Service do describe "#find_group_containing" do let(:consumer_a) { double('consumer a', name: 'consumer a', id: 1)} let(:consumer_b) { double('consumer b', name: 'consumer b', id: 2)} let(:provider_x) { double('provider x', name: 'provider x', id: 3)} let(:provider_y) { double('provider y', name: 'provider y', id: 4)} let(:relationship_1) { Domain::IndexItem.new(consumer_a, provider_x) } let(:relationship_2) { Domain::IndexItem.new(consumer_b, provider_y) } let(:group_1) { Domain::Group.new(relationship_1) } let(:group_2) { Domain::Group.new(relationship_2) } let(:relationship_list) { double('relationship list') } let(:groups) { [group_1, group_2]} subject { Service.find_group_containing(consumer_b) } before do allow(PactBroker::Index::Service).to receive(:find_index_items).and_return(relationship_list) allow(Relationships::Groupify).to receive(:call).and_return(groups) end it "retrieves a list of the relationships" do allow(Index::Service).to receive(:find_index_items) subject end it "turns the relationships into groups" do expect(Relationships::Groupify).to receive(:call).with(relationship_list) subject end it "returns the Group containing the given pacticipant" do expect(subject).to be group_2 end end end end end