forked from leshill/resque_spec
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
394 additions
and
372 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
require 'resque' | ||
|
||
module Resque | ||
class Job | ||
def self.create(queue, klass, *args) | ||
raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.") if !queue | ||
raise ::Resque::NoClassError.new("Jobs must be given a class.") if klass.to_s.empty? | ||
ResqueSpec.queues[queue] << {:klass => klass.to_s, :args => args} | ||
end | ||
|
||
def self.destroy(queue, klass, *args) | ||
raise ::Resque::NoQueueError.new("Jobs must have been placed onto a queue.") if !queue | ||
raise ::Resque::NoClassError.new("Jobs must have been given a class.") if klass.to_s.empty? | ||
|
||
old_count = ResqueSpec.queues[queue].size | ||
|
||
if args.empty? | ||
ResqueSpec.queues[queue].delete_if{ |job| job[:klass] == klass.to_s } | ||
else | ||
ResqueSpec.queues[queue].delete_if{ |job| job[:klass] == klass.to_s and job[:args].to_a == args.to_a } | ||
end | ||
|
||
old_count - ResqueSpec.queues[queue].size | ||
end | ||
end | ||
end |
This file was deleted.
Oops, something went wrong.
6 changes: 2 additions & 4 deletions
6
lib/resque_spec/resque_scheduler_spec.rb → lib/resque_spec/scheduler.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,16 @@ | ||
require 'resque_spec' | ||
|
||
module ResqueSpec | ||
|
||
def schedule_for(klass) | ||
name = "#{queue_name(klass)}_scheduled" | ||
queues[name] | ||
end | ||
|
||
module ResqueScheduler | ||
module SchedulerExt | ||
def enqueue_at(time, klass, *args) | ||
ResqueSpec.schedule_for(klass) << {:klass => klass.to_s, :time => time, :args => args} | ||
end | ||
end | ||
|
||
end | ||
|
||
Resque.extend(ResqueSpec::ResqueScheduler) | ||
Resque.extend(ResqueSpec::SchedulerExt) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
require 'spec_helper' | ||
|
||
describe ResqueSpec do | ||
before do | ||
ResqueSpec.reset! | ||
end | ||
|
||
let(:first_name) { 'Les' } | ||
let(:last_name) { 'Hill' } | ||
|
||
describe "#queue_by_name" do | ||
|
||
it "has an empty array if nothing queued for a class" do | ||
ResqueSpec.queue_by_name(:my_queue).should == [] | ||
end | ||
|
||
it "allows additions" do | ||
ResqueSpec.queue_by_name(:my_queue) << 'queued' | ||
ResqueSpec.queue_by_name(:my_queue).should_not be_empty | ||
end | ||
|
||
end | ||
|
||
describe "#queue_for" do | ||
it "raises if there is no queue defined for a class" do | ||
expect do | ||
ResqueSpec.queue_for(Address) | ||
end.should raise_error(::Resque::NoQueueError) | ||
end | ||
|
||
it "recognizes a queue defined as a class instance variable" do | ||
expect do | ||
ResqueSpec.queue_for(Person) | ||
end.should_not raise_error(::Resque::NoQueueError) | ||
end | ||
|
||
it "recognizes a queue defined as a class method" do | ||
expect do | ||
ResqueSpec.queue_for(Account) | ||
end.should_not raise_error(::Resque::NoQueueError) | ||
end | ||
|
||
end | ||
|
||
describe "#queue_name" do | ||
it "raises if there is no queue defined for a class" do | ||
expect do | ||
ResqueSpec.queue_name(Address) | ||
end.should raise_error(::Resque::NoQueueError) | ||
end | ||
|
||
it "returns the queue name if there is a queue defined as an instance var" do | ||
ResqueSpec.queue_name(Person).should == :people | ||
end | ||
|
||
it "returns the queue name for the name of the class" do | ||
ResqueSpec.queue_name("Person").should == :people | ||
end | ||
|
||
it "returns the queue name if there is a queue defined via self.queue" do | ||
ResqueSpec.queue_name(Account).should == :people | ||
end | ||
|
||
end | ||
|
||
describe "#reset!" do | ||
it "clears the queues" do | ||
ResqueSpec.queue_for(Person) << 'queued' | ||
ResqueSpec.reset! | ||
ResqueSpec.queues.should be_empty | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
require 'spec_helper' | ||
|
||
describe "Resque Extensions" do | ||
before do | ||
ResqueSpec.reset! | ||
end | ||
|
||
let(:first_name) { 'Les' } | ||
let(:last_name) { 'Hill' } | ||
|
||
describe "Resque" do | ||
before do | ||
Resque.enqueue(Person, "abc", "def") | ||
Resque.enqueue(Person, "xyz", "lmn") | ||
Resque.enqueue(Person, "xyz", "lmn") | ||
end | ||
|
||
describe "#enqueue" do | ||
|
||
before do | ||
Resque.enqueue(Person, first_name, last_name) | ||
end | ||
|
||
it "adds to the queue hash" do | ||
ResqueSpec.queue_for(Person).should_not be_empty | ||
end | ||
|
||
it "sets the klass on the queue" do | ||
ResqueSpec.queue_for(Person).last.should include(:klass => Person.to_s) | ||
end | ||
|
||
it "sets the arguments on the queue" do | ||
ResqueSpec.queue_for(Person).last.should include(:args => [first_name, last_name]) | ||
end | ||
|
||
end | ||
|
||
describe "#dequeue" do | ||
describe "without arguments" do | ||
it "should remove all items from queue with the given class" do | ||
ResqueSpec.queue_for(Person).count.should == 3 | ||
expect do | ||
Resque.dequeue(Person).should == 3 | ||
end.should change(ResqueSpec.queue_for(Person), :count).by(-3) | ||
ResqueSpec.queue_for(Person).count.should == 0 | ||
end | ||
end | ||
|
||
describe "with arguments" do | ||
it "should remove items from queue with the given class and arguments" do | ||
ResqueSpec.queue_for(Person).count.should == 3 | ||
expect do | ||
Resque.dequeue(Person, "xyz", "lmn").should == 2 | ||
end.should change(ResqueSpec.queue_for(Person), :size).by(-2) | ||
ResqueSpec.queue_for(Person).count.should == 1 | ||
end | ||
end | ||
end | ||
end | ||
|
||
describe Resque::Job do | ||
before do | ||
Resque.enqueue(Person, "abc", "def") | ||
Resque.enqueue(Person, "xyz", "lmn") | ||
Resque.enqueue(Person, "xyz", "lmn") | ||
end | ||
|
||
describe "#create" do | ||
before do | ||
::Resque::Job.create(:people, Person, first_name, last_name) | ||
end | ||
|
||
it "adds to the queue hash" do | ||
ResqueSpec.queues[:people].should_not be_empty | ||
end | ||
|
||
it "sets the klass on the queue" do | ||
ResqueSpec.queues[:people].last.should include(:klass => Person.to_s) | ||
end | ||
|
||
it "sets the arguments on the queue" do | ||
ResqueSpec.queues[:people].last.should include(:args => [first_name, last_name]) | ||
end | ||
end | ||
|
||
describe "#destroy" do | ||
describe "without arguments" do | ||
it "should remove all items from queue with the given class" do | ||
ResqueSpec.queue_for(Person).count.should == 3 | ||
expect do | ||
Resque::Job.destroy(:people, Person).should == 3 | ||
end.should change(ResqueSpec.queue_for(Person), :count).by(-3) | ||
ResqueSpec.queue_for(Person).count.should == 0 | ||
end | ||
end | ||
|
||
describe "with arguments" do | ||
it "should remove items from queue with the given class and arguments" do | ||
ResqueSpec.queue_for(Person).count.should == 3 | ||
expect do | ||
Resque::Job.destroy(:people, Person, "xyz", "lmn").should == 2 | ||
end.should change(ResqueSpec.queue_for(Person), :size).by(-2) | ||
ResqueSpec.queue_for(Person).count.should == 1 | ||
end | ||
end | ||
end | ||
end | ||
end |
File renamed without changes.
Oops, something went wrong.