fog-core 2.3.0 → 2.4.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +2 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.github/workflows/stale.yml +1 -1
  5. data/.rubocop.yml +16 -12
  6. data/.rubocop_todo.yml +724 -0
  7. data/Gemfile +1 -1
  8. data/Rakefile +2 -14
  9. data/changelog.md +14 -0
  10. data/fog-core.gemspec +10 -7
  11. data/lib/fog/compute/models/server.rb +7 -3
  12. data/lib/fog/compute.rb +2 -2
  13. data/lib/fog/core/association.rb +1 -0
  14. data/lib/fog/core/attributes/default.rb +7 -0
  15. data/lib/fog/core/attributes.rb +28 -3
  16. data/lib/fog/core/cache.rb +58 -55
  17. data/lib/fog/core/collection.rb +9 -3
  18. data/lib/fog/core/connection.rb +1 -1
  19. data/lib/fog/core/current_machine.rb +1 -1
  20. data/lib/fog/core/errors.rb +1 -1
  21. data/lib/fog/core/logger.rb +2 -2
  22. data/lib/fog/core/mock.rb +6 -1
  23. data/lib/fog/core/model.rb +34 -5
  24. data/lib/fog/core/provider.rb +7 -7
  25. data/lib/fog/core/scp.rb +15 -11
  26. data/lib/fog/core/service.rb +4 -4
  27. data/lib/fog/core/services_mixin.rb +9 -9
  28. data/lib/fog/core/ssh.rb +3 -2
  29. data/lib/fog/core/stringify_keys.rb +0 -2
  30. data/lib/fog/core/time.rb +2 -2
  31. data/lib/fog/core/uuid.rb +2 -8
  32. data/lib/fog/core/version.rb +1 -1
  33. data/lib/fog/core/wait_for.rb +2 -1
  34. data/lib/fog/core/wait_for_defaults.rb +2 -0
  35. data/lib/fog/core.rb +57 -58
  36. data/lib/fog/formatador.rb +7 -6
  37. data/lib/fog/schema/data_validator.rb +1 -0
  38. data/lib/fog/storage.rb +15 -15
  39. data/lib/fog/test_helpers/collection_helper.rb +2 -0
  40. data/lib/fog/test_helpers/formats_helper.rb +2 -2
  41. data/lib/fog/test_helpers/helper.rb +3 -3
  42. data/lib/fog/test_helpers/minitest/assertions.rb +1 -1
  43. data/lib/fog/test_helpers/minitest/expectations.rb +1 -1
  44. data/lib/fog/test_helpers/mock_helper.rb +84 -84
  45. data/lib/fog/test_helpers/types_helper.rb +1 -0
  46. data/lib/tasks/test_task.rb +2 -2
  47. data/spec/compute/models/server_spec.rb +7 -7
  48. data/spec/compute_spec.rb +6 -6
  49. data/spec/connection_spec.rb +11 -9
  50. data/spec/core/cache_spec.rb +51 -15
  51. data/spec/core/collection_spec.rb +24 -0
  52. data/spec/core/model_spec.rb +36 -3
  53. data/spec/core/stringify_keys_spec.rb +3 -3
  54. data/spec/core/whitelist_keys_spec.rb +2 -2
  55. data/spec/current_machine_spec.rb +2 -2
  56. data/spec/fog_attribute_spec.rb +183 -163
  57. data/spec/formatador_spec.rb +7 -7
  58. data/spec/identity_spec.rb +6 -6
  59. data/spec/mocking_spec.rb +3 -3
  60. data/spec/service_spec.rb +19 -19
  61. data/spec/spec_helper.rb +3 -8
  62. data/spec/storage_spec.rb +6 -6
  63. data/spec/test_helpers/formats_helper_spec.rb +8 -8
  64. data/spec/test_helpers/schema_validator_spec.rb +8 -8
  65. data/spec/utils_spec.rb +6 -6
  66. data/spec/wait_for_spec.rb +2 -2
  67. metadata +44 -53
@@ -12,17 +12,17 @@ end
12
12
 
13
13
  class FogSingleAssociationModel < Fog::Model
14
14
  identity :id
15
- attribute :name, :type => :string
15
+ attribute :name, type: :string
16
16
  end
17
17
 
18
18
  class FogMultipleAssociationsModel < Fog::Model
19
19
  identity :id
20
- attribute :name, :type => :string
20
+ attribute :name, type: :string
21
21
  end
22
22
 
23
23
  class FogSingleAssociationCollection
24
24
  def get(id)
25
- FogSingleAssociationModel.new(:id => id)
25
+ FogSingleAssociationModel.new(id: id)
26
26
  end
27
27
  end
28
28
 
@@ -30,30 +30,31 @@ class FogMultipleAssociationsCollection < Fog::Association
30
30
  model FogMultipleAssociationsModel
31
31
 
32
32
  def get(id)
33
- FogMultipleAssociationsModel.new(:id => id)
33
+ FogMultipleAssociationsModel.new(id: id)
34
34
  end
35
35
  end
36
36
 
37
37
  class FogAttributeTestModel < Fog::Model
38
38
  identity :id
39
- attribute :key, :aliases => "keys", :squash => "id"
40
- attribute :time, :type => :time
41
- attribute :bool, :type => :boolean
42
- attribute :float, :type => :float
43
- attribute :integer, :type => :integer
44
- attribute :string, :type => :string
45
- attribute :timestamp, :type => :timestamp
46
- attribute :array, :type => :array
47
- attribute :default, :default => "default_value", :aliases => :some_name
48
- attribute :another_default, :default => false
49
- attribute :good_name, :as => :Badname
50
-
51
- has_one :one_object, :single_associations, :aliases => :single
39
+ attribute :key, aliases: "keys", squash: "id"
40
+ attribute :time, type: :time
41
+ attribute :bool, type: :boolean
42
+ attribute :float, type: :float
43
+ attribute :integer, type: :integer
44
+ attribute :string, type: :string
45
+ attribute :timestamp, type: :timestamp
46
+ attribute :array, type: :array
47
+ attribute :default, default: "default_value", aliases: :some_name
48
+ attribute :another_default, default: false
49
+ attribute :good_name, as: :Badname
50
+ attribute :custom_getter, type: :integer
51
+
52
+ has_one :one_object, :single_associations, aliases: :single
52
53
  has_many :many_objects, :multiple_associations
53
- has_many :objects, :multiple_associations, :association_class => FogMultipleAssociationsCollection
54
- has_one_identity :one_identity, :single_associations, :as => :Crazyname
55
- has_many_identities :many_identities, :multiple_associations, :aliases => :multiple
56
- has_many_identities :identities, :multiple_associations, :association_class => FogMultipleAssociationsCollection
54
+ has_many :objects, :multiple_associations, association_class: FogMultipleAssociationsCollection
55
+ has_one_identity :one_identity, :single_associations, as: :Crazyname
56
+ has_many_identities :many_identities, :multiple_associations, aliases: :multiple
57
+ has_many_identities :identities, :multiple_associations, association_class: FogMultipleAssociationsCollection
57
58
 
58
59
  def service
59
60
  Service.new
@@ -66,6 +67,10 @@ class FogAttributeTestModel < Fog::Model
66
67
  def requires_test
67
68
  requires :string, :integer
68
69
  end
70
+
71
+ def custom_getter
72
+ (attributes[:custom_getter] || 0) + 10
73
+ end
69
74
  end
70
75
 
71
76
  describe "Fog::Attributes" do
@@ -77,7 +82,7 @@ describe "Fog::Attributes" do
77
82
 
78
83
  describe "squash 'id'" do
79
84
  it "squashes if the key is a String" do
80
- model.merge_attributes("keys" => { :id => "value" })
85
+ model.merge_attributes("keys" => { id: "value" })
81
86
  assert_equal "value", model.key
82
87
  end
83
88
 
@@ -89,18 +94,18 @@ describe "Fog::Attributes" do
89
94
 
90
95
  describe ":type => time" do
91
96
  it "returns nil when provided nil" do
92
- model.merge_attributes(:time => nil)
97
+ model.merge_attributes(time: nil)
93
98
  refute model.time
94
99
  end
95
100
 
96
101
  it "returns '' when provided ''" do
97
- model.merge_attributes(:time => "")
102
+ model.merge_attributes(time: "")
98
103
  assert_equal "", model.time
99
104
  end
100
105
 
101
106
  it "returns a Time object when passed a Time object" do
102
107
  now = Time.now
103
- model.merge_attributes(:time => now.to_s)
108
+ model.merge_attributes(time: now.to_s)
104
109
  assert_equal Time.parse(now.to_s), model.time
105
110
  end
106
111
 
@@ -110,89 +115,89 @@ describe "Fog::Attributes" do
110
115
  def string.to_time
111
116
  "<3 <3 <3"
112
117
  end
113
- model.merge_attributes(:time => string)
118
+ model.merge_attributes(time: string)
114
119
  assert_equal Time.parse(string), model.time
115
120
  end
116
121
  end
117
122
 
118
123
  describe ":type => :boolean" do
119
124
  it "returns the String 'true' as a boolean" do
120
- model.merge_attributes(:bool => "true")
125
+ model.merge_attributes(bool: "true")
121
126
  assert_equal true, model.bool
122
127
  end
123
128
 
124
129
  it "returns true as true" do
125
- model.merge_attributes(:bool => true)
130
+ model.merge_attributes(bool: true)
126
131
  assert_equal true, model.bool
127
132
  end
128
133
 
129
134
  it "returns the String 'false' as a boolean" do
130
- model.merge_attributes(:bool => "false")
135
+ model.merge_attributes(bool: "false")
131
136
  assert_equal false, model.bool
132
137
  end
133
138
 
134
139
  it "returns false as false" do
135
- model.merge_attributes(:bool => false)
140
+ model.merge_attributes(bool: false)
136
141
  assert_equal false, model.bool
137
142
  end
138
143
 
139
144
  it "returns a non-true/false value as nil" do
140
- model.merge_attributes(:bool => "foo")
145
+ model.merge_attributes(bool: "foo")
141
146
  refute model.bool
142
147
  end
143
148
  end
144
149
 
145
150
  describe ":type => :float" do
146
151
  it "returns an integer as float" do
147
- model.merge_attributes(:float => 1)
152
+ model.merge_attributes(float: 1)
148
153
  assert_in_delta 1.0, model.float
149
154
  end
150
155
 
151
156
  it "returns a string as float" do
152
- model.merge_attributes(:float => "1")
157
+ model.merge_attributes(float: "1")
153
158
  assert_in_delta 1.0, model.float
154
159
  end
155
160
  end
156
161
 
157
162
  describe ":type => :integer" do
158
163
  it "returns a float as integer" do
159
- model.merge_attributes(:integer => 1.5)
164
+ model.merge_attributes(integer: 1.5)
160
165
  assert_in_delta 1, model.integer
161
166
  end
162
167
 
163
168
  it "returns a string as integer" do
164
- model.merge_attributes(:integer => "1")
169
+ model.merge_attributes(integer: "1")
165
170
  assert_in_delta 1, model.integer
166
171
  end
167
172
  end
168
173
 
169
174
  describe ":type => :string" do
170
175
  it "returns a float as string" do
171
- model.merge_attributes(:string => 1.5)
176
+ model.merge_attributes(string: 1.5)
172
177
  assert_equal "1.5", model.string
173
178
  end
174
179
 
175
180
  it "returns a integer as string" do
176
- model.merge_attributes(:string => 1)
181
+ model.merge_attributes(string: 1)
177
182
  assert_equal "1", model.string
178
183
  end
179
184
  end
180
185
 
181
186
  describe ":type => :timestamp" do
182
187
  it "returns a date as time" do
183
- model.merge_attributes(:timestamp => Date.new(2008, 10, 12))
188
+ model.merge_attributes(timestamp: Date.new(2008, 10, 12))
184
189
  assert_equal "2008-10-12 00:00", model.timestamp.strftime("%Y-%m-%d %M:%S")
185
190
  assert_instance_of Fog::Time, model.timestamp
186
191
  end
187
192
 
188
193
  it "returns a time as time" do
189
- model.merge_attributes(:timestamp => Time.mktime(2007, 11, 1, 15, 25))
194
+ model.merge_attributes(timestamp: Time.mktime(2007, 11, 1, 15, 25))
190
195
  assert_equal "2007-11-01 25:00", model.timestamp.strftime("%Y-%m-%d %M:%S")
191
196
  assert_instance_of Fog::Time, model.timestamp
192
197
  end
193
198
 
194
199
  it "returns a date_time as time" do
195
- model.merge_attributes(:timestamp => DateTime.new(2007, 11, 1, 15, 25, 0))
200
+ model.merge_attributes(timestamp: DateTime.new(2007, 11, 1, 15, 25, 0))
196
201
  assert_equal "2007-11-01 25:00", model.timestamp.strftime("%Y-%m-%d %M:%S")
197
202
  assert_instance_of Fog::Time, model.timestamp
198
203
  end
@@ -204,27 +209,27 @@ describe "Fog::Attributes" do
204
209
  end
205
210
 
206
211
  it "returns an empty array as an empty array" do
207
- model.merge_attributes(:array => [])
212
+ model.merge_attributes(array: [])
208
213
  assert_equal [], model.array
209
214
  end
210
215
 
211
216
  it "returns nil as an empty array" do
212
- model.merge_attributes(:array => nil)
217
+ model.merge_attributes(array: nil)
213
218
  assert_equal [], model.array
214
219
  end
215
220
 
216
221
  it "returns an array with nil as an array with nil" do
217
- model.merge_attributes(:array => [nil])
222
+ model.merge_attributes(array: [nil])
218
223
  assert_equal [nil], model.array
219
224
  end
220
225
 
221
226
  it "returns a single element as array" do
222
- model.merge_attributes(:array => 1.5)
227
+ model.merge_attributes(array: 1.5)
223
228
  assert_equal [1.5], model.array
224
229
  end
225
230
 
226
231
  it "returns an array as array" do
227
- model.merge_attributes(:array => [1, 2])
232
+ model.merge_attributes(array: [1, 2])
228
233
  assert_equal [1, 2], model.array
229
234
  end
230
235
  end
@@ -235,7 +240,7 @@ describe "Fog::Attributes" do
235
240
  end
236
241
 
237
242
  it "should return the value of the object when default is not defined" do
238
- model.merge_attributes(:bool => false)
243
+ model.merge_attributes(bool: false)
239
244
  assert_equal model.bool, false
240
245
  end
241
246
 
@@ -253,12 +258,12 @@ describe "Fog::Attributes" do
253
258
  end
254
259
 
255
260
  it "should return the value of the persisted object" do
256
- model.merge_attributes(:id => "some-crazy-id", :default => 23)
261
+ model.merge_attributes(id: "some-crazy-id", default: 23)
257
262
  assert_equal model.default, 23
258
263
  end
259
264
 
260
265
  it "should return nil on a persisted object without a value" do
261
- model.merge_attributes(:id => "some-crazy-id")
266
+ model.merge_attributes(id: "some-crazy-id")
262
267
  assert_nil model.default
263
268
  end
264
269
 
@@ -274,19 +279,19 @@ describe "Fog::Attributes" do
274
279
  end
275
280
 
276
281
  it "should create a getter to save the association model" do
277
- model.merge_attributes(:one_object => FogSingleAssociationModel.new(:id => "123"))
282
+ model.merge_attributes(one_object: FogSingleAssociationModel.new(id: "123"))
278
283
  assert_instance_of FogSingleAssociationModel, model.one_object
279
- assert_equal model.one_object.attributes, :id => "123"
284
+ assert_equal model.one_object.attributes, id: "123"
280
285
  end
281
286
 
282
287
  it "should create a setter that accept an object as param" do
283
- model.one_object = FogSingleAssociationModel.new(:id => "123")
284
- assert_equal model.one_object.attributes, :id => "123"
288
+ model.one_object = FogSingleAssociationModel.new(id: "123")
289
+ assert_equal model.one_object.attributes, id: "123"
285
290
  end
286
291
 
287
292
  it "should create an alias to single" do
288
- model.merge_attributes(:single => FogSingleAssociationModel.new(:id => "123"))
289
- assert_equal model.one_object.attributes, :id => "123"
293
+ model.merge_attributes(single: FogSingleAssociationModel.new(id: "123"))
294
+ assert_equal model.one_object.attributes, id: "123"
290
295
  end
291
296
  end
292
297
 
@@ -296,27 +301,27 @@ describe "Fog::Attributes" do
296
301
  end
297
302
 
298
303
  it "should create a getter to load the association model" do
299
- model.merge_attributes(:one_identity => "123")
304
+ model.merge_attributes(one_identity: "123")
300
305
  assert_instance_of FogSingleAssociationModel, model.one_identity
301
- assert_equal model.one_identity.attributes, :id => "123"
306
+ assert_equal model.one_identity.attributes, id: "123"
302
307
  end
303
308
 
304
309
  describe "should create a setter that accept" do
305
310
  it "an id as param" do
306
311
  model.one_identity = "123"
307
- assert_equal model.one_identity.attributes, :id => "123"
312
+ assert_equal model.one_identity.attributes, id: "123"
308
313
  end
309
314
 
310
315
  it "a model as param" do
311
- model.one_identity = FogSingleAssociationModel.new(:id => "123")
312
- assert_equal model.one_identity.attributes, :id => "123"
316
+ model.one_identity = FogSingleAssociationModel.new(id: "123")
317
+ assert_equal model.one_identity.attributes, id: "123"
313
318
  end
314
319
  end
315
320
  end
316
321
 
317
322
  describe ".has_many" do
318
323
  it "should return an instance of Fog::Association" do
319
- model.many_objects = [FogMultipleAssociationsModel.new(:id => "456")]
324
+ model.many_objects = [FogMultipleAssociationsModel.new(id: "456")]
320
325
  assert_instance_of Fog::Association, model.many_objects
321
326
  end
322
327
 
@@ -325,21 +330,21 @@ describe "Fog::Attributes" do
325
330
  end
326
331
 
327
332
  it "should create a getter to save all associated models" do
328
- model.merge_attributes(:many_objects => [FogMultipleAssociationsModel.new(:id => "456")])
333
+ model.merge_attributes(many_objects: [FogMultipleAssociationsModel.new(id: "456")])
329
334
  assert_instance_of Fog::Association, model.many_objects
330
335
  assert_equal model.many_objects.size, 1
331
336
  assert_instance_of FogMultipleAssociationsModel, model.many_objects.first
332
- assert_equal model.many_objects.first.attributes, :id => "456"
337
+ assert_equal model.many_objects.first.attributes, id: "456"
333
338
  end
334
339
 
335
340
  it "should create a setter that accept an array of objects as param" do
336
- model.many_objects = [FogMultipleAssociationsModel.new(:id => "456")]
337
- assert_equal model.many_objects.first.attributes, :id => "456"
341
+ model.many_objects = [FogMultipleAssociationsModel.new(id: "456")]
342
+ assert_equal model.many_objects.first.attributes, id: "456"
338
343
  end
339
344
 
340
345
  describe "with a custom collection class" do
341
346
  it "should return an instance of that collection class" do
342
- model.objects = [FogMultipleAssociationsModel.new(:id => "456")]
347
+ model.objects = [FogMultipleAssociationsModel.new(id: "456")]
343
348
  assert_instance_of FogMultipleAssociationsCollection, model.objects
344
349
  end
345
350
  end
@@ -347,31 +352,31 @@ describe "Fog::Attributes" do
347
352
 
348
353
  describe "#requires_one" do
349
354
  it "should require at least one attribute is supplied" do
350
- FogAttributeTestModel.new(:key => :key, :time => Time.now).requires_one_test
351
- FogAttributeTestModel.new(:time => Time.now).requires_one_test
352
- FogAttributeTestModel.new(:key => :key).requires_one_test
353
- FogAttributeTestModel.new(:key => :key, :integer => 1).requires_one_test
355
+ FogAttributeTestModel.new(key: :key, time: Time.now).requires_one_test
356
+ FogAttributeTestModel.new(time: Time.now).requires_one_test
357
+ FogAttributeTestModel.new(key: :key).requires_one_test
358
+ FogAttributeTestModel.new(key: :key, integer: 1).requires_one_test
354
359
 
355
360
  assert_raises ArgumentError do
356
- FogAttributeTestModel.new(:integer => 1).requires_one_test
361
+ FogAttributeTestModel.new(integer: 1).requires_one_test
357
362
  end
358
363
  end
359
364
  end
360
365
 
361
366
  describe "#requires" do
362
367
  it "should require all attributes are supplied" do
363
- FogAttributeTestModel.new(:string => "string", :integer => 1).requires_test
368
+ FogAttributeTestModel.new(string: "string", integer: 1).requires_test
364
369
 
365
370
  assert_raises ArgumentError do
366
- FogAttributeTestModel.new(:integer => 1).requires_test
371
+ FogAttributeTestModel.new(integer: 1).requires_test
367
372
  end
368
373
 
369
374
  assert_raises ArgumentError do
370
- FogAttributeTestModel.new(:string => "string").requires_test
375
+ FogAttributeTestModel.new(string: "string").requires_test
371
376
  end
372
377
 
373
378
  assert_raises ArgumentError do
374
- FogAttributeTestModel.new(:key => :key).requires_test
379
+ FogAttributeTestModel.new(key: :key).requires_test
375
380
  end
376
381
  end
377
382
  end
@@ -387,28 +392,28 @@ describe "Fog::Attributes" do
387
392
  end
388
393
 
389
394
  it "should create a getter to load all association models" do
390
- model.merge_attributes(:many_identities => ["456"])
395
+ model.merge_attributes(many_identities: ["456"])
391
396
  assert_instance_of Fog::Association, model.many_identities
392
397
  assert_equal model.many_identities.size, 1
393
398
  assert_instance_of FogMultipleAssociationsModel, model.many_identities.first
394
- assert_equal model.many_identities.first.attributes, :id => "456"
399
+ assert_equal model.many_identities.first.attributes, id: "456"
395
400
  end
396
401
 
397
402
  describe "should create a setter that accept an array of" do
398
403
  it "ids as param" do
399
404
  model.many_identities = ["456"]
400
- assert_equal model.many_identities.first.attributes, :id => "456"
405
+ assert_equal model.many_identities.first.attributes, id: "456"
401
406
  end
402
407
 
403
408
  it "models as param" do
404
- model.many_identities = [FogMultipleAssociationsModel.new(:id => "456")]
405
- assert_equal model.many_identities.first.attributes, :id => "456"
409
+ model.many_identities = [FogMultipleAssociationsModel.new(id: "456")]
410
+ assert_equal model.many_identities.first.attributes, id: "456"
406
411
  end
407
412
  end
408
413
 
409
414
  it "should create an alias to multiple" do
410
- model.merge_attributes(:multiple => ["456"])
411
- assert_equal model.many_identities.first.attributes, :id => "456"
415
+ model.merge_attributes(multiple: ["456"])
416
+ assert_equal model.many_identities.first.attributes, id: "456"
412
417
  end
413
418
 
414
419
  describe "with a custom collection class" do
@@ -422,39 +427,41 @@ describe "Fog::Attributes" do
422
427
  describe "#all_attributes" do
423
428
  describe "on a persisted object" do
424
429
  it "should return all attributes without default values" do
425
- model.merge_attributes(:id => 2, :float => 3.2, :integer => 55_555_555)
430
+ model.merge_attributes(id: 2, float: 3.2, integer: 55_555_555)
426
431
  assert model.persisted?
427
- assert_equal model.all_attributes, :id => 2,
428
- :key => nil,
429
- :time => nil,
430
- :bool => nil,
431
- :float => 3.2,
432
- :integer => 55_555_555,
433
- :string => nil,
434
- :timestamp => nil,
435
- :array => [],
436
- :default => nil,
437
- :another_default => nil,
438
- :Badname => nil
432
+ assert_equal model.all_attributes, id: 2,
433
+ key: nil,
434
+ time: nil,
435
+ bool: nil,
436
+ float: 3.2,
437
+ integer: 55_555_555,
438
+ string: nil,
439
+ timestamp: nil,
440
+ array: [],
441
+ default: nil,
442
+ another_default: nil,
443
+ Badname: nil,
444
+ custom_getter: 10
439
445
  end
440
446
  end
441
447
 
442
448
  describe "on a new object" do
443
449
  it "should return all attributes including default values for empty attributes" do
444
- model.merge_attributes(:float => 3.2, :integer => 55_555_555)
450
+ model.merge_attributes(float: 3.2, integer: 55_555_555)
445
451
  refute model.persisted?
446
- assert_equal model.all_attributes, :id => nil,
447
- :key => nil,
448
- :time => nil,
449
- :bool => nil,
450
- :float => 3.2,
451
- :integer => 55_555_555,
452
- :string => nil,
453
- :timestamp => nil,
454
- :array => [],
455
- :default => "default_value",
456
- :another_default => false,
457
- :Badname => nil
452
+ assert_equal model.all_attributes, id: nil,
453
+ key: nil,
454
+ time: nil,
455
+ bool: nil,
456
+ float: 3.2,
457
+ integer: 55_555_555,
458
+ string: nil,
459
+ timestamp: nil,
460
+ array: [],
461
+ default: "default_value",
462
+ another_default: false,
463
+ Badname: nil,
464
+ custom_getter: 10
458
465
  end
459
466
  end
460
467
  end
@@ -462,12 +469,12 @@ describe "Fog::Attributes" do
462
469
  describe "#all_associations" do
463
470
  describe "without any association" do
464
471
  it "should return all associations empty" do
465
- assert_equal model.all_associations, :one_object => nil,
466
- :many_objects => [],
467
- :Crazyname => nil,
468
- :many_identities => [],
469
- :objects => [],
470
- :identities => []
472
+ assert_equal model.all_associations, one_object: nil,
473
+ many_objects: [],
474
+ Crazyname: nil,
475
+ many_identities: [],
476
+ objects: [],
477
+ identities: []
471
478
  end
472
479
  end
473
480
 
@@ -475,14 +482,14 @@ describe "Fog::Attributes" do
475
482
  it "should return all association objects" do
476
483
  @one_object = FogMultipleAssociationsModel.new
477
484
  @many_objects = [@one_object]
478
- model.merge_attributes(:one_object => @one_object, :many_objects => @many_objects)
479
- model.merge_attributes(:one_identity => "XYZ", :many_identities => %w(ABC))
480
- assert_equal model.all_associations, :one_object => @one_object,
481
- :many_objects => @many_objects,
482
- :Crazyname => "XYZ",
483
- :many_identities => %w(ABC),
484
- :objects => [],
485
- :identities => []
485
+ model.merge_attributes(one_object: @one_object, many_objects: @many_objects)
486
+ model.merge_attributes(one_identity: "XYZ", many_identities: %w(ABC))
487
+ assert_equal model.all_associations, one_object: @one_object,
488
+ many_objects: @many_objects,
489
+ Crazyname: "XYZ",
490
+ many_identities: %w(ABC),
491
+ objects: [],
492
+ identities: []
486
493
  end
487
494
  end
488
495
  end
@@ -492,28 +499,29 @@ describe "Fog::Attributes" do
492
499
  it "should return all association and attributes but no default values" do
493
500
  @one_object = FogMultipleAssociationsModel.new
494
501
  @many_objects = [@one_object]
495
- model.merge_attributes(:id => 2, :float => 3.2, :integer => 55_555_555)
496
- model.merge_attributes(:one_object => @one_object, :many_objects => @many_objects)
497
- model.merge_attributes(:one_identity => "XYZ", :many_identities => %w(ABC))
502
+ model.merge_attributes(id: 2, float: 3.2, integer: 55_555_555)
503
+ model.merge_attributes(one_object: @one_object, many_objects: @many_objects)
504
+ model.merge_attributes(one_identity: "XYZ", many_identities: %w(ABC))
498
505
  assert model.persisted?
499
- assert_equal model.all_associations_and_attributes, :id => 2,
500
- :key => nil,
501
- :time => nil,
502
- :bool => nil,
503
- :float => 3.2,
504
- :integer => 55_555_555,
505
- :string => nil,
506
- :timestamp => nil,
507
- :array => [],
508
- :default => nil,
509
- :another_default => nil,
510
- :Badname => nil,
511
- :one_object => @one_object,
512
- :many_objects => @many_objects,
513
- :objects => [],
514
- :identities => [],
515
- :Crazyname => "XYZ",
516
- :many_identities => %w(ABC)
506
+ assert_equal model.all_associations_and_attributes, id: 2,
507
+ key: nil,
508
+ time: nil,
509
+ bool: nil,
510
+ float: 3.2,
511
+ integer: 55_555_555,
512
+ string: nil,
513
+ timestamp: nil,
514
+ array: [],
515
+ default: nil,
516
+ another_default: nil,
517
+ Badname: nil,
518
+ custom_getter: 10,
519
+ one_object: @one_object,
520
+ many_objects: @many_objects,
521
+ objects: [],
522
+ identities: [],
523
+ Crazyname: "XYZ",
524
+ many_identities: %w(ABC)
517
525
  end
518
526
  end
519
527
 
@@ -521,29 +529,41 @@ describe "Fog::Attributes" do
521
529
  it "should return all association and attributes and the default value for blank attributes" do
522
530
  @one_object = FogMultipleAssociationsModel.new
523
531
  @many_objects = [@one_object]
524
- model.merge_attributes(:float => 3.2, :integer => 55_555_555)
525
- model.merge_attributes(:one_object => @one_object, :many_objects => @many_objects)
526
- model.merge_attributes(:one_identity => "XYZ", :many_identities => %w(ABC))
532
+ model.merge_attributes(float: 3.2, integer: 55_555_555)
533
+ model.merge_attributes(one_object: @one_object, many_objects: @many_objects)
534
+ model.merge_attributes(one_identity: "XYZ", many_identities: %w(ABC))
527
535
  refute model.persisted?
528
- assert_equal model.all_associations_and_attributes, :id => nil,
529
- :key => nil,
530
- :time => nil,
531
- :bool => nil,
532
- :float => 3.2,
533
- :integer => 55_555_555,
534
- :string => nil,
535
- :timestamp => nil,
536
- :array => [],
537
- :default => "default_value",
538
- :another_default => false,
539
- :Badname => nil,
540
- :one_object => @one_object,
541
- :many_objects => @many_objects,
542
- :objects => [],
543
- :identities => [],
544
- :Crazyname => "XYZ",
545
- :many_identities => %w(ABC)
536
+ assert_equal model.all_associations_and_attributes, id: nil,
537
+ key: nil,
538
+ time: nil,
539
+ bool: nil,
540
+ float: 3.2,
541
+ integer: 55_555_555,
542
+ string: nil,
543
+ timestamp: nil,
544
+ array: [],
545
+ default: "default_value",
546
+ another_default: false,
547
+ Badname: nil,
548
+ custom_getter: 10,
549
+ one_object: @one_object,
550
+ many_objects: @many_objects,
551
+ objects: [],
552
+ identities: [],
553
+ Crazyname: "XYZ",
554
+ many_identities: %w(ABC)
546
555
  end
547
556
  end
548
557
  end
558
+
559
+ describe "#filter_attributes" do
560
+ it "should return filtered attributes using model getters" do
561
+ model.merge_attributes(id: 2, float: 3.2, integer: 55_555_555, bool: nil, custom_getter: 66)
562
+ filtered = model.filter_attributes(:id, :float, :bool, :custom_getter)
563
+ assert_equal filtered, id: 2,
564
+ float: 3.2,
565
+ bool: nil,
566
+ custom_getter: 76
567
+ end
568
+ end
549
569
  end