spyke 5.4.0 → 5.4.1
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/spyke/attribute_assignment.rb +1 -1
- data/lib/spyke/http.rb +2 -2
- data/lib/spyke/version.rb +1 -1
- data/spyke.gemspec +1 -0
- data/test/associations_test.rb +61 -0
- data/test/attributes_test.rb +12 -0
- data/test/orm_test.rb +16 -0
- data/test/test_helper.rb +7 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46c56a1975e770acc9b1e9d40abdfbfd7d59b15705da333d293d0ecb18678628
|
4
|
+
data.tar.gz: bbc4a65e7cc6293ce9e93410eae69dd4003ede73364207c17bff79c1736770a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e741d1302b7a404d2f052329814b74af2aab61f17a5edff94b06f1bb5fadf78a8bbb43c93dbd2ed4a48064721dad8e57a28d53fde35b5d14f7a44f19fe01a31
|
7
|
+
data.tar.gz: 9a7cbdf9fd0b504c9772dd5388ff949b1ab5abe666277e11efc8e347e3aae22e5337cba0b506388f90f9cc2b68f5ddb97bf4dd8b08b50694a43e1f2d99c32a9a
|
@@ -83,7 +83,7 @@ module Spyke
|
|
83
83
|
# Set id attribute directly if using a custom primary key alongside an attribute named "id" to avoid clobbering
|
84
84
|
set_attribute :id, attributes.delete(:id) if conflicting_ids?(attributes)
|
85
85
|
|
86
|
-
attributes.each do |key, value|
|
86
|
+
attributes.to_h.each do |key, value|
|
87
87
|
send "#{key}=", value
|
88
88
|
end
|
89
89
|
end
|
data/lib/spyke/http.rb
CHANGED
data/lib/spyke/version.rb
CHANGED
data/spyke.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'faraday_middleware', '>= 0.9.1', '< 2.0'
|
25
25
|
spec.add_dependency 'addressable', '>= 2.5.2'
|
26
26
|
|
27
|
+
spec.add_development_dependency 'actionpack', '>= 4.0.0'
|
27
28
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
28
29
|
spec.add_development_dependency 'coveralls', '~> 0.7'
|
29
30
|
spec.add_development_dependency 'minitest'
|
data/test/associations_test.rb
CHANGED
@@ -301,6 +301,22 @@ module Spyke
|
|
301
301
|
assert_equal %w{ starter sauce }, recipe.groups.map(&:title)
|
302
302
|
end
|
303
303
|
|
304
|
+
def test_nested_attributes_has_one_using_strong_params
|
305
|
+
recipe = Recipe.new(image_attributes: strong_params(file: 'bob.jpg').permit!)
|
306
|
+
assert_equal 'bob.jpg', recipe.image.file
|
307
|
+
end
|
308
|
+
|
309
|
+
def test_nested_attributes_belongs_to_using_strong_params
|
310
|
+
recipe = Recipe.new(user_attributes: strong_params({ name: 'Bob' }).permit!)
|
311
|
+
assert_equal 'Bob', recipe.user.name
|
312
|
+
end
|
313
|
+
|
314
|
+
def test_nested_attributes_has_many_using_strong_params
|
315
|
+
params = strong_params(groups_attributes: [strong_params(title: 'starter').permit!, strong_params(title: 'sauce').permit!]).permit!
|
316
|
+
recipe = Recipe.new(params)
|
317
|
+
assert_equal %w{ starter sauce }, recipe.groups.map(&:title)
|
318
|
+
end
|
319
|
+
|
304
320
|
def test_nested_attributes_replacing_existing_when_no_ids_present
|
305
321
|
recipe = Recipe.new(groups_attributes: [{ title: 'starter' }, { title: 'sauce' }])
|
306
322
|
recipe.attributes = { groups_attributes: [{ title: 'flavor' }] }
|
@@ -325,6 +341,17 @@ module Spyke
|
|
325
341
|
assert_equal %w{ starter sauce }, recipe.groups.map(&:title)
|
326
342
|
end
|
327
343
|
|
344
|
+
def test_nested_attributes_has_many_using_strong_params_with_hash_syntax
|
345
|
+
params = strong_params(
|
346
|
+
groups_attributes: strong_params(
|
347
|
+
'0' => strong_params(title: 'starter').permit!,
|
348
|
+
'1' => strong_params(title: 'sauce').permit!,
|
349
|
+
).permit!
|
350
|
+
).permit!
|
351
|
+
recipe = Recipe.new(params)
|
352
|
+
assert_equal %w{ starter sauce }, recipe.groups.map(&:title)
|
353
|
+
end
|
354
|
+
|
328
355
|
def test_deeply_nested_attributes_has_many_using_array_syntax
|
329
356
|
params = { groups_attributes: [{ id: 1, ingredients_attributes: [{ id: 1, name: 'Salt' }, { id: 2, name: 'Pepper' } ]}] }
|
330
357
|
recipe = Recipe.new(params)
|
@@ -357,6 +384,40 @@ module Spyke
|
|
357
384
|
assert_equal %w{ Salt Pepper }, recipe.ingredients.map(&:name)
|
358
385
|
end
|
359
386
|
|
387
|
+
def test_deeply_nested_attributes_has_many_using_strong_params_with_array_syntax
|
388
|
+
params = strong_params(
|
389
|
+
groups_attributes: [
|
390
|
+
strong_params(
|
391
|
+
ingredients_attributes: [
|
392
|
+
strong_params(id: '', name: 'Salt').permit!,
|
393
|
+
strong_params(id: '', name: 'Pepper').permit!,
|
394
|
+
]
|
395
|
+
).permit!
|
396
|
+
]
|
397
|
+
).permit!
|
398
|
+
recipe = Recipe.new(params)
|
399
|
+
assert_equal %w{ Salt Pepper }, recipe.ingredients.map(&:name)
|
400
|
+
recipe.attributes = params
|
401
|
+
assert_equal %w{ Salt Pepper }, recipe.ingredients.map(&:name)
|
402
|
+
end
|
403
|
+
|
404
|
+
def test_deeply_nested_attributes_has_many_using_strong_params_with_hash_syntax
|
405
|
+
params = strong_params(
|
406
|
+
groups_attributes: strong_params(
|
407
|
+
'0' => strong_params(
|
408
|
+
ingredients_attributes: strong_params(
|
409
|
+
'0' => strong_params(id: '', name: 'Salt').permit!,
|
410
|
+
'1' => strong_params(id: '', name: 'Pepper').permit!,
|
411
|
+
).permit!
|
412
|
+
).permit!
|
413
|
+
).permit!
|
414
|
+
).permit!
|
415
|
+
recipe = Recipe.new(params)
|
416
|
+
assert_equal %w{ Salt Pepper }, recipe.ingredients.map(&:name)
|
417
|
+
recipe.attributes = params
|
418
|
+
assert_equal %w{ Salt Pepper }, recipe.ingredients.map(&:name)
|
419
|
+
end
|
420
|
+
|
360
421
|
def test_reflect_on_association
|
361
422
|
assert_equal Group, Recipe.reflect_on_association(:group).klass
|
362
423
|
assert_equal Cookbook::Like, Cookbook::Tip.reflect_on_association(:like).klass
|
data/test/attributes_test.rb
CHANGED
@@ -11,6 +11,18 @@ module Spyke
|
|
11
11
|
assert_equal 'Tasty', recipe.description
|
12
12
|
end
|
13
13
|
|
14
|
+
def test_initializing_using_permitted_strong_params
|
15
|
+
ingredient = Ingredient.new(strong_params(name: 'Flour').permit!)
|
16
|
+
|
17
|
+
assert_equal 'Flour', ingredient.name
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_initializing_using_unpermitted_strong_params
|
21
|
+
assert_raises ActionController::UnfilteredParameters do
|
22
|
+
Ingredient.new(strong_params(name: 'Flour'))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
14
26
|
def test_to_params
|
15
27
|
attr = Attributes.new(id: 3, 'title' => 'Fish', groups: [ Group.new(name: 'Starter'), { name: 'Dessert' } ])
|
16
28
|
assert_equal({ 'id' => 3 , 'title' => 'Fish', 'groups' => [{ 'name' => 'Starter' }, { 'name' => 'Dessert' }] }, attr.to_params)
|
data/test/orm_test.rb
CHANGED
@@ -54,6 +54,22 @@ module Spyke
|
|
54
54
|
assert_requested endpoint
|
55
55
|
end
|
56
56
|
|
57
|
+
def test_save_hash_attribute
|
58
|
+
endpoint = stub_request(:post, 'http://sushi.com/recipes').with(body: { recipe: { meta: { foo: 'bar' } } })
|
59
|
+
|
60
|
+
Recipe.create(meta: { foo: 'bar' })
|
61
|
+
|
62
|
+
assert_requested endpoint
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_save_hash_attribute_with_strong_params
|
66
|
+
endpoint = stub_request(:post, 'http://sushi.com/recipes').with(body: { recipe: { meta: { foo: 'bar' } } })
|
67
|
+
|
68
|
+
Recipe.create(strong_params(meta: { foo: 'bar' }).permit!)
|
69
|
+
|
70
|
+
assert_requested endpoint
|
71
|
+
end
|
72
|
+
|
57
73
|
def test_update_attributes
|
58
74
|
endpoint = stub_request(:put, 'http://sushi.com/recipes/1').with(body: { recipe: { title: 'Sushi' } }).to_return_json(result: { id: 1, title: 'Sushi (saved)' })
|
59
75
|
|
data/test/test_helper.rb
CHANGED
@@ -18,3 +18,10 @@ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
|
|
18
18
|
|
19
19
|
# Pretty colors
|
20
20
|
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
|
21
|
+
|
22
|
+
# For testing strong params
|
23
|
+
require 'action_controller/metal/strong_parameters'
|
24
|
+
|
25
|
+
def strong_params(params)
|
26
|
+
ActionController::Parameters.new(params)
|
27
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spyke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.4.
|
4
|
+
version: 5.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Balvig
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -92,6 +92,20 @@ dependencies:
|
|
92
92
|
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 2.5.2
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: actionpack
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 4.0.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 4.0.0
|
95
109
|
- !ruby/object:Gem::Dependency
|
96
110
|
name: bundler
|
97
111
|
requirement: !ruby/object:Gem::Requirement
|