Sha256: 8143ed60c2f2651ad99577c1d73087bf5135106e871e12878e496fcc2bd1514d

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Acfs::Request::Callbacks do
  let(:callback) { ->(_res) {} }
  let(:request)  { Acfs::Request.new('fubar') }

  describe '#on_complete' do
    it 'should store a given callback' do
      request.on_complete(&callback)

      expect(request.callbacks).to have(1).item
      expect(request.callbacks[0]).to be == callback
    end

    it 'should store multiple callback' do
      request.on_complete {|_res| 'abc' }
      request.on_complete(&callback)

      expect(request.callbacks).to have(2).item
      expect(request.callbacks[0]).to be == callback
    end
  end

  describe '#complete!' do
    let(:response) { Acfs::Response.new(request) }

    it 'should trigger registered callbacks with given response' do
      expect(callback).to receive(:call).with(response, kind_of(Proc))

      request.on_complete(&callback)
      request.complete! response
    end

    it 'should trigger multiple callback in reverted insertion order' do
      check = []

      request.on_complete {|res, nxt| check << 1; nxt.call res }
      request.on_complete {|res, nxt| check << 2; nxt.call res }
      request.on_complete {|res, nxt| check << 3; nxt.call res }

      request.complete! response

      expect(check).to be == [3, 2, 1]
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
acfs-1.6.0 spec/acfs/request/callbacks_spec.rb
acfs-1.5.1 spec/acfs/request/callbacks_spec.rb
acfs-1.5.0 spec/acfs/request/callbacks_spec.rb
acfs-1.4.0 spec/acfs/request/callbacks_spec.rb
acfs-1.3.4 spec/acfs/request/callbacks_spec.rb