Sha256: c854c1fa526383be34c50d8bf75cb99570bb0afea3c83ff379544c338a34ac4f

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe HTTPkit do
  describe '.run' do
    subject! do
      HTTPkit.run do
        @reactor = EM.reactor_running?
        @fiber   = Fiber.current
      end
    end

    it 'starts an EventMachine reactor' do
      expect(@reactor).to be(true)
    end

    it 'yields in a new Fiber' do
      expect(@fiber).not_to be(Fiber.current)
    end

    it 'stops the EventMachine reactor' do
      expect(EM.reactor_running?).to be(false)
    end
  end

  describe '.start' do
    subject! do
      HTTPkit.start do
        @reactor = EM.reactor_running?
        @fiber   = Fiber.current
        EM.stop
        EM.next_tick {}
      end
    end

    it 'starts an EventMachine reactor' do
      expect(@reactor).to be(true)
    end

    it 'yields in a new Fiber' do
      expect(@fiber).not_to be(Fiber.current)
    end
  end

  describe '.stop' do
    subject! do
      EM.run do
        EM.add_timer(1.0) { @timer = true }
        HTTPkit.stop
      end
    end

    it 'stops the EventMachine reactor' do
      expect(EM.reactor_running?).to be(false)
    end

    it 'stops EventMachine timers' do
      expect(@timer).not_to be(true)
    end
  end

  describe '.sleep', reactor: true do
    subject { HTTPkit.sleep(0.005) }

    let(:fiber) do
      @slept = false
      Fiber.new do
        subject
        @slept = true
      end
    end

    it 'sleeps for the given number of seconds' do
      fiber.resume
      expect(@slept).to be(false)
      sleep(0.005)
      tick(3)
      expect(@slept).to be(true)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
httpkit-0.6.0 spec/unit/httpkit_spec.rb
httpkit-0.6.0.pre.5 spec/unit/httpkit_spec.rb