<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>spec/loaders/example/second_example_loader.rb</filename>
    </added>
    <added>
      <filename>spec/loaders/first_example_loader.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,4 @@
-# $Id: NgTzeYang [nineone@singnet.com.sg] 11 Sep 2008 15:48 $
+# $Id: NgTzeYang [nineone@singnet.com.sg] 15 Sep 2008 18:38 $
 #
 # Intended to be inherited by all work loaders. Usage:
 #
@@ -37,7 +37,7 @@ class WorkerQueue
     protected
 
       def self.prepare
-        raise &quot;Subclass MUST implement prepare()&quot;
+        raise self.to_s + &quot;.prepare() MUST be implemented&quot;
       end
 
   end</diff>
      <filename>lib/worker_queue/worker_queue_item_loader.rb</filename>
    </modified>
    <modified>
      <diff>@@ -230,3 +230,54 @@ describe &quot;When handling racing conditions&quot; do
   end
 
 end
+
+
+describe &quot;When loading worker queue items&quot; do
+  before(:each) do
+    @loaders_lib = File.dirname(__FILE__)+'/../loaders'
+
+    unless Object.const_defined? 'FirstExampleLoader'
+      class FirstExampleLoader &lt; WorkerQueue::WorkerQueueItemLoader
+        def self.prepare ; end
+      end 
+    end
+
+    unless Object.const_defined? 'Example'
+      class Example
+        class SecondExampleLoader &lt; WorkerQueue::WorkerQueueItemLoader
+        end
+      end
+    end
+  end
+
+  it &quot;should define loaders_lib as RAILS_ROOT/lib/worker_queue&quot; do
+    WorkerQueue.send(:loaders_lib).should == File.join( RAILS_ROOT, 'lib', 'worker_queue', '' )
+  end
+
+  it &quot;should require loaders under loaders_lib&quot; do
+    WorkerQueue.stub!(:loaders_lib).and_return(@loaders_lib)
+    FirstExampleLoader.stub!(:load)
+    Example::SecondExampleLoader.stub!(:load)
+    WorkerQueue.should_receive(:require).with(@loaders_lib+'/first_example_loader.rb')
+    WorkerQueue.should_receive(:require).with(@loaders_lib+'/example/second_example_loader.rb')
+    WorkerQueue.load
+  end
+
+  it &quot;for each loader, should call AnyLoader.load class method&quot; do
+    WorkerQueue.stub!(:loaders_lib).and_return(@loaders_lib)
+    FirstExampleLoader.should_receive(:load)
+    Example::SecondExampleLoader.should_receive(:load)
+    WorkerQueue.load
+  end
+
+  it &quot;should raise error if loader does not implement class method prepare()&quot; do
+    worker_item = stub( WorkerQueue::WorkerQueueItem, { :save! =&gt; true } )
+    WorkerQueue::WorkerQueueItem.stub!(:new).and_return(worker_item)
+    lambda { FirstExampleLoader.load }.should_not raise_error(
+      &quot;FirstExampleLoader.prepare() MUST be implemented&quot;)
+    lambda { Example::SecondExampleLoader.load }.should raise_error(
+      &quot;Example::SecondExampleLoader.prepare() MUST be implemented&quot; )
+  end
+
+end
+</diff>
      <filename>spec/models/worker_queue_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>9b83f6397fbaa13fb0ec5a00d493ad98f15d9bff</id>
    </parent>
    <parent>
      <id>87ba5bedc84247f53c14b184a2100f74ef3f7bcd</id>
    </parent>
  </parents>
  <author>
    <name>Bart ten Brinke</name>
    <email>info@retrosync.com</email>
  </author>
  <url>http://github.com/barttenbrinke/worker_queue/commit/9b5321afc62fefed506723ec585e1e9e744a5567</url>
  <id>9b5321afc62fefed506723ec585e1e9e744a5567</id>
  <committed-date>2008-09-16T14:07:40-07:00</committed-date>
  <authored-date>2008-09-16T14:07:40-07:00</authored-date>
  <message>Merge branch 'master' of git://github.com/ngty/worker_queue</message>
  <tree>95f967a2c1a9166756803fae929c0e5b68d24d1d</tree>
  <committer>
    <name>Bart ten Brinke</name>
    <email>info@retrosync.com</email>
  </committer>
</commit>
