rest-in-peace 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0
1
+ 4.0.0
@@ -8,7 +8,7 @@ module RESTinPeace
8
8
  def get(method_name, url_template, default_params = {})
9
9
  @target.rip_registry[:resource] << { method: :get, name: method_name, url: url_template }
10
10
  @target.send(:define_method, method_name) do
11
- call = RESTinPeace::ApiCall.new(api, url_template, self, hash_for_updates)
11
+ call = RESTinPeace::ApiCall.new(api, url_template, self, payload)
12
12
  call.get
13
13
  end
14
14
  end
@@ -16,7 +16,7 @@ module RESTinPeace
16
16
  def patch(method_name, url_template)
17
17
  @target.rip_registry[:resource] << { method: :patch, name: method_name, url: url_template }
18
18
  @target.send(:define_method, method_name) do
19
- call = RESTinPeace::ApiCall.new(api, url_template, self, hash_for_updates)
19
+ call = RESTinPeace::ApiCall.new(api, url_template, self, payload)
20
20
  call.patch
21
21
  end
22
22
  end
@@ -24,7 +24,7 @@ module RESTinPeace
24
24
  def post(method_name, url_template)
25
25
  @target.rip_registry[:resource] << { method: :post, name: method_name, url: url_template }
26
26
  @target.send(:define_method, method_name) do
27
- call = RESTinPeace::ApiCall.new(api, url_template, self, hash_for_updates)
27
+ call = RESTinPeace::ApiCall.new(api, url_template, self, payload)
28
28
  call.post
29
29
  end
30
30
  end
@@ -32,7 +32,7 @@ module RESTinPeace
32
32
  def put(method_name, url_template)
33
33
  @target.rip_registry[:resource] << { method: :put, name: method_name, url: url_template }
34
34
  @target.send(:define_method, method_name) do
35
- call = RESTinPeace::ApiCall.new(api, url_template, self, hash_for_updates)
35
+ call = RESTinPeace::ApiCall.new(api, url_template, self, payload)
36
36
  call.put
37
37
  end
38
38
  end
data/lib/rest_in_peace.rb CHANGED
@@ -14,10 +14,10 @@ module RESTinPeace
14
14
  end
15
15
 
16
16
  def initialize(attributes = {})
17
- force_attributes_from_hash(attributes)
17
+ set_attributes attributes
18
18
  end
19
19
 
20
- def hash_for_updates
20
+ def payload
21
21
  hash_representation = { id: id }
22
22
  changed.each do |key|
23
23
  value = send(key)
@@ -57,7 +57,7 @@ module RESTinPeace
57
57
  hash_representation
58
58
  end
59
59
 
60
- def force_attributes_from_hash(attributes)
60
+ def set_attributes(attributes)
61
61
  attributes.each do |key, value|
62
62
  next unless respond_to?(key)
63
63
  if respond_to?("#{key}=")
@@ -66,11 +66,15 @@ module RESTinPeace
66
66
  instance_variable_set("@#{key}", value)
67
67
  end
68
68
  end
69
+ end
70
+
71
+ def force_attributes_from_hash(attributes)
72
+ set_attributes attributes
69
73
  clear_changes
70
74
  end
71
75
 
72
76
  def hash_representation_of_object(object)
73
- return object.hash_for_updates if object.respond_to?(:hash_for_updates)
77
+ return object.payload if object.respond_to?(:payload)
74
78
  return object.map { |element| hash_representation_of_object(element) } if object.is_a?(Array)
75
79
  object
76
80
  end
@@ -41,7 +41,7 @@ describe RESTinPeace::DefinitionProxy::ResourceMethodDefinitions do
41
41
  describe 'parameter and arguments handling' do
42
42
  it 'uses the attributes of the class' do
43
43
  expect(RESTinPeace::ApiCall).to receive(:new).
44
- with(target.api, url_template, instance, instance.hash_for_updates).
44
+ with(target.api, url_template, instance, instance.payload).
45
45
  and_return(api_call_double)
46
46
 
47
47
  subject.send(http_verb, method_name, url_template)
@@ -26,12 +26,14 @@ describe RESTinPeace::ResponseConverter do
26
26
  specify { expect(subject).to be_instance_of(Array) }
27
27
  specify { expect(subject.first).to be_instance_of(extended_class) }
28
28
  specify { expect(subject.map(&:name)).to eq(%w(test1 test2)) }
29
+ specify { expect(subject.first).to_not be_changed }
29
30
  end
30
31
 
31
32
  shared_examples_for 'a hash input' do
32
33
  let(:response_body) { element1 }
33
34
  specify { expect(subject).to be_instance_of(extended_class) }
34
35
  specify { expect(subject.name).to eq('test1') }
36
+ it { is_expected.to_not be_changed }
35
37
  end
36
38
 
37
39
  shared_examples_for 'a string input' do
@@ -102,25 +102,25 @@ describe RESTinPeace do
102
102
  specify { expect(subject).to eq(attributes.merge(overridden_attribute: 'something else')) }
103
103
  end
104
104
 
105
- describe '#hash_for_updates' do
105
+ describe '#payload' do
106
106
  subject { instance }
107
- specify { expect(subject).to respond_to(:hash_for_updates).with(0).arguments }
107
+ specify { expect(subject).to respond_to(:payload).with(0).arguments }
108
108
 
109
109
  context 'without a namspace defined' do
110
110
  it 'adds id by default' do
111
- expect(subject.hash_for_updates).to include(id: 1)
111
+ expect(subject.payload).to include(id: 1)
112
112
  end
113
113
 
114
114
  context 'overridden getter' do
115
115
  before do
116
116
  subject.overridden_attribute = 'new value'
117
117
  end
118
- specify { expect(subject.hash_for_updates).to include(overridden_attribute: 'something else') }
118
+ specify { expect(subject.payload).to include(overridden_attribute: 'something else') }
119
119
  end
120
120
 
121
121
  context 'self defined methods' do
122
122
  specify { expect(subject).to respond_to(:self_defined_method) }
123
- specify { expect(subject.hash_for_updates).to_not include(:self_defined_method) }
123
+ specify { expect(subject.payload).to_not include(:self_defined_method) }
124
124
  end
125
125
 
126
126
  context 'hash' do
@@ -128,7 +128,7 @@ describe RESTinPeace do
128
128
  subject.my_hash = { element1: 'swag' }
129
129
  end
130
130
 
131
- specify { expect(subject.hash_for_updates[:my_hash]).to eq(element1: 'swag') }
131
+ specify { expect(subject.payload[:my_hash]).to eq(element1: 'swag') }
132
132
  end
133
133
 
134
134
  context 'with objects assigned' do
@@ -138,14 +138,14 @@ describe RESTinPeace do
138
138
  subject.my_hash = new_hash
139
139
  end
140
140
 
141
- it 'deeply calls hash_for_updates' do
142
- expect(new_hash).to receive(:hash_for_updates).and_return({})
143
- subject.hash_for_updates
141
+ it 'deeply calls payload' do
142
+ expect(new_hash).to receive(:payload).and_return({})
143
+ subject.payload
144
144
  end
145
145
  end
146
146
  end
147
147
 
148
- context 'with a namspace defined' do
148
+ context 'with a namespace defined' do
149
149
  let(:extended_class) do
150
150
  Class.new do
151
151
  include RESTinPeace
@@ -165,7 +165,7 @@ describe RESTinPeace do
165
165
  subject.name = 'new value'
166
166
  end
167
167
 
168
- specify { expect(subject.hash_for_updates).to eq(id: 1, blubb: { id: 1, name: 'new value' }) }
168
+ specify { expect(subject.payload).to eq(id: 1, blubb: { id: 1, name: 'new value', description: 'old description' }) }
169
169
  end
170
170
  end
171
171
 
@@ -227,7 +227,7 @@ describe RESTinPeace do
227
227
  subject { instance }
228
228
 
229
229
  context 'a new instance' do
230
- it { is_expected.to_not be_changed }
230
+ it { is_expected.to be_changed }
231
231
  end
232
232
 
233
233
  context 'a modified instance' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-in-peace
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-05 00:00:00.000000000 Z
12
+ date: 2015-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel