asset_cloud 2.5.3 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa8b974322c07bc208a54567997c8b49d4cec0c08519458ac4e205cb84f375d1
4
- data.tar.gz: 7fa58473c81bed77e11b855e4d153e49fbebd07e53af888f976f6b3dae18fd41
3
+ metadata.gz: 134ba5f46359569f492531369197e78de71f48eabc0efef27c60b9f2a9b2a4fd
4
+ data.tar.gz: 28edd6a34bfb58f3fe796c697a0c58855a65f117c489a4d427711b88386b2df0
5
5
  SHA512:
6
- metadata.gz: 8fcec64888039982e1e435d39c8ec50684aeb661eeeebcbbc7471499cb8b5a9ec0d29bc543eeec394fd3f7682064ac9daa1131b671c7f63210803db0bb8dcb00
7
- data.tar.gz: c8625f3b8ce74509bb3c54b941c37f016d8bcb0adde0bd4851709f70b1d1deda80565313cc6f2d8255202965f8e686f1116383ee4133264a29afe656ce7f7063
6
+ metadata.gz: 161578c01372d753f3fe15558bc0f2b446e2cdbab75272c48c72bb3ce3e0a94c67616544b712efafc74eac6a7e0e18f69367712e5a37e87a769723177479c0c8
7
+ data.tar.gz: a65784b410afe987d821589a631cf16e4b78795b6e07cebf6b6a4252c5631dc35eaca8a1da8ea2cbe4bf37d3308965bd5ed3a6dafe0c57de37a49489d8e11d4d
@@ -0,0 +1,3 @@
1
+ inherit_gem:
2
+ rubocop-shopify: rubocop.yml
3
+ inherit_from: .rubocop_todo.yml
@@ -0,0 +1,326 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2020-05-22 10:33:52 -0400 using RuboCop version 0.82.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 7
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: AllowAdjacentOneLineDefs, NumberOfEmptyLines.
12
+ Layout/EmptyLineBetweenDefs:
13
+ Exclude:
14
+ - 'lib/asset_cloud/asset_extension.rb'
15
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
16
+
17
+ # Offense count: 1
18
+ # Cop supports --auto-correct.
19
+ # Configuration parameters: EnforcedStyle.
20
+ # SupportedStyles: empty_lines, no_empty_lines
21
+ Layout/EmptyLinesAroundBlockBody:
22
+ Exclude:
23
+ - 'lib/asset_cloud/callbacks.rb'
24
+
25
+ # Offense count: 4
26
+ # Cop supports --auto-correct.
27
+ # Configuration parameters: EnforcedStyle.
28
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines, beginning_only, ending_only
29
+ Layout/EmptyLinesAroundClassBody:
30
+ Exclude:
31
+ - 'lib/asset_cloud/base.rb'
32
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
33
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
34
+ - 'lib/asset_cloud/buckets/versioned_memory_bucket.rb'
35
+
36
+ # Offense count: 6
37
+ # Cop supports --auto-correct.
38
+ # Configuration parameters: EnforcedStyle.
39
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
40
+ Layout/EmptyLinesAroundModuleBody:
41
+ Exclude:
42
+ - 'lib/asset_cloud/asset.rb'
43
+ - 'lib/asset_cloud/base.rb'
44
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
45
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
46
+ - 'lib/asset_cloud/free_key_locator.rb'
47
+
48
+ # Offense count: 2
49
+ # Cop supports --auto-correct.
50
+ # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
51
+ Layout/ExtraSpacing:
52
+ Exclude:
53
+ - 'lib/asset_cloud/base.rb'
54
+
55
+ # Offense count: 9
56
+ # Cop supports --auto-correct.
57
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
58
+ # URISchemes: http, https
59
+ Layout/LineLength:
60
+ Max: 187
61
+
62
+ # Offense count: 1
63
+ # Cop supports --auto-correct.
64
+ Layout/RescueEnsureAlignment:
65
+ Exclude:
66
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
67
+
68
+ # Offense count: 5
69
+ # Cop supports --auto-correct.
70
+ Layout/SpaceAfterComma:
71
+ Exclude:
72
+ - 'lib/asset_cloud/asset.rb'
73
+ - 'lib/asset_cloud/base.rb'
74
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
75
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
76
+
77
+ # Offense count: 7
78
+ # Cop supports --auto-correct.
79
+ # Configuration parameters: EnforcedStyle.
80
+ # SupportedStyles: space, no_space
81
+ Layout/SpaceAroundEqualsInParameterDefault:
82
+ Exclude:
83
+ - 'lib/asset_cloud/base.rb'
84
+ - 'lib/asset_cloud/bucket.rb'
85
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
86
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
87
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
88
+
89
+ # Offense count: 3
90
+ # Cop supports --auto-correct.
91
+ # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
92
+ # SupportedStylesForExponentOperator: space, no_space
93
+ Layout/SpaceAroundOperators:
94
+ Exclude:
95
+ - 'lib/asset_cloud/base.rb'
96
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
97
+
98
+ # Offense count: 22
99
+ # Cop supports --auto-correct.
100
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
101
+ # SupportedStyles: space, no_space
102
+ # SupportedStylesForEmptyBraces: space, no_space
103
+ Layout/SpaceInsideBlockBraces:
104
+ Exclude:
105
+ - 'lib/asset_cloud/base.rb'
106
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
107
+
108
+ # Offense count: 2
109
+ # Cop supports --auto-correct.
110
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
111
+ # SupportedStyles: space, no_space, compact
112
+ # SupportedStylesForEmptyBraces: space, no_space
113
+ Layout/SpaceInsideHashLiteralBraces:
114
+ Exclude:
115
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
116
+
117
+ # Offense count: 9
118
+ # Configuration parameters: AllowSafeAssignment.
119
+ Lint/AssignmentInCondition:
120
+ Exclude:
121
+ - 'lib/asset_cloud/asset.rb'
122
+ - 'lib/asset_cloud/base.rb'
123
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
124
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
125
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
126
+
127
+ # Offense count: 2
128
+ Lint/DuplicateMethods:
129
+ Exclude:
130
+ - 'lib/asset_cloud/asset.rb'
131
+
132
+ # Offense count: 1
133
+ Lint/IneffectiveAccessModifier:
134
+ Exclude:
135
+ - 'lib/asset_cloud/base.rb'
136
+
137
+ # Offense count: 1
138
+ # Configuration parameters: AllowComments.
139
+ Lint/SuppressedException:
140
+ Exclude:
141
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
142
+
143
+ # Offense count: 1
144
+ # Cop supports --auto-correct.
145
+ # Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
146
+ Lint/UnusedBlockArgument:
147
+ Exclude:
148
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
149
+
150
+ # Offense count: 9
151
+ # Cop supports --auto-correct.
152
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
153
+ Lint/UnusedMethodArgument:
154
+ Exclude:
155
+ - 'lib/asset_cloud/base.rb'
156
+ - 'lib/asset_cloud/buckets/blackhole_bucket.rb'
157
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
158
+ - 'lib/asset_cloud/buckets/invalid_bucket.rb'
159
+
160
+ # Offense count: 6
161
+ Lint/UselessAssignment:
162
+ Exclude:
163
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
164
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
165
+ - 'spec/gcs_bucket_spec.rb'
166
+
167
+ # Offense count: 1
168
+ Naming/ConstantName:
169
+ Exclude:
170
+ - 'lib/asset_cloud/buckets/invalid_bucket.rb'
171
+
172
+ # Offense count: 2
173
+ # Cop supports --auto-correct.
174
+ # Configuration parameters: EnforcedStyle.
175
+ # SupportedStyles: always, conditionals
176
+ Style/AndOr:
177
+ Exclude:
178
+ - 'lib/asset_cloud/asset.rb'
179
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
180
+
181
+ # Offense count: 1
182
+ # Cop supports --auto-correct.
183
+ # Configuration parameters: EnforcedStyle, AllowInnerBackticks.
184
+ # SupportedStyles: backticks, percent_x, mixed
185
+ Style/CommandLiteral:
186
+ Exclude:
187
+ - 'asset_cloud.gemspec'
188
+
189
+ # Offense count: 1
190
+ # Cop supports --auto-correct.
191
+ # Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions.
192
+ # SupportedStyles: assign_to_condition, assign_inside_condition
193
+ Style/ConditionalAssignment:
194
+ Exclude:
195
+ - 'lib/asset_cloud/base.rb'
196
+
197
+ # Offense count: 22
198
+ # Cop supports --auto-correct.
199
+ # Configuration parameters: EnforcedStyle.
200
+ # SupportedStyles: always, always_true, never
201
+ Style/FrozenStringLiteralComment:
202
+ Enabled: false
203
+
204
+ # Offense count: 3
205
+ # Cop supports --auto-correct.
206
+ # Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
207
+ # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
208
+ Style/HashSyntax:
209
+ Exclude:
210
+ - 'lib/asset_cloud/asset_extension.rb'
211
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
212
+
213
+ # Offense count: 17
214
+ # Cop supports --auto-correct.
215
+ # Configuration parameters: IgnoreMacros, IgnoredMethods, IgnoredPatterns, IncludedMacros, AllowParenthesesInMultilineCall, AllowParenthesesInChaining, AllowParenthesesInCamelCaseMethod, EnforcedStyle.
216
+ # SupportedStyles: require_parentheses, omit_parentheses
217
+ Style/MethodCallWithArgsParentheses:
218
+ Exclude:
219
+ - 'Gemfile'
220
+ - 'Rakefile'
221
+ - 'asset_cloud.gemspec'
222
+ - 'lib/asset_cloud.rb'
223
+ - 'lib/asset_cloud/asset.rb'
224
+ - 'lib/asset_cloud/base.rb'
225
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
226
+ - 'lib/asset_cloud/metadata.rb'
227
+
228
+ # Offense count: 2
229
+ Style/MethodMissingSuper:
230
+ Exclude:
231
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
232
+ - 'spec/callbacks_spec.rb'
233
+
234
+ # Offense count: 2
235
+ Style/MissingRespondToMissing:
236
+ Exclude:
237
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
238
+ - 'spec/callbacks_spec.rb'
239
+
240
+ # Offense count: 2
241
+ # Cop supports --auto-correct.
242
+ Style/ParallelAssignment:
243
+ Exclude:
244
+ - 'lib/asset_cloud/base.rb'
245
+ - 'lib/asset_cloud/bucket.rb'
246
+
247
+ # Offense count: 2
248
+ # Cop supports --auto-correct.
249
+ Style/PerlBackrefs:
250
+ Exclude:
251
+ - 'lib/asset_cloud/base.rb'
252
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
253
+
254
+ # Offense count: 3
255
+ # Cop supports --auto-correct.
256
+ # Configuration parameters: EnforcedStyle.
257
+ # SupportedStyles: short, verbose
258
+ Style/PreferredHashMethods:
259
+ Exclude:
260
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
261
+ - 'lib/asset_cloud/buckets/versioned_memory_bucket.rb'
262
+
263
+ # Offense count: 2
264
+ # Cop supports --auto-correct.
265
+ Style/RedundantBegin:
266
+ Exclude:
267
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
268
+ - 'lib/asset_cloud/buckets/gcs_bucket.rb'
269
+
270
+ # Offense count: 5
271
+ # Cop supports --auto-correct.
272
+ Style/RedundantPercentQ:
273
+ Exclude:
274
+ - 'asset_cloud.gemspec'
275
+
276
+ # Offense count: 3
277
+ # Cop supports --auto-correct.
278
+ # Configuration parameters: AllowMultipleReturnValues.
279
+ Style/RedundantReturn:
280
+ Exclude:
281
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
282
+ - 'lib/asset_cloud/buckets/gcs_bucket.rb'
283
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
284
+
285
+ # Offense count: 14
286
+ # Cop supports --auto-correct.
287
+ Style/RedundantSelf:
288
+ Exclude:
289
+ - 'lib/asset_cloud/asset.rb'
290
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
291
+ - 'lib/asset_cloud/callbacks.rb'
292
+ - 'lib/asset_cloud/metadata.rb'
293
+ - 'lib/asset_cloud/validations.rb'
294
+
295
+ # Offense count: 4
296
+ # Cop supports --auto-correct.
297
+ # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
298
+ # SupportedStyles: slashes, percent_r, mixed
299
+ Style/RegexpLiteral:
300
+ Exclude:
301
+ - 'lib/asset_cloud/base.rb'
302
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
303
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
304
+
305
+ # Offense count: 10
306
+ # Cop supports --auto-correct.
307
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
308
+ # AllowedMethods: present?, blank?, presence, try, try!
309
+ Style/SafeNavigation:
310
+ Exclude:
311
+ - 'lib/asset_cloud/base.rb'
312
+
313
+ # Offense count: 2
314
+ # Cop supports --auto-correct.
315
+ # Configuration parameters: AllowIfMethodIsEmpty.
316
+ Style/SingleLineMethods:
317
+ Exclude:
318
+ - 'lib/asset_cloud/asset_extension.rb'
319
+
320
+ # Offense count: 1
321
+ # Cop supports --auto-correct.
322
+ # Configuration parameters: EnforcedStyle.
323
+ # SupportedStyles: use_perl_names, use_english_names
324
+ Style/SpecialGlobalVars:
325
+ Exclude:
326
+ - 'asset_cloud.gemspec'
data/History.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Asset Cloud Version History
2
2
 
3
+ ## Version 2.6.0, 2020-05-22
4
+
5
+ * Add checksum to metadata (https://github.com/Shopify/asset_cloud/pull/57)
6
+
7
+ **Note:** There are versions between 2.2.2 and 2.6.0 not covered by the History.
8
+
3
9
  ## Version 2.2.2, 2016-02-11
4
10
 
5
11
  * Allow asset_class to be a proc which determines the class to use within a bucket (https://github.com/Shopify/asset_cloud/pull/15)
@@ -4,6 +4,14 @@
4
4
 
5
5
  An abstraction layer around arbitrary and diverse asset stores.
6
6
 
7
+ == Value Hash vs Checksum
8
+
9
+ +value_hash+ is intended as a *private* hash/checksum, not exposed to end users. Its underlying algorithm is private, and
10
+ could change over time so should not be relied on by clients.
11
+
12
+ +checksum+ is intended as a *public* hash/checksum, exposed to end users. Its underlying algorithms is documented (e.g. MD5)
13
+ and is not expected to change.
14
+
7
15
  == Installation
8
16
 
9
17
  === as a Gem
data/Rakefile CHANGED
@@ -5,9 +5,10 @@ require 'rake'
5
5
  require 'rake/testtask'
6
6
  require 'rdoc/task'
7
7
  require 'rspec/core/rake_task'
8
+ require 'rubocop/rake_task'
8
9
 
9
- desc 'Default: run unit tests.'
10
- task :default => [:spec]
10
+ desc 'Default: run unit tests and style checks.'
11
+ task default: [:spec, :rubocop]
11
12
 
12
13
  desc "Run all spec examples"
13
14
  RSpec::Core::RakeTask.new do |t|
@@ -23,3 +24,5 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
23
24
  rdoc.rdoc_files.include('README')
24
25
  rdoc.rdoc_files.include('lib/**/*.rb')
25
26
  end
27
+
28
+ RuboCop::RakeTask.new
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{asset_cloud}
5
- s.version = "2.5.3"
5
+ s.version = "2.6.0"
6
6
 
7
7
  s.authors = %w(Shopify)
8
8
  s.summary = %q{An abstraction layer around arbitrary and diverse asset stores.}
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_development_dependency 'rspec'
25
25
  s.add_development_dependency 'rake'
26
- s.add_development_dependency 'mocha'
27
26
  s.add_development_dependency 'pry'
28
27
  s.add_development_dependency 'pry-byebug'
28
+ s.add_development_dependency 'rubocop-shopify'
29
29
  end
@@ -89,6 +89,10 @@ module AssetCloud
89
89
  metadata.value_hash
90
90
  end
91
91
 
92
+ def checksum
93
+ metadata.checksum
94
+ end
95
+
92
96
  def delete
93
97
  if new_asset?
94
98
  false
@@ -1,6 +1,6 @@
1
1
  module AssetCloud
2
2
  class Metadata
3
- attr_accessor :exist, :size, :created_at, :updated_at, :value_hash
3
+ attr_accessor :exist, :size, :created_at, :updated_at, :value_hash, :checksum
4
4
 
5
5
  def new?
6
6
  !self.exist
@@ -10,9 +10,16 @@ module AssetCloud
10
10
  self.exist
11
11
  end
12
12
 
13
- def initialize(exist, size = nil, created_at = nil, updated_at = nil, value_hash = nil)
14
- self.exist, self.size, self.created_at, self.updated_at, self.value_hash = exist, size, created_at, updated_at, value_hash
13
+ # rubocop:disable Metrics/ParameterLists
14
+ def initialize(exist, size = nil, created_at = nil, updated_at = nil, value_hash = nil, checksum = nil)
15
+ self.exist = exist
16
+ self.size = size
17
+ self.created_at = created_at
18
+ self.updated_at = updated_at
19
+ self.value_hash = value_hash
20
+ self.checksum = checksum
15
21
  end
22
+ # rubocop:enable Metrics/ParameterLists
16
23
 
17
24
  def self.existing
18
25
  self.new(true)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  MockRecords = Object.new
@@ -5,7 +6,9 @@ MockRecords = Object.new
5
6
  class MockActiveRecordBucket < AssetCloud::ActiveRecordBucket
6
7
  self.key_attribute = 'name'
7
8
  self.value_attribute = 'body'
9
+
8
10
  protected
11
+
9
12
  def records
10
13
  MockRecords
11
14
  end
@@ -19,49 +22,49 @@ describe AssetCloud::ActiveRecordBucket do
19
22
  directory = File.dirname(__FILE__) + '/files'
20
23
 
21
24
  before do
22
- @cloud = RecordCloud.new(directory , 'http://assets/files' )
25
+ @cloud = RecordCloud.new(directory, 'http://assets/files')
23
26
  @bucket = @cloud.buckets[:stuff]
24
27
  end
25
28
 
26
29
  describe '#ls' do
27
30
  before do
28
- MockRecords.should_receive(:connection).and_return(@mock_connection = double("connection"))
29
- @mock_connection.should_receive(:quote_column_name).with('name').and_return("`name`")
30
- (@mock_record = double("record")).should_receive(:name).and_return('stuff/a1')
31
+ expect(MockRecords).to(receive(:connection).and_return(@mock_connection = double("connection")))
32
+ expect(@mock_connection).to(receive(:quote_column_name).with('name').and_return("`name`"))
33
+ expect(@mock_record = double("record")).to(receive(:name).and_return('stuff/a1'))
31
34
  end
32
35
 
33
36
  it "should return a list of assets which start with the given prefix" do
34
- MockRecords.should_receive(:all).with(:conditions => ["`name` LIKE ?", "stuff/a%"]).and_return([@mock_record])
37
+ expect(MockRecords).to(receive(:all).with(conditions: ["`name` LIKE ?", "stuff/a%"]).and_return([@mock_record]))
35
38
 
36
- @bucket.ls('stuff/a').size.should == 1
39
+ expect(@bucket.ls('stuff/a').size).to(eq(1))
37
40
  end
38
41
 
39
42
  it "should return a list of all assets when a prefix is not given" do
40
- MockRecords.should_receive(:all).with(:conditions => ["`name` LIKE ?", "stuff%"]).and_return([@mock_record])
43
+ expect(MockRecords).to(receive(:all).with(conditions: ["`name` LIKE ?", "stuff%"]).and_return([@mock_record]))
41
44
 
42
- @bucket.ls.size.should == 1
45
+ expect(@bucket.ls.size).to(eq(1))
43
46
  end
44
47
  end
45
48
 
46
49
  describe '#read' do
47
50
  it "should return the value of a key when it exists" do
48
- (@mock_record = double("record")).should_receive(:body).and_return('foo')
49
- MockRecords.should_receive(:first).with(:conditions => {'name' => 'stuff/a1'}).and_return(@mock_record)
51
+ expect(@mock_record = double("record")).to(receive(:body).and_return('foo'))
52
+ expect(MockRecords).to(receive(:first).with(conditions: { 'name' => 'stuff/a1' }).and_return(@mock_record))
50
53
 
51
54
  @bucket.read('stuff/a1')
52
55
  end
53
56
  it "should raise AssetNotFoundError when nothing is there" do
54
- MockRecords.should_receive(:first).with(:conditions => {'name' => 'stuff/a1'}).and_return(nil)
57
+ expect(MockRecords).to(receive(:first).with(conditions: { 'name' => 'stuff/a1' }).and_return(nil))
55
58
 
56
- lambda {@bucket.read('stuff/a1')}.should raise_error(AssetCloud::AssetNotFoundError)
59
+ expect { @bucket.read('stuff/a1') }.to(raise_error(AssetCloud::AssetNotFoundError))
57
60
  end
58
61
  end
59
62
 
60
63
  describe '#write' do
61
64
  it "should write to the DB" do
62
- (@mock_record = double("record")).should_receive(:body=).with('foo').and_return('foo')
63
- @mock_record.should_receive(:save!).and_return(true)
64
- MockRecords.should_receive(:find_or_initialize_by_name).with('stuff/a1').and_return(@mock_record)
65
+ expect(@mock_record = double("record")).to(receive(:body=).with('foo').and_return('foo'))
66
+ expect(@mock_record).to(receive(:save!).and_return(true))
67
+ expect(MockRecords).to(receive(:find_or_initialize_by_name).with('stuff/a1').and_return(@mock_record))
65
68
 
66
69
  @bucket.write('stuff/a1', 'foo')
67
70
  end
@@ -69,8 +72,8 @@ describe AssetCloud::ActiveRecordBucket do
69
72
 
70
73
  describe '#delete' do
71
74
  it "should destroy records" do
72
- (@mock_record = double("record")).should_receive(:destroy).and_return(true)
73
- MockRecords.should_receive(:first).with(:conditions => {'name' => 'stuff/a1'}).and_return(@mock_record)
75
+ expect(@mock_record = double("record")).to(receive(:destroy).and_return(true))
76
+ expect(MockRecords).to(receive(:first).with(conditions: { 'name' => 'stuff/a1' }).and_return(@mock_record))
74
77
 
75
78
  @bucket.delete('stuff/a1')
76
79
  end
@@ -78,18 +81,15 @@ describe AssetCloud::ActiveRecordBucket do
78
81
 
79
82
  describe '#stat' do
80
83
  it "should return appropriate metadata" do
81
- (@mock_record = double("record")).should_receive(:created_at).and_return(1982)
82
- @mock_record.should_receive(:updated_at).and_return(2002)
83
- @mock_record.should_receive(:body).and_return('foo')
84
- MockRecords.should_receive(:first).with(:conditions => {'name' => 'stuff/a1'}).and_return(@mock_record)
84
+ expect(@mock_record = double("record")).to(receive(:created_at).and_return(1982))
85
+ expect(@mock_record).to(receive(:updated_at).and_return(2002))
86
+ expect(@mock_record).to(receive(:body).and_return('foo'))
87
+ expect(MockRecords).to(receive(:first).with(conditions: { 'name' => 'stuff/a1' }).and_return(@mock_record))
85
88
 
86
89
  metadata = @bucket.stat('stuff/a1')
87
- metadata.created_at.should == 1982
88
- metadata.updated_at.should == 2002
89
- metadata.size.should == 3
90
+ expect(metadata.created_at).to(eq(1982))
91
+ expect(metadata.updated_at).to(eq(2002))
92
+ expect(metadata.size).to(eq(3))
90
93
  end
91
94
  end
92
-
93
-
94
-
95
95
  end