Sha256: 1d9e1054652af9c95ec6c53a70d3345145fbfcbbe795565f99e130b9f5383d39

Contents?: true

Size: 1.62 KB

Versions: 6

Compression:

Stored size: 1.62 KB

Contents

require 'spec_helper'

describe 'Cistern::WaitFor' do
  let(:service) { Sample.new }
  before {
    class Sample::Wait < Sample::Model
      identity :id

      attribute :name
    end

    class Sample::Waits < Sample::Collection
      model Sample::Wait

      def get(_identity)
        self
      end
    end
  }

  describe 'Cistern#wait_for' do
    it 'should return false if timeout exceeded' do
      expect(Cistern.wait_for(0, 0) { false }).to be_falsey
    end
  end

  describe 'Cistern#wait_for!' do
    it 'should raise if timeout exceeded' do
      expect { Cistern.wait_for!(0, 0) { false } }.to raise_exception(Cistern::Timeout)
    end
  end

  describe 'Cistern::Model#wait_for!' do
    let(:model) { service.waits.new(identity: 1) }

    it 'should raise if timeout exceeded' do
      expect { model.wait_for!(0, 0) { false } }.to raise_exception(Sample::Timeout)
    end
  end

  describe 'WaitForModel#timeout' do
    let(:model) { service.waits.new(identity: 1) }

    it 'should use service-specific timeout in #wait_for' do
      service.class.timeout = 0.1
      service.class.poll_interval = 0

      elapsed = 0

      Timeout.timeout(2) do
        expect do
          model.wait_for! { sleep(0.2); elapsed += 0.2; elapsed > 0.2 }
        end.to raise_exception(Sample::Timeout)
      end
    end

    it 'should favor explicit timeout' do
      service.class.timeout = 1
      service.class.poll_interval = 0

      elapsed = 0

      Timeout.timeout(2) do
        expect do
          model.wait_for!(0.1) { sleep(0.2); elapsed += 0.2; elapsed > 0.2 }
        end.to raise_exception(Sample::Timeout)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
cistern-2.8.0 spec/wait_for_spec.rb
cistern-2.7.2 spec/wait_for_spec.rb
cistern-2.7.1 spec/wait_for_spec.rb
cistern-2.7.0 spec/wait_for_spec.rb
cistern-2.6.0 spec/wait_for_spec.rb
cistern-2.5.0 spec/wait_for_spec.rb