Sha256: 358ccec1e7553b9b1574b17f7181f4f69842adb6f5afe4a41b7cda8f9fa23523

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

require 'helper'

class TestManager < MiniTest::Unit::TestCase

  def setup
    @manager = Sideband::Manager.new
  end

  def test_has_queue
    assert_kind_of Sideband::Queue, @manager.queue
  end

  def test_has_thread
    assert_kind_of Sideband::Thread, @manager.thread
  end

  def test_can_queue_and_process_proc
    skip 'Testing thread scheduling is hard...'
    work = 'work'
    @manager.queue << -> { work = 'finished' }
    sleep 0.5
    assert_equal 'finished', work 
  end

  def test_can_queue_and_process_worker
    skip 'Testing thread scheduling is hard...'
    worker = EmailWorker.new
    assert_equal 'work', worker.work
    @manager.queue << worker
    sleep 0.5
    assert_equal 'finished', worker.work 
  end

  if !jruby?
    def test_fork_handling
      queue  = @manager.queue
      thread = @manager.thread
      
      Process.stub(:pid, Process.pid + 1) do
        @manager.queue << -> { 'work' }
        refute_equal queue,  @manager.queue
        refute_equal thread, @manager.thread
      end
    end
  end

  def test_killed
    @manager.kill
    assert_nil @manager.queue
    assert_nil @manager.thread
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sideband-1.0.2 test/test_manager.rb