hoodoo 2.6.1 → 2.7.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 +4 -4
- data/lib/hoodoo/active/active_record/manually_dated.rb +2 -1
- data/lib/hoodoo/transient_store/mocks/redis.rb +5 -6
- data/lib/hoodoo/transient_store/transient_store/redis.rb +2 -2
- data/lib/hoodoo/version.rb +2 -2
- data/spec/active/active_record/manually_dated_spec.rb +27 -0
- data/spec/transient_store/transient_store/redis_spec.rb +6 -6
- metadata +45 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64349a6945a30beac7d4b9f79dd8b71a4a58027805e22097643ce8c6500a4a9b
|
4
|
+
data.tar.gz: c06b01af44c143d470786840df373ffb8baf9699d1a293ca00b6561a487b4966
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05572a42507a1c94c95605e35ed7ad2318666204e107db421ca6b37a32ae07ff45338e826f2ed540289b1958e2dda7df613ea9c48ef77bba06718ae1e65ae82d
|
7
|
+
data.tar.gz: bb7c170f76f86651d5904303ad62dcbf7e7e4ec10a925c661962c4d25c12739a86563cf2eecbb4c079e33e631e7e0cd6a75b866b0d8ec90f05e240f0d39cc7ed
|
@@ -747,7 +747,8 @@ module Hoodoo
|
|
747
747
|
# Additional _named_ parameters are:
|
748
748
|
#
|
749
749
|
# +ident+:: UUID (32-digit +id+ column value) of the record to be
|
750
|
-
# updated. If
|
750
|
+
# updated. If present, the +context+ parameter may be
|
751
|
+
# +nil+. If omitted, +context.request.ident+ is used.
|
751
752
|
#
|
752
753
|
# +scope+:: ActiveRecord::Relation instance providing the scope
|
753
754
|
# to use for database locks and acquiring the record
|
@@ -20,16 +20,15 @@ module Hoodoo
|
|
20
20
|
# and_return( Hoodoo::TransientStore::Mocks::Redis.new )
|
21
21
|
# )
|
22
22
|
#
|
23
|
-
# ...whenever you need to stub out real
|
24
|
-
#
|
23
|
+
# ...whenever you need to stub out real Redis. You will# probably want
|
24
|
+
# to add:
|
25
25
|
#
|
26
26
|
# before :all do # (or ":each")
|
27
27
|
# Hoodoo::TransientStore::Mocks::Redis.reset()
|
28
28
|
# end
|
29
29
|
#
|
30
|
-
# ...to "clean out
|
31
|
-
#
|
32
|
-
# hash of data.
|
30
|
+
# ...to "clean out Redis" before or between tests. You can check the
|
31
|
+
# contents of mock Redis by examining ::store's hash of data.
|
33
32
|
#
|
34
33
|
# The test coverage for Hoodoo::TransientStore selects this backend in
|
35
34
|
# passing. Generally speaking you should favour Hoodoo::TransientStore
|
@@ -39,7 +38,7 @@ module Hoodoo
|
|
39
38
|
class Redis
|
40
39
|
@@store = {}
|
41
40
|
|
42
|
-
# For test analysis, return the hash of '
|
41
|
+
# For test analysis, return the hash of 'Redis' mock data.
|
43
42
|
#
|
44
43
|
# Entries are referenced by the key you used to originally
|
45
44
|
# store them; values are hashes with ":expires_at" giving an
|
@@ -46,7 +46,7 @@ module Hoodoo
|
|
46
46
|
def set( key:, payload:, maximum_lifespan: )
|
47
47
|
nk = namespaced_key( key )
|
48
48
|
|
49
|
-
@client
|
49
|
+
@client.set( nk, JSON.fast_generate( payload ) )
|
50
50
|
@client.expire( nk, maximum_lifespan )
|
51
51
|
|
52
52
|
true
|
@@ -55,7 +55,7 @@ module Hoodoo
|
|
55
55
|
# See Hoodoo::TransientStore::Base#get for details.
|
56
56
|
#
|
57
57
|
def get( key: )
|
58
|
-
result = @client
|
58
|
+
result = @client.get( namespaced_key( key ) )
|
59
59
|
return result.nil? ? nil : ( JSON.parse( result ) rescue nil )
|
60
60
|
end
|
61
61
|
|
data/lib/hoodoo/version.rb
CHANGED
@@ -12,11 +12,11 @@ module Hoodoo
|
|
12
12
|
# The Hoodoo gem version. If this changes, be sure to re-run
|
13
13
|
# <tt>bundle install</tt> or <tt>bundle update</tt>.
|
14
14
|
#
|
15
|
-
VERSION = '2.
|
15
|
+
VERSION = '2.7.0'
|
16
16
|
|
17
17
|
# The Hoodoo gem date. If this changes, be sure to re-run
|
18
18
|
# <tt>bundle install</tt> or <tt>bundle update</tt>.
|
19
19
|
#
|
20
|
-
DATE = '2018-06
|
20
|
+
DATE = '2018-08-06'
|
21
21
|
|
22
22
|
end
|
@@ -533,6 +533,20 @@ describe Hoodoo::ActiveRecord::ManuallyDated do
|
|
533
533
|
run_expectations( result )
|
534
534
|
end
|
535
535
|
|
536
|
+
# If 'ident' and 'attributes' are given, 'context' can be "nil".
|
537
|
+
#
|
538
|
+
it 'specifying "ident" and "attributes" with nil "context"' do
|
539
|
+
@context.request.instance_variable_set( '@ident', Hoodoo::UUID.generate() )
|
540
|
+
|
541
|
+
result = RSpecModelManualDateTest.manually_dated_update_in(
|
542
|
+
nil,
|
543
|
+
ident: @record.uuid,
|
544
|
+
attributes: { 'data' => @change_data_to }
|
545
|
+
)
|
546
|
+
|
547
|
+
run_expectations( result )
|
548
|
+
end
|
549
|
+
|
536
550
|
it 'uses a given scope' do
|
537
551
|
|
538
552
|
# We expect the custom scope to be customised to find an
|
@@ -728,6 +742,19 @@ describe Hoodoo::ActiveRecord::ManuallyDated do
|
|
728
742
|
run_expectations( result )
|
729
743
|
end
|
730
744
|
|
745
|
+
# If 'ident' is given, 'context' can be "nil".
|
746
|
+
#
|
747
|
+
it 'specifying "ident" with nil "context"' do
|
748
|
+
@context.request.instance_variable_set( '@ident', Hoodoo::UUID.generate() )
|
749
|
+
|
750
|
+
result = RSpecModelManualDateTest.manually_dated_destruction_in(
|
751
|
+
nil,
|
752
|
+
ident: @record.uuid
|
753
|
+
)
|
754
|
+
|
755
|
+
run_expectations( result )
|
756
|
+
end
|
757
|
+
|
731
758
|
it 'uses a given scope' do
|
732
759
|
|
733
760
|
# We expect the custom scope to be customised to find an
|
@@ -133,7 +133,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
133
133
|
|
134
134
|
context '#set' do
|
135
135
|
it 'sets' do
|
136
|
-
expect_redis( backend ).to receive( :
|
136
|
+
expect_redis( backend ).to receive( :set ).with( @nskey, @jpayload ).and_call_original()
|
137
137
|
expect_redis( backend ).to receive( :expire ).with( @nskey, @ttl ).and_call_original()
|
138
138
|
|
139
139
|
result = @instance.set(
|
@@ -146,7 +146,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
146
146
|
end
|
147
147
|
|
148
148
|
it 'allows exceptions to propagate' do
|
149
|
-
expect_redis( backend ).to receive( :
|
149
|
+
expect_redis( backend ).to receive( :set ).with( @nskey, @jpayload ).and_raise( 'Hello world' )
|
150
150
|
|
151
151
|
expect {
|
152
152
|
@instance.set(
|
@@ -160,7 +160,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
160
160
|
|
161
161
|
context '#get' do
|
162
162
|
before :each do
|
163
|
-
expect_redis( backend ).to receive( :
|
163
|
+
expect_redis( backend ).to receive( :set ).with( @nskey, @jpayload ).and_call_original()
|
164
164
|
expect_redis( backend ).to receive( :expire ).with( @nskey, @ttl ).and_call_original()
|
165
165
|
|
166
166
|
@instance.set(
|
@@ -171,7 +171,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
171
171
|
end
|
172
172
|
|
173
173
|
it 'gets known keys' do
|
174
|
-
expect_redis( backend ).to receive( :
|
174
|
+
expect_redis( backend ).to receive( :get ).with( @nskey ).and_call_original()
|
175
175
|
expect( @instance.get( key: @key ) ).to eql( @payload )
|
176
176
|
end
|
177
177
|
|
@@ -180,7 +180,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
180
180
|
end
|
181
181
|
|
182
182
|
it 'allows exceptions to propagate' do
|
183
|
-
expect_redis( backend ).to receive( :
|
183
|
+
expect_redis( backend ).to receive( :get ).with( @nskey ).and_raise( 'Hello world' )
|
184
184
|
|
185
185
|
expect {
|
186
186
|
@instance.get( key: @key )
|
@@ -190,7 +190,7 @@ describe Hoodoo::TransientStore::Redis do
|
|
190
190
|
|
191
191
|
context '#delete' do
|
192
192
|
before :each do
|
193
|
-
expect_redis( backend ).to receive( :
|
193
|
+
expect_redis( backend ).to receive( :set ).with( @nskey, @jpayload ).and_call_original()
|
194
194
|
expect_redis( backend ).to receive( :expire ).with( @nskey, @ttl ).and_call_original()
|
195
195
|
|
196
196
|
@instance.set(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoodoo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loyalty New Zealand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06
|
11
|
+
date: 2018-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dalli
|
@@ -24,20 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundle-audit
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: redis
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '4.0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '4.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,112 +86,112 @@ dependencies:
|
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '6.0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '6.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rack-test
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
103
|
+
version: '1.1'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
110
|
+
version: '1.1'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rspec
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '3.
|
117
|
+
version: '3.8'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '3.
|
124
|
+
version: '3.8'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rspec-mocks
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '3.
|
131
|
+
version: '3.8'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '3.
|
138
|
+
version: '3.8'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: webmock
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '3.
|
145
|
+
version: '3.4'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '3.
|
152
|
+
version: '3.4'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: activerecord
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: '5.
|
159
|
+
version: '5.2'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '5.
|
166
|
+
version: '5.2'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: activesupport
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: '5.
|
173
|
+
version: '5.2'
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: '5.
|
180
|
+
version: '5.2'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: database_cleaner
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: '1.
|
187
|
+
version: '1.7'
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: '1.
|
194
|
+
version: '1.7'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: pg
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,70 +212,70 @@ dependencies:
|
|
198
212
|
requirements:
|
199
213
|
- - "~>"
|
200
214
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
215
|
+
version: '10.0'
|
202
216
|
type: :development
|
203
217
|
prerelease: false
|
204
218
|
version_requirements: !ruby/object:Gem::Requirement
|
205
219
|
requirements:
|
206
220
|
- - "~>"
|
207
221
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
222
|
+
version: '10.0'
|
209
223
|
- !ruby/object:Gem::Dependency
|
210
224
|
name: timecop
|
211
225
|
requirement: !ruby/object:Gem::Requirement
|
212
226
|
requirements:
|
213
227
|
- - "~>"
|
214
228
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0.
|
229
|
+
version: '0.9'
|
216
230
|
type: :development
|
217
231
|
prerelease: false
|
218
232
|
version_requirements: !ruby/object:Gem::Requirement
|
219
233
|
requirements:
|
220
234
|
- - "~>"
|
221
235
|
- !ruby/object:Gem::Version
|
222
|
-
version: '0.
|
236
|
+
version: '0.9'
|
223
237
|
- !ruby/object:Gem::Dependency
|
224
238
|
name: raygun4ruby
|
225
239
|
requirement: !ruby/object:Gem::Requirement
|
226
240
|
requirements:
|
227
241
|
- - "~>"
|
228
242
|
- !ruby/object:Gem::Version
|
229
|
-
version: '2.
|
243
|
+
version: '2.7'
|
230
244
|
type: :development
|
231
245
|
prerelease: false
|
232
246
|
version_requirements: !ruby/object:Gem::Requirement
|
233
247
|
requirements:
|
234
248
|
- - "~>"
|
235
249
|
- !ruby/object:Gem::Version
|
236
|
-
version: '2.
|
250
|
+
version: '2.7'
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: airbrake-ruby
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
240
254
|
requirements:
|
241
255
|
- - "~>"
|
242
256
|
- !ruby/object:Gem::Version
|
243
|
-
version: '2.
|
257
|
+
version: '2.11'
|
244
258
|
type: :development
|
245
259
|
prerelease: false
|
246
260
|
version_requirements: !ruby/object:Gem::Requirement
|
247
261
|
requirements:
|
248
262
|
- - "~>"
|
249
263
|
- !ruby/object:Gem::Version
|
250
|
-
version: '2.
|
264
|
+
version: '2.11'
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: airbrake
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
254
268
|
requirements:
|
255
269
|
- - "~>"
|
256
270
|
- !ruby/object:Gem::Version
|
257
|
-
version: '7.
|
271
|
+
version: '7.3'
|
258
272
|
type: :development
|
259
273
|
prerelease: false
|
260
274
|
version_requirements: !ruby/object:Gem::Requirement
|
261
275
|
requirements:
|
262
276
|
- - "~>"
|
263
277
|
- !ruby/object:Gem::Version
|
264
|
-
version: '7.
|
278
|
+
version: '7.3'
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: le
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -548,7 +562,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
548
562
|
requirements:
|
549
563
|
- - ">="
|
550
564
|
- !ruby/object:Gem::Version
|
551
|
-
version: 2.2.
|
565
|
+
version: 2.2.10
|
552
566
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
553
567
|
requirements:
|
554
568
|
- - ">="
|