Sha256: e71d3260b97449d18c16b960ad86fe18a83e64e84cf02d0904970a56dfa2b265

Contents?: true

Size: 1.65 KB

Versions: 10

Compression:

Stored size: 1.65 KB

Contents

module Interactor
  describe Organizer do
    let(:organizer) {
      Class.new do
        include Organizer
        include Declaration
      end
    }

    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) { Class.new.send(:include, Interactor) }
      let(:interactor3) { Class.new.send(:include, Interactor) }
      let(:interactor4) { Class.new.send(:include, Interactor) }

      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.ordered
        expect(interactor3).to receive(:call!).once.ordered
        expect(interactor4).to receive(:call!).once.ordered

        instance.call
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
interactor_with_steroids-1.5.1 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.5.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.4.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.3.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.2.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.1.2 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.1.1 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.1.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-1.0.0 spec/interactor/organizer_spec.rb
interactor_with_steroids-0.0.1 spec/interactor/organizer_spec.rb