spyke 1.8.8 → 1.8.9

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
  SHA1:
3
- metadata.gz: e04b56075f974a364cfaf6a44a25969ed1e8e730
4
- data.tar.gz: 3c8ca7d4e89e05d38ddd0d8bfe9cc1ef7872c5c2
3
+ metadata.gz: 0b73653b9952f7257a838b16b11abc70770ce471
4
+ data.tar.gz: 3f753f7c24bcaad6bc5365a2721a28e5b1df99fc
5
5
  SHA512:
6
- metadata.gz: 3be8168169455f6458669224e6b488f13a7eccbfba2e08b632f047e3d1be9327b12d7e2c0b34f692d28e5106c647767672b45ea7cdc74760a85f70a775b6cd26
7
- data.tar.gz: 554aabbd1b06e666b76d6334a85089d0d03f707256209e204ece5e4043ea10e5ac1277626601d191ad69e48e145dd47d61ce5214da88dcde065c29cbd27425b3
6
+ metadata.gz: 40e9090eed648f8a51d6af63ad3e1476b9d64e5e054cd90c42810952670c747e3cc1af14af3ba0b31dedf981257b097b368c6225ca9f00d136ab1fd3b197e815
7
+ data.tar.gz: 97b830a87cbec15d5f4c74226b0a60841b81b9b9e46a6e60a6b3c4ca0d27f19331845c58ccf3a2d9bbc7103d588b9fbbc48d613c95415e2be0dc8a55dd6a51b9
@@ -15,17 +15,6 @@ module Spyke
15
15
  find_one # Override for plural associations that return an association object
16
16
  end
17
17
 
18
- def find_one
19
- result = super
20
- update_parent(result) if result
21
- end
22
-
23
- def find_some
24
- result = super
25
- update_parent(result) if result.any?
26
- result
27
- end
28
-
29
18
  def assign_nested_attributes(attributes)
30
19
  update_parent new(attributes)
31
20
  end
@@ -55,15 +44,15 @@ module Spyke
55
44
  end
56
45
 
57
46
  def fetch_embedded
58
- if embedded_params
59
- Result.new(data: embedded_params)
47
+ if embedded
48
+ Result.new(data: embedded)
60
49
  elsif !uri
61
50
  Result.new(data: nil)
62
51
  end
63
52
  end
64
53
 
65
- def embedded_params
66
- @embedded_params ||= parent.attributes.to_params[name]
54
+ def embedded
55
+ parent.attributes[name]
67
56
  end
68
57
 
69
58
  def update_parent(value)
@@ -24,7 +24,7 @@ module Spyke
24
24
 
25
25
  def combine_with_existing(incoming)
26
26
  return incoming unless primary_keys_present_in_existing?
27
- combined = embedded_params + incoming
27
+ combined = embedded_attributes + incoming
28
28
  group_by_primary_key(combined).flat_map do |primary_key, hashes|
29
29
  if primary_key.present?
30
30
  hashes.reduce(:merge)
@@ -39,13 +39,17 @@ module Spyke
39
39
  end
40
40
 
41
41
  def primary_keys_present_in_existing?
42
- embedded_params && embedded_params.any? { |attr| attr.has_key?('id') }
42
+ embedded_attributes && embedded_attributes.any? { |attr| attr.has_key?('id') }
43
43
  end
44
44
 
45
45
  def clear_existing!
46
46
  update_parent []
47
47
  end
48
48
 
49
+ def embedded_attributes
50
+ @embedded_attributes ||= parent.attributes.to_params[name]
51
+ end
52
+
49
53
  def add_to_parent(record)
50
54
  parent.attributes[name] ||= []
51
55
  parent.attributes[name] << record
data/lib/spyke/http.rb CHANGED
@@ -20,11 +20,11 @@ module Spyke
20
20
  end
21
21
 
22
22
  def new_instance_from_result(result)
23
- new result.data if result.data
23
+ new_or_return result.data if result.data
24
24
  end
25
25
 
26
26
  def new_collection_from_result(result)
27
- Collection.new Array(result.data).map { |record| new(record) }, result.metadata
27
+ Collection.new Array(result.data).map { |record| new_or_return(record) }, result.metadata
28
28
  end
29
29
 
30
30
  def uri(uri_template = nil)
@@ -60,6 +60,14 @@ module Spyke
60
60
  end
61
61
  end
62
62
 
63
+ def new_or_return(attributes_or_object)
64
+ if attributes_or_object.is_a?(Spyke::Base)
65
+ attributes_or_object
66
+ else
67
+ new attributes_or_object
68
+ end
69
+ end
70
+
63
71
  def superclass_uri
64
72
  superclass.uri.dup.freeze if superclass != Base
65
73
  end
@@ -82,7 +90,7 @@ module Spyke
82
90
  end
83
91
 
84
92
  def uri
85
- Path.new(@uri_template, attributes)
93
+ Path.new(@uri_template, attributes) if @uri_template
86
94
  end
87
95
 
88
96
  private
data/lib/spyke/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spyke
2
- VERSION = '1.8.8'
2
+ VERSION = '1.8.9'
3
3
  end
@@ -184,7 +184,7 @@ module Spyke
184
184
 
185
185
  assert_equal %w{ Salt }, recipe.ingredients.map(&:name)
186
186
  assert_equal({ 'recipe' => { 'groups' => [{ 'recipe_id' => 1, 'ingredients' => [{ 'group_id' => nil, 'name' => 'Salt' }] }] } }, recipe.to_params)
187
- assert_equal({ 'group' => { 'recipe_id' => 1, 'ingredients' => [{ 'group_id' => nil, 'name' => 'Salt' }] } }, recipe.groups.first.to_params)
187
+ assert_equal({ 'group' => { 'ingredients' => [{ 'group_id' => nil, 'name' => 'Salt' }] } }, recipe.groups.first.to_params)
188
188
  end
189
189
 
190
190
  def test_deep_build_has_many_association_with_scope
@@ -377,6 +377,18 @@ module Spyke
377
377
  assert_equal %w{ Salt Spoon }, recipe.ingredients.map(&:name)
378
378
  end
379
379
 
380
+ def test_not_caching_result_with_different_params
381
+ endpoint_1 = stub_request(:get, 'http://sushi.com/recipes/1/groups/1').to_return_json(result: { id: 1 })
382
+ endpoint_2 = stub_request(:get, 'http://sushi.com/recipes/1/groups/2').to_return_json(result: { id: 2 })
383
+
384
+ recipe = Recipe.new(id: 1)
385
+ recipe.groups.find(1)
386
+ recipe.groups.find(2)
387
+
388
+ assert_requested endpoint_1, times: 1
389
+ assert_requested endpoint_2, times: 1
390
+ end
391
+
380
392
  def test_namespaced_model
381
393
  tip_endpoint = stub_request(:get, 'http://sushi.com/tips/1').to_return_json(result: { id: 1 })
382
394
  likes_endpoint = stub_request(:get, 'http://sushi.com/tips/1/likes')
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: 1.8.8
4
+ version: 1.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Balvig
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-23 00:00:00.000000000 Z
11
+ date: 2015-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport