rspec-sidekiq_pro 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab301b38f104fcdeda2a304b6f87f4d50e67ed15f01340b08c7d77643b35d98b
4
- data.tar.gz: bdcf93f32eb2ec8040c286e864fa204ce01f066f88e76f6f0b5b9e61ec16cb11
3
+ metadata.gz: c0209fc3fe2a82f7cd7355cd0514da771926c8557b68fd4ea23680d0b5cc95e6
4
+ data.tar.gz: bea903392cd28942099eb2b70e6ee0111df93842c569d7a5ccba113e4e9fdb4f
5
5
  SHA512:
6
- metadata.gz: e86e8d44fcdad8b55dd826ae835fabc40b235dba13c90d471dbfef38e609d3d19a18a4ea4d6b9f65ec4c42db7a9f0690d97ad9ef582aed6303ebdad41ba5ecce
7
- data.tar.gz: e682c9fe04fb2e49866a11af75d052d3003127e150444af0769332f983a3fe55f1f76e153db56beaca6bd4e6cb901117be42f5974016ddbcbfd17ea1780a02f6
6
+ metadata.gz: fddfe519ba229d75f3c6bcd1f1a68eade0e7c23babb04ebe377484a3704857bb47feb12d6f9de213cdf0fe9a037b874bfb78692c5a69359f5cf270bb0a28f020
7
+ data.tar.gz: f1177195cf806d86619f027255619fdd5b47f370aba696a4d3931cccf8498197f758895c7fb7cee1a10320fe5cea94d48cc7e044a7250d9a767bcfd5252c0d2a
data/README.md CHANGED
@@ -1,14 +1,182 @@
1
1
  # Rspec for Sidekiq Pro
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/rspec-sidekiq_pro.svg)](https://rubygems.org/gems/rspec-sidekiq_pro)
4
+ [![CI Status](https://github.com/inkstak/rspec-sidekiq_pro/actions/workflows/ci.yml/badge.svg)](https://github.com/inkstak/rspec-sidekiq_pro/actions/workflows/ci.yml)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/9bb8b75ea8c66b1a9c94/maintainability)](https://codeclimate.com/github/inkstak/rspec-sidekiq_pro/maintainability)
6
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/3de8ad4b1787cdb9ca20/test_coverage)](https://codeclimate.com/github/inkstak/rspec-sidekiq_pro/test_coverage)
7
+
3
8
  ### Installation
4
9
 
5
10
  ```bash
6
- bundle add rspec-sidekiq_pro
11
+ bundle add rspec-sidekiq_pro --group=test
12
+ ```
13
+
14
+ ### Configuration
15
+
16
+ `rspec/sidekiq_pro` requires `sidekiq/testing` by default so there is no need to include it.
17
+
18
+ It also means that Sidekiq in set to `fake` mode by default. Take a look at [Sidekiq wiki](https://github.com/mperham/sidekiq/wiki/Testing) for more details.
19
+
20
+ If you wish to start each spec without enqueued jobs or batches:
21
+
22
+ ```ruby
23
+ require "rspec/sidekiq_pro"
24
+
25
+ RSpec.configure do |config|
26
+ config.before do
27
+ Sidekiq::Queues.clear_all
28
+ RSpec::SidekiqPro::Batches.clear_all
29
+ end
30
+ end
7
31
  ```
8
32
 
9
33
  ### Usage
10
34
 
11
- TODO
35
+ Two matchers are provided:
36
+
37
+ * `enqueue_sidekiq_job` supports block expectation
38
+ * `have_enqueued_sidekiq_job` supports value expectation
39
+
40
+ ```ruby
41
+ it do
42
+ expect { SampleJob.perform_async }.to enqueue_sidekiq_job(SampleJob)
43
+ end
44
+ ```
45
+ ```ruby
46
+ it do
47
+ SampleJob.perform_async
48
+ expect(SampleJob).to have_enqueued_sidekiq_job
49
+ end
50
+ ```
51
+
52
+ Both matchers provide the same chainable methods:
53
+
54
+ * `.with`
55
+ * `.once`
56
+ * `.twice`
57
+ * `.exactly().times`
58
+ * `.in`
59
+ * `.at`
60
+ * `.within_batch`
61
+ * `.without_batch`
62
+
63
+
64
+ #### Checking arguments
65
+
66
+ ```ruby
67
+ it do
68
+ expect { SampleJob.perform_async(1, 2, 3) }
69
+ .to enqueue_sidekiq_job(SampleJob).with(1, 2, 3)
70
+ end
71
+ ```
72
+ ```ruby
73
+ it do
74
+ SampleJob.perform_async(1, 2, 3)
75
+ expect(SampleJob).to have_enqueued_sidekiq_job.with(1, 2, 3)
76
+ end
77
+ ```
78
+
79
+
80
+ #### Checking counts
81
+
82
+ ```ruby
83
+ it do
84
+ expect { SampleJob.perform_async }
85
+ .to enqueue_sidekiq_job(SampleJob).once
86
+ end
87
+ ```
88
+
89
+ ```ruby
90
+ it do
91
+ expect {
92
+ 2.times { SampleJob.perform_async }
93
+ }.to enqueue_sidekiq_job(SampleJob).twice
94
+ end
95
+ ```
96
+
97
+ ```ruby
98
+ it do
99
+ expect {
100
+ 3.times { SampleJob.perform_async }
101
+ }.to enqueue_sidekiq_job(SampleJob).exactly(3).times
102
+ end
103
+ ```
104
+
105
+ Be careful when checking both counts and arguments:
106
+
107
+ ```ruby
108
+ it do
109
+ expect {
110
+ SampleJob.perform_async.with(1)
111
+ SampleJob.perform_async.with(2)
112
+ }
113
+ .to enqueue_sidekiq_job(SampleJob).twice
114
+ .and enqueue_sidekiq_job(SampleJob).once.with(1)
115
+ .and enqueue_sidekiq_job(SampleJob).once.with(2)
116
+ end
117
+ ```
118
+
119
+ #### Checking schedules
120
+
121
+ ```ruby
122
+ it do
123
+ expect {
124
+ SampleJob.perform_in(5.minutes)
125
+ }.to enqueue_sidekiq_job(SampleJob).in(5.minutes)
126
+ end
127
+ ```
128
+
129
+ ```ruby
130
+ it do
131
+ expect {
132
+ SampleJob.perform_at(10.minutes.from_now)
133
+ }.to enqueue_sidekiq_job(SampleJob).at(10.minutes.from_now)
134
+ end
135
+ ```
136
+
137
+ Time matching is performed to the second, if you have code that takes some time to be executed consider using [Timecop](https://github.com/travisjeffery/timecop).
138
+
139
+
140
+ #### Batches
141
+
142
+ ```ruby
143
+ it do
144
+ expect {
145
+ SampleJob.perform_async
146
+ }.to enqueue_sidekiq_job(SampleJob).without_batch
147
+ end
148
+ ```
149
+
150
+ ```ruby
151
+ it do
152
+ expect {
153
+ batch = Sidekiq::Batch.new
154
+ batch.jobs { SampleJob.perform_async }
155
+ }.to enqueue_sidekiq_job(SampleJob).within_batch
156
+ end
157
+ ```
158
+
159
+ ```ruby
160
+ it do
161
+ expect { start_some_complex_workflow }
162
+ .to enqueue_sidekiq_job(SampleJob).twice.within_batch { |batch|
163
+ expect(batch).to have_attributes(description: "Complex Workflow first step")
164
+ }
165
+ end
166
+ ```
167
+
168
+ `within_batch` and `without_batch` require `Sidekiq::Testing` to be enabled.
169
+
170
+ When `Sidekiq::Testing` is enabled, every batch is pushed to `RSpec::SidekiqPro::Batches` instead of Redis.
171
+
172
+ ```ruby
173
+ it do
174
+ batch = Sidekiq::Batch.new
175
+ batch.jobs { SampleJob.perform_async }
176
+
177
+ expect(RSpec::SidekiqPro::Batches.first.bid).to eq(batch.bid)
178
+ end
179
+ ```
12
180
 
13
181
  ## Contributing
14
182
 
@@ -35,4 +203,6 @@ bundle exec rake
35
203
 
36
204
  Please see [LICENSE](https://github.com/inkstak/rspec-sidekiq_pro/blob/main/LICENSE) for further details.
37
205
 
206
+ Inspired by the [philostler/rspec-sidekiq](https://github.com/philostler/rspec-sidekiq/) & [pirj/rspec-enqueue_sidekiq_job](https://github.com/pirj/rspec-enqueue_sidekiq_job)
207
+
38
208
  Contributors: [./graphs/contributors](https://github.com/inkstak/rspec-sidekiq_pro/graphs/contributors)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module SidekiqPro
5
- VERSION = "0.0.0"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-sidekiq_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Savater Sebastien
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-17 00:00:00.000000000 Z
11
+ date: 2022-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport