resque_spec 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -99,6 +99,31 @@ You can check the size of the queue in your specs too.
99
99
  end
100
100
  end
101
101
 
102
+ Turning off ResqueSpec and calling directly to Resque
103
+ -----------------------------------------------------
104
+
105
+ Occasionally, you want to run your specs directly against Resque instead of
106
+ ResqueSpec. For one at a time use, pass a block to the `without_resque_spec`
107
+ helper:
108
+
109
+ describe "#recalculate" do
110
+ it "recalculates the persons score" do
111
+ without_resque_spec do
112
+ person.recalculate
113
+ end
114
+ ... assert recalculation after job done
115
+ end
116
+ end
117
+
118
+ Or you can manage when ResqueSpec is disabled by flipping the
119
+ `ResqueSpec.disable_ext` flag:
120
+
121
+ # disable ResqueSpec
122
+ ResqueSpec.disable_ext = true
123
+
124
+ You will most likely (but not always, see the Resque docs) need to ensure that
125
+ you have `redis` running.
126
+
102
127
  ResqueMailer with Specs
103
128
  =======================
104
129
 
@@ -317,6 +342,7 @@ Contributors
317
342
  * (@alexeits) : fix matcher in bug with RSpec 2.8.0
318
343
  * (@ToadJamb) : encode/decode of Resque job arguments
319
344
  * Mateusz Konikowski (@mkonikowski) : support for anything matcher
345
+ * Mathieu Ravaux (@mathieuravaux) : without_resque_spec support
320
346
 
321
347
  Copyright
322
348
  =========
@@ -7,6 +7,7 @@ module ResqueSpec
7
7
  extend self
8
8
 
9
9
  attr_accessor :inline
10
+ attr_accessor :disable_ext
10
11
 
11
12
  def dequeue(queue_name, klass, *args)
12
13
  queue_by_name(queue_name).delete_if do |job|
@@ -2,13 +2,22 @@ require 'resque'
2
2
 
3
3
  module Resque
4
4
  class Job
5
+ class << self
6
+ alias :create_without_resque_spec :create
7
+ alias :destroy_without_resque_spec :destroy
8
+ end
9
+
5
10
  def self.create(queue, klass, *args)
11
+ return create_without_resque_spec(queue, klass, *args) if ResqueSpec.disable_ext
12
+
6
13
  raise ::Resque::NoQueueError.new("Jobs must be placed onto a queue.") if !queue
7
14
  raise ::Resque::NoClassError.new("Jobs must be given a class.") if klass.to_s.empty?
8
15
  ResqueSpec.enqueue(queue, klass, *args)
9
16
  end
10
17
 
11
18
  def self.destroy(queue, klass, *args)
19
+ return destroy_without_resque_spec(queue, klass, *args) if ResqueSpec.disable_ext
20
+
12
21
  raise ::Resque::NoQueueError.new("Jobs must have been placed onto a queue.") if !queue
13
22
  raise ::Resque::NoClassError.new("Jobs must have been given a class.") if klass.to_s.empty?
14
23
 
@@ -20,11 +29,19 @@ module Resque
20
29
  end
21
30
  end
22
31
 
32
+ alias :enqueue_without_resque_spec :enqueue
33
+ alias :enqueue_to_without_resque_spec :enqueue_to if Resque.respond_to? :enqueue_to
34
+ alias :reserve_without_resque_spec :reserve
35
+
23
36
  def enqueue(klass, *args)
37
+ return enqueue_without_resque_spec(klass, *args) if ResqueSpec.disable_ext
38
+
24
39
  enqueue_to(queue_from_class(klass), klass, *args)
25
40
  end
26
41
 
27
42
  def enqueue_to(queue, klass, *args)
43
+ return enqueue_to_without_resque_spec(queue, klass, *args) if ResqueSpec.disable_ext
44
+
28
45
  if ResqueSpec.inline
29
46
  return if run_before_enqueue(klass, *args)
30
47
  run_after_enqueue(klass, *args)
@@ -38,6 +55,8 @@ module Resque
38
55
  end
39
56
 
40
57
  def reserve(queue_name)
58
+ return reserve_without_resque_spec(queue_name) if ResqueSpec.disable_ext
59
+
41
60
  ResqueSpec.pop(queue_name)
42
61
  end
43
62
 
@@ -9,5 +9,15 @@ module ResqueSpec
9
9
  ResqueSpec.inline = false
10
10
  end
11
11
  end
12
+
13
+ def without_resque_spec
14
+ begin
15
+ ResqueSpec.disable_ext = true
16
+ yield
17
+ ensure
18
+ ResqueSpec.disable_ext = false
19
+ end
20
+ end
21
+
12
22
  end
13
23
  end
@@ -2,15 +2,34 @@ require 'resque_spec'
2
2
 
3
3
  module ResqueSpec
4
4
  module SchedulerExt
5
+ def self.extended(klass)
6
+ if klass.respond_to? :enqueue_at
7
+ klass.instance_eval do
8
+ alias :enqueue_at_without_resque_spec :enqueue_at
9
+ alias :enqueue_in_without_resque_spec :enqueue_in
10
+ alias :remove_delayed_without_resque_spec :remove_delayed
11
+ end
12
+ end
13
+ klass.extend(ResqueSpec::SchedulerExtMethods)
14
+ end
15
+ end
16
+
17
+ module SchedulerExtMethods
5
18
  def enqueue_at(time, klass, *args)
19
+ return enqueue_at_without_resque_spec(time, klass, *args) if ResqueSpec.disable_ext && respond_to?(:enqueue_at_without_resque_spec)
20
+
6
21
  ResqueSpec.enqueue_at(time, klass, *args)
7
22
  end
8
23
 
9
24
  def enqueue_in(time, klass, *args)
25
+ return enqueue_in_without_resque_spec(time, klass, *args) if ResqueSpec.disable_ext && respond_to?(:enqueue_in_without_resque_spec)
26
+
10
27
  ResqueSpec.enqueue_in(time, klass, *args)
11
28
  end
12
29
 
13
30
  def remove_delayed(klass, *args)
31
+ return remove_delayed_without_resque_spec(klass, *args) if ResqueSpec.disable_ext && respond_to?(:remove_delayed_without_resque_spec)
32
+
14
33
  ResqueSpec.remove_delayed(klass, *args)
15
34
  end
16
35
  end
@@ -1,3 +1,3 @@
1
1
  module ResqueSpec
2
- VERSION = "0.9.3"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.10.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-03 00:00:00.000000000Z
12
+ date: 2012-04-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: resque
16
- requirement: &70150271545920 !ruby/object:Gem::Requirement
16
+ requirement: &70234346214680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.19.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70150271545920
24
+ version_requirements: *70234346214680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70150271544920 !ruby/object:Gem::Requirement
27
+ requirement: &70234346213660 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 2.5.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70150271544920
35
+ version_requirements: *70234346213660
36
+ - !ruby/object:Gem::Dependency
37
+ name: resque-scheduler
38
+ requirement: &70234346212620 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70234346212620
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: ruby-debug19
38
- requirement: &70150271544240 !ruby/object:Gem::Requirement
49
+ requirement: &70234346211520 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70150271544240
57
+ version_requirements: *70234346211520
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: timecop
49
- requirement: &70150271542700 !ruby/object:Gem::Requirement
60
+ requirement: &70234346210280 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70150271542700
68
+ version_requirements: *70234346210280
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rake
60
- requirement: &70150271541580 !ruby/object:Gem::Requirement
71
+ requirement: &70234346209180 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70150271541580
79
+ version_requirements: *70234346209180
69
80
  description: RSpec matchers for Resque
70
81
  email: leshill@gmail.com
71
82
  executables: []