Sha256: 08d803298ad928f6fd9c7b6cd233ac9cbec4abfaf46b3c97cf433d92153c72df

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module LightServiceExt
  RSpec.describe ApplicationOrganizer do
    let(:subject_class) do
      Class.new(described_class) do
        class << self
          FakeAction = Class.new do
            extend LightService::Action

            expects :input

            executed do |context|
              context.dig(:input, :some_proc).call
            end
          end

          def steps
            [FakeAction]
          end
        end
      end
    end

    let(:input) { { some_proc: proc {} } }

    it 'adds inputted data as input key value pair' do
      ctx = subject_class.call(input)

      expect(ctx.keys).to match_array(%i[
                                        api_responses
                                        errors
                                        input
                                        params
                                        allow_raise_on_failure
                                        successful_actions
                                        internal_only
                                      ])
      expect(ctx[:input]).to eql(input)
    end

    it 'calls underlying action' do
      expect do
        subject_class.call(some_proc: proc { raise 'error' })
      end.to raise_error RuntimeError, 'error'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
light-service-ext-0.1.2 spec/light-service-ext/application_organizer_spec.rb