Sha256: 38e0626339f0a75b2d90cb685806f42999e723fcb62c380b853e88b863d5d062

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/test_helper'     )
require File.expand_path(File.dirname(__FILE__) + '/../lib/sweatshop')

class SweatshopTest < Test::Unit::TestCase
  Sweatshop.workers = []

  class HelloWorker < Sweatshop::Worker
    def hello(name)
      "Hi, #{name}"
    end
  end

  class GroupedWorker < Sweatshop::Worker
    queue_group :foo
  end

  should "group workers" do
    assert_equal [HelloWorker, GroupedWorker], Sweatshop.workers_in_group(:all)
    assert_equal [HelloWorker],   Sweatshop.workers_in_group(:default)
    assert_equal [GroupedWorker], Sweatshop.workers_in_group(:foo)
  end

  should "synch call" do
    worker = HelloWorker.new
    assert_equal "Hi, Amos", worker.hello('Amos')
  end

  should "have before task" do
    HelloWorker.before_task do
      "hello"
    end
    assert_equal "hello", HelloWorker.before_task.call
  end

  should "have after task" do
    HelloWorker.after_task do
      "goodbye"
    end
    assert_equal "goodbye", HelloWorker.after_task.call
  end

  should "chain before tasks" do
    MESSAGES = []
    class BaseWorker < Sweatshop::Worker
      before_task do |task|
        MESSAGES << 'base'
      end
    end
    class SubWorker < BaseWorker
      before_task do |task|
        MESSAGES << 'sub'
      end
    end
    SubWorker.call_before_task('foo')
    assert_equal ['base', 'sub'], MESSAGES
    Sweatshop.workers.delete(BaseWorker)
    Sweatshop.workers.delete(SubWorker)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sweatshop-1.6.0 test/test_sweatshop.rb