rspec-sidekiq 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjNiZmI2MTNlM2Q2ZDBjOTlmYTU4NTliYzlkZDUyODY0Y2RiNmE0Mw==
4
+ NTM0OGMwZTYyZGY4NTFkOTU0MjlhNGMxZDUzYTJmMzI5N2MwNTE1Zg==
5
5
  data.tar.gz: !binary |-
6
- YzlmNjA3MjViZDdhNDhkMWM2Y2FiZjBiZjNlNmE3YzI3Yjk0MTk2OA==
6
+ Yzc5YWUwMWYwN2VlNzc4ZDlmNDI2OWQyOWNlMjJhOWRjYWI4Y2Q4Mg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NWE0YjVkYmE5YjZkZGZlNmIyN2JkNDdlNjNlZDE0MWI5NDY1ZGUxZTZmYzE3
10
- YTMyZWM1MGY0YTkwNWI1YTBkN2E3MmQwNmU5ZjRlMGY4YTgyYjUxOGI2Nzkx
11
- MDJhNjgyMGZkYmRkMDViODE0M2Y1Yzg1MTFkMzZkYjRhYTFjOWY=
9
+ ZTZkOWEyNzk2MTNhMzA4MzE5ZmE0MmE2MWU2NTQ5ZDJmMzcwYzZkOTViY2U3
10
+ MTFkMDEwMWIzYjE3NTRkZTA4MzU2Mjc0ZDAxZGY2Y2ZlNjQ2NGQ4YjI0NGQ2
11
+ M2FhYTg0MTg5YmU2YjQwYjQyMDI2M2NhZWUzZTM3ZmZiODY3Yzk=
12
12
  data.tar.gz: !binary |-
13
- N2I3M2Y1ODZmYjY4YTA0MGVhYWM5ODhlNTU3YjBjYTQ5ZDcxYzdlNjM4NmM4
14
- ODg3OTVjNzZmOTFiYzc4NTNjZWZhMThjZjZkOGIwMTk5MDM5YzVlY2JiZjE3
15
- ZGU0ODYwMjBiODc0YmE0MDFhZTllYjZiNWNkNzYxZjhhNDMzMDc=
13
+ YmZiOTNjOGYxMGFhOTdhZDlmNDZiMjI5NDVkOWQ0ZjMyNGViZDJmNzI5ZGI3
14
+ ZmM1YmYxYjEwODRlYzIxZjk3MmE2OTkzNDc1ZWJjMGJhYjI4MmMwMDBlNGY3
15
+ NzA5ODgzY2Y3ZTNhNTM0YmFkMWVjMWQ5ZGMyZDMxMmJlMDhkZDM=
data/.gitignore CHANGED
@@ -1,2 +1,2 @@
1
1
  Gemfile.lock
2
- spec_result
2
+ spec/result
data/.rspec CHANGED
@@ -1,3 +1,4 @@
1
1
  --colour
2
+ --tty
2
3
  --format Fuubar
3
- --format html --out spec_result/rspec.html
4
+ --format html --out spec/result/index.html
data/.simplecov CHANGED
@@ -1,5 +1,6 @@
1
+ # encoding: utf-8
1
2
  SimpleCov.start do
2
- add_filter "/spec/"
3
+ add_filter '/spec/'
3
4
 
4
- coverage_dir "spec_result"
5
- end
5
+ coverage_dir 'spec/result/coverage'
6
+ end
data/CHANGES.md CHANGED
@@ -1,3 +1,13 @@
1
+ 1.1.0
2
+ ---
3
+ * Added Support for RSpec 3 [TBAA#44]
4
+ * Fix gem build error ERROR: (Gem::InvalidSpecificationException) [mourad-ifeelgoods#42]
5
+ * Make sure sidekiq is required [mourad-ifeelgoods#43]
6
+ * attempt at fixing 'undefined method `configure' for RSpec:Module' [homanchou#51]
7
+ * Supports accessing the batch id [fabiokr#54]
8
+ * Pass message hash to retries_exhausted block [layervault#52]
9
+ * added support for unique scheduled worker matching [jkogara#55]
10
+
1
11
  1.0.0
2
12
  ---
3
13
  * Improve coverage and readability of README [philostler#26]
data/README.md CHANGED
@@ -5,9 +5,8 @@
5
5
  [![Travis CI][travis_ci_badge]][travis_ci]
6
6
  [![Coveralls][coveralls_badge]][coveralls]
7
7
  [![Gemnasium][gemnasium_badge]][gemnasium]
8
- [![coderwall][coderwall_badge]][coderwall]
9
8
 
10
- *Simple testing of Sidekiq jobs via a collection of matchers and helpers*
9
+ ***Simple testing of Sidekiq jobs via a collection of matchers and helpers***
11
10
 
12
11
  [RubyGems][ruby_gems] |
13
12
  [Code Climate][code_climate] |
@@ -162,19 +161,17 @@ Issues/Pull Requests/Comments all welcome...
162
161
 
163
162
  [code_climate]: https://codeclimate.com/github/philostler/rspec-sidekiq
164
163
  [code_climate_badge]: https://codeclimate.com/github/philostler/rspec-sidekiq.png
165
- [coderwall]: https://coderwall.com/philostler
166
- [coderwall_badge]: https://api.coderwall.com/philostler/endorsecount.png
167
164
  [coveralls]: https://coveralls.io/r/philostler/rspec-sidekiq
168
165
  [coveralls_badge]: https://coveralls.io/repos/philostler/rspec-sidekiq/badge.png?branch=master
169
166
  [gem_version_badge]: https://badge.fury.io/rb/rspec-sidekiq.png
170
167
  [gemnasium]: https://gemnasium.com/philostler/rspec-sidekiq
171
168
  [gemnasium_badge]: https://gemnasium.com/philostler/rspec-sidekiq.png
172
169
  [github]: http://github.com/philostler/rspec-sidekiq
173
- [ruby_doc]: http://rubydoc.info/github/philostler/rspec-sidekiq/master/frames
170
+ [ruby_doc]: http://rubydoc.info/gems/rspec-sidekiq/frames
174
171
  [ruby_gems]: http://rubygems.org/gems/rspec-sidekiq
175
172
  [ruby_toolbox]: http://www.ruby-toolbox.com/projects/rspec-sidekiq
176
173
  [travis_ci]: http://travis-ci.org/philostler/rspec-sidekiq
177
- [travis_ci_badge]: https://secure.travis-ci.org/philostler/rspec-sidekiq.png
174
+ [travis_ci_badge]: https://travis-ci.org/philostler/rspec-sidekiq.svg?branch=master
178
175
 
179
176
  [rspec_sidekiq_wiki_faq_&_troubleshooting]: https://github.com/philostler/rspec-sidekiq/wiki/FAQ-&-Troubleshooting
180
177
  [sidekiq_wiki_batches]: https://github.com/mperham/sidekiq/wiki/Batches
data/lib/rspec-sidekiq.rb CHANGED
@@ -1,7 +1,8 @@
1
+ require "sidekiq"
1
2
  require "sidekiq/testing"
2
3
 
3
4
  require "rspec/sidekiq/batch"
4
5
  require "rspec/sidekiq/configuration"
5
6
  require "rspec/sidekiq/helpers"
6
7
  require "rspec/sidekiq/matchers"
7
- require "rspec/sidekiq/sidekiq"
8
+ require "rspec/sidekiq/sidekiq"
@@ -1,22 +1,37 @@
1
+ require "rspec/core"
2
+
1
3
  if defined? Sidekiq::Batch
2
4
  module RSpec
3
5
  module Sidekiq
4
6
  class NullObject
5
- def initialize(*)
6
- end
7
-
8
7
  def method_missing(*args, &block)
9
8
  self
10
9
  end
11
10
  end
12
11
 
13
12
  class NullBatch < NullObject
13
+ attr_reader :bid
14
+
15
+ def initialize(bid = nil)
16
+ @bid = bid || SecureRandom.hex(8)
17
+ end
18
+
19
+ def status
20
+ NullStatus.new(@bid)
21
+ end
22
+
14
23
  def jobs(*)
15
24
  yield
16
25
  end
17
26
  end
18
27
 
19
28
  class NullStatus < NullObject
29
+ attr_reader :bid
30
+
31
+ def initialize(bid)
32
+ @bid = bid
33
+ end
34
+
20
35
  def join
21
36
  ::Sidekiq::Worker.drain_all
22
37
  end
@@ -32,10 +47,8 @@ if defined? Sidekiq::Batch
32
47
  config.before(:each) do
33
48
  if mocked_with_mocha?
34
49
  Sidekiq::Batch.stubs(:new) { RSpec::Sidekiq::NullBatch.new }
35
- Sidekiq::Batch::Status.stubs(:new) { RSpec::Sidekiq::NullStatus.new }
36
50
  else
37
51
  Sidekiq::Batch.stub(:new) { RSpec::Sidekiq::NullBatch.new }
38
- Sidekiq::Batch::Status.stub(:new) { RSpec::Sidekiq::NullStatus.new }
39
52
  end
40
53
  end
41
54
  end
@@ -44,4 +57,4 @@ if defined? Sidekiq::Batch
44
57
  def mocked_with_mocha?
45
58
  Sidekiq::Batch.respond_to? :stubs
46
59
  end
47
- end
60
+ end
@@ -1,10 +1,18 @@
1
1
  module Sidekiq
2
2
  module Worker
3
3
  module ClassMethods
4
- def within_sidekiq_retries_exhausted_block &block
4
+ def within_sidekiq_retries_exhausted_block user_msg = {}, &block
5
5
  block.call
6
+ self.sidekiq_retries_exhausted_block.call default_retries_exhausted_args.merge(user_msg)
7
+ end
6
8
 
7
- self.sidekiq_retries_exhausted_block.call
9
+ def default_retries_exhausted_args
10
+ {
11
+ 'queue' => get_sidekiq_options[:worker],
12
+ 'class' => self.name,
13
+ 'args' => [],
14
+ 'error_message' => 'An error occured'
15
+ }
8
16
  end
9
17
  end
10
18
  end
@@ -46,6 +46,7 @@ module RSpec
46
46
  def negative_failure_message
47
47
  "expected #{@expected_method.receiver}.#{@expected_method.name} to not " + description
48
48
  end
49
+ alias_method :failure_message_when_negated, :negative_failure_message
49
50
 
50
51
  def until time
51
52
  @expected_time = time
@@ -64,4 +65,4 @@ module RSpec
64
65
  end
65
66
  end
66
67
  end
67
- end
68
+ end
@@ -27,7 +27,8 @@ module RSpec
27
27
  def negative_failure_message
28
28
  "expected #{@klass} to not be processed in the \"#{@expected_queue}\" queue"
29
29
  end
30
+ alias_method :failure_message_when_negated, :negative_failure_message
30
31
  end
31
32
  end
32
33
  end
33
- end
34
+ end
@@ -33,7 +33,8 @@ module RSpec
33
33
  def negative_failure_message
34
34
  "expected #{@klass} to not #{description}".gsub "not not ", ""
35
35
  end
36
+ alias_method :failure_message_when_negated, :negative_failure_message
36
37
  end
37
38
  end
38
39
  end
39
- end
40
+ end
@@ -17,13 +17,14 @@ module RSpec
17
17
  def matches? job
18
18
  @klass = job.kind_of?(Class) ? job : job.class
19
19
  @actual = @klass.get_sidekiq_options["unique"]
20
- @actual == true
20
+ [true, :all].include?(@actual)
21
21
  end
22
22
 
23
23
  def negative_failure_message
24
24
  "expected #{@klass} to not be unique in the queue"
25
25
  end
26
+ alias_method :failure_message_when_negated, :negative_failure_message
26
27
  end
27
28
  end
28
29
  end
29
- end
30
+ end
@@ -28,7 +28,8 @@ module RSpec
28
28
  def negative_failure_message
29
29
  "expected to not have an enqueued #{@klass} job with arguments #{@expected_arguments}"
30
30
  end
31
+ alias_method :failure_message_when_negated, :negative_failure_message
31
32
  end
32
33
  end
33
34
  end
34
- end
35
+ end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Sidekiq
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
- end
5
+ end
@@ -12,13 +12,11 @@ Gem::Specification.new do |s|
12
12
  s.description = "Simple testing of Sidekiq jobs via a collection of matchers and helpers"
13
13
  s.license = "MIT"
14
14
 
15
- s.add_dependency "rspec", ">= 2.0.0"
15
+ s.add_dependency "rspec", "~> 2.0"
16
16
  s.add_dependency "sidekiq", ">= 2.4.0"
17
17
 
18
18
  s.add_development_dependency "coveralls", "~> 0.7.0"
19
19
  s.add_development_dependency "fuubar", ">= 1.1.0"
20
- s.add_development_dependency "rspec", ">= 2.0.0"
21
- s.add_development_dependency "sidekiq", ">= 2.4.0"
22
20
 
23
21
  s.files = Dir[".gitattributes"] +
24
22
  Dir[".gitignore"] +
@@ -13,15 +13,28 @@ describe "Batch" do
13
13
  describe "NullStatus" do
14
14
  describe "#total" do
15
15
  it "returns 0 when no jobs" do
16
- null_status = RSpec::Sidekiq::NullStatus.new
16
+ null_status = Sidekiq::Batch.new.status
17
17
  expect(null_status.total).to eq(0)
18
18
  end
19
19
 
20
20
  it "returns 1 when 1 job" do
21
- null_status = RSpec::Sidekiq::NullStatus.new
22
- TestWorker.perform_async('5')
21
+ batch = Sidekiq::Batch.new
22
+
23
+ batch.jobs do
24
+ TestWorker.perform_async('5')
25
+ end
26
+
27
+ null_status = batch.status
28
+
23
29
  expect(null_status.total).to eq(1)
24
30
  end
25
31
  end
32
+
33
+ describe "#bid" do
34
+ it "returns a bid" do
35
+ null_status = Sidekiq::Batch.new
36
+ expect(null_status.bid).to_not be_nil
37
+ end
38
+ end
26
39
  end
27
- end
40
+ end
@@ -5,14 +5,25 @@ describe 'Retries Exhausted block' do
5
5
  class FooClass < TestWorkerAlternative
6
6
  sidekiq_retries_exhausted do |msg|
7
7
  bar('hello')
8
+ foo(msg)
8
9
  end
9
10
 
10
11
  def self.bar(input)
11
12
  end
13
+
14
+ def self.foo(msg)
15
+ end
12
16
  end
13
17
 
14
18
  it 'executes whatever is within the block' do
15
19
  FooClass.within_sidekiq_retries_exhausted_block { expect(FooClass).to receive(:bar).with('hello') }
16
20
  end
17
21
 
22
+ it 'passes arguments to the block' do
23
+ args = {'args' => ['a', 'b']}
24
+ FooClass.within_sidekiq_retries_exhausted_block(args) do
25
+ expect(FooClass).to receive(:foo).with(FooClass.default_retries_exhausted_args.merge(args))
26
+ end
27
+ end
28
+
18
29
  end
@@ -1,50 +1,62 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe RSpec::Sidekiq::Matchers::BeUnique do
4
- let(:worker) { create_worker unique: true }
5
- before(:each) { subject.matches? worker }
4
+ shared_context "a unique worker" do
5
+ before(:each) { subject.matches? @worker }
6
6
 
7
- describe "expected usage" do
8
- it "matches" do
9
- expect(worker).to be_unique
10
- end
11
- end
7
+ describe "expected usage" do
8
+ it "matches" do
9
+ expect(@worker).to be_unique
10
+ end
11
+
12
+ describe "#failure_message" do
13
+ it "returns message" do
14
+ expect(subject.failure_message).to eq "expected #{@worker} to be unique in the queue"
15
+ end
16
+ end
12
17
 
13
- describe "#be_unique" do
14
- it "returns instance" do
15
- expect(be_unique).to be_a RSpec::Sidekiq::Matchers::BeUnique
16
18
  end
17
- end
18
19
 
19
- describe "#description" do
20
- it "returns description" do
21
- expect(subject.description).to eq "be unique in the queue"
20
+ describe "#matches?" do
21
+ context "when condition matches" do
22
+ it "returns true" do
23
+ expect(subject.matches? @worker).to be true
24
+ end
25
+ end
26
+
27
+ context "when condition does not match" do
28
+ it "returns false" do
29
+ expect(subject.matches? create_worker unique: false).to be false
30
+ end
31
+ end
32
+
33
+ describe "#negative_failure_message" do
34
+ it "returns message" do
35
+ expect(subject.negative_failure_message).to eq "expected #{@worker} to not be unique in the queue"
36
+ end
37
+ end
22
38
  end
23
39
  end
24
40
 
25
- describe "#failure_message" do
26
- it "returns message" do
27
- expect(subject.failure_message).to eq "expected #{worker} to be unique in the queue"
28
- end
41
+ context "a scheduled worker" do
42
+ before { @worker = create_worker unique: :all }
43
+ include_context "a unique worker"
29
44
  end
30
45
 
31
- describe "#matches?" do
32
- context "when condition matches" do
33
- it "returns true" do
34
- expect(subject.matches? worker).to be true
35
- end
36
- end
46
+ context "a regular worker" do
47
+ before { @worker = create_worker unique: true}
48
+ include_context "a unique worker"
49
+ end
37
50
 
38
- context "when condition does not match" do
39
- it "returns false" do
40
- expect(subject.matches? create_worker unique: false).to be false
41
- end
51
+ describe "#be_unique" do
52
+ it "returns instance" do
53
+ expect(be_unique).to be_a RSpec::Sidekiq::Matchers::BeUnique
42
54
  end
43
55
  end
44
56
 
45
- describe "#negative_failure_message" do
46
- it "returns message" do
47
- expect(subject.negative_failure_message).to eq "expected #{worker} to not be unique in the queue"
57
+ describe "#description" do
58
+ it "returns description" do
59
+ expect(subject.description).to eq "be unique in the queue"
48
60
  end
49
61
  end
50
- end
62
+ end
@@ -1,5 +1,5 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe RSpec::Sidekiq::VERSION do
4
- expect_it { to eq("1.0.0") }
5
- end
4
+ expect_it { to eq("1.1.0") }
5
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Ostler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-21 00:00:00.000000000 Z
11
+ date: 2014-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sidekiq
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,34 +66,6 @@ dependencies:
66
66
  - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.1.0
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ! '>='
74
- - !ruby/object:Gem::Version
75
- version: 2.0.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ! '>='
81
- - !ruby/object:Gem::Version
82
- version: 2.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: sidekiq
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: 2.4.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: 2.4.0
97
69
  description: Simple testing of Sidekiq jobs via a collection of matchers and helpers
98
70
  email: github@philostler.com
99
71
  executables: []
@@ -108,21 +80,21 @@ files:
108
80
  - Gemfile
109
81
  - LICENSE
110
82
  - README.md
111
- - rspec-sidekiq.gemspec
83
+ - lib/rspec-sidekiq.rb
112
84
  - lib/rspec/sidekiq/batch.rb
113
85
  - lib/rspec/sidekiq/configuration.rb
114
- - lib/rspec/sidekiq/helpers/within_sidekiq_retries_exhausted_block.rb
115
86
  - lib/rspec/sidekiq/helpers.rb
87
+ - lib/rspec/sidekiq/helpers/within_sidekiq_retries_exhausted_block.rb
88
+ - lib/rspec/sidekiq/matchers.rb
116
89
  - lib/rspec/sidekiq/matchers/be_delayed.rb
117
90
  - lib/rspec/sidekiq/matchers/be_processed_in.rb
118
91
  - lib/rspec/sidekiq/matchers/be_retryable.rb
119
92
  - lib/rspec/sidekiq/matchers/be_unique.rb
120
93
  - lib/rspec/sidekiq/matchers/have_enqueued_job.rb
121
94
  - lib/rspec/sidekiq/matchers/have_enqueued_jobs.rb
122
- - lib/rspec/sidekiq/matchers.rb
123
95
  - lib/rspec/sidekiq/sidekiq.rb
124
96
  - lib/rspec/sidekiq/version.rb
125
- - lib/rspec-sidekiq.rb
97
+ - rspec-sidekiq.gemspec
126
98
  - spec/rspec/sidekiq/batch_spec.rb
127
99
  - spec/rspec/sidekiq/helpers/retries_exhausted_spec.rb
128
100
  - spec/rspec/sidekiq/matchers/be_delayed_spec.rb
@@ -158,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
130
  version: '0'
159
131
  requirements: []
160
132
  rubyforge_project:
161
- rubygems_version: 2.1.11
133
+ rubygems_version: 2.2.2
162
134
  signing_key:
163
135
  specification_version: 4
164
136
  summary: RSpec for Sidekiq