Sha256: 2d8f3a5b66fd93a49ec2a3612333710cab94656b3ecd453e1dea712d272023e3
Contents?: true
Size: 1.62 KB
Versions: 7
Compression:
Stored size: 1.62 KB
Contents
module Interactor describe Organizer do include_examples :lint let(:organizer) { Class.new.send(:include, Organizer) } describe ".organize" do let(:interactor2) { double(:interactor2) } let(:interactor3) { double(:interactor3) } it "sets interactors given class arguments" do expect { organizer.organize(interactor2, interactor3) }.to change { organizer.organized }.from([]).to([interactor2, interactor3]) end it "sets interactors given an array of classes" do expect { organizer.organize([interactor2, interactor3]) }.to change { organizer.organized }.from([]).to([interactor2, interactor3]) end end describe ".organized" do it "is empty by default" do expect(organizer.organized).to eq([]) end end describe "#call" do let(:instance) { organizer.new } let(:context) { double(:context) } let(:interactor2) { double(:interactor2) } let(:interactor3) { double(:interactor3) } let(:interactor4) { double(:interactor4) } before do allow(instance).to receive(:context) { context } allow(organizer).to receive(:organized) { [interactor2, interactor3, interactor4] } end it "calls each interactor in order with the context" do expect(interactor2).to receive(:call!).once.with(context).ordered expect(interactor3).to receive(:call!).once.with(context).ordered expect(interactor4).to receive(:call!).once.with(context).ordered instance.call end end end end
Version data entries
7 entries across 7 versions & 3 rubygems