fog-core 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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