spec/cloudist_spec.rb in cloudist-0.1.2 vs spec/cloudist_spec.rb in cloudist-0.2.0
- old
+ new
@@ -1,24 +1,55 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
+require "moqueue"
+class SandwichWorker < Cloudist::Worker
+ def process
+ Cloudist.log.info(job.data.inspect)
+ end
+end
+
describe "Cloudist" do
before(:each) do
overload_amqp
reset_broker
+ Cloudist.remove_workers
+
+ @mq = mock("MQ")
+ @queue, @exchange = mock_queue_and_exchange('make.sandwich')
+
+ @qobj = Cloudist::JobQueue.any_instance
+ @qobj.stubs(:q).returns(@queue)
+ @qobj.stubs(:mq).returns(@mq)
+ @qobj.stubs(:ex).returns(@exchange)
+ @qobj.stubs(:setup)
end
- def run_start
- Cloudist.start {
- worker {
-
- }
- }
+ it "should register a worker" do
+ Cloudist.register_worker('make.sandwich', SandwichWorker)
+ Cloudist.workers.should have_key("make.sandwich")
+ Cloudist.workers["make.sandwich"].size.should == 1
end
- it "should start" do
- Cloudist.stubs(:worker).returns(true)
- Cloudist.expects(:worker).once
-
- # run_start
+ it "should support handle syntax" do
+ Cloudist.workers.should == {}
+ Cloudist.handle('make.sandwich').with(SandwichWorker)
+ Cloudist.workers.should have_key("make.sandwich")
+ Cloudist.workers["make.sandwich"].size.should == 1
end
+
+ # it "should support handle syntax with multiple queues" do
+ # Cloudist.workers.should == {}
+ # Cloudist.handle('make.sandwich', 'eat.sandwich').with(SandwichWorker)
+ # # Cloudist.workers.should == {"make.sandwich"=>[SandwichWorker], "eat.sandwich"=>[SandwichWorker]}
+ # end
+
+ it "should call process on worker when job arrives" do
+ job = Cloudist.enqueue('make.sandwich', {:bread => 'white'})
+ job.payload.published?.should be_true
+ SandwichWorker.any_instance.expects(:process)
+ Cloudist.handle('make.sandwich').with(SandwichWorker)
+ Cloudist.workers.should have_key("make.sandwich")
+ Cloudist.workers["make.sandwich"].size.should == 1
+ end
+
end