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

Version Path
interactor-strict-1.0.0 spec/interactor/organizer_spec.rb
interactor-3.1.2 spec/interactor/organizer_spec.rb
interactor-3.1.1 spec/interactor/organizer_spec.rb
functional_interactor-0.0.1 spec/interactor/organizer_spec.rb
interactor-3.1.0 spec/interactor/organizer_spec.rb
interactor-3.0.1 spec/interactor/organizer_spec.rb
interactor-3.0.0 spec/interactor/organizer_spec.rb