her 0.3.3 → 0.3.4

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.
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
3
3
 
4
4
  describe Her::Model::HTTP do
5
5
  context "binding a model with an API" do
6
- it "binds a model to an instance of Her::API" do # {{{
6
+ it "binds a model to an instance of Her::API" do
7
7
  api = Her::API.new
8
8
  api.setup :url => "https://api.example.com"
9
9
 
@@ -11,18 +11,18 @@ describe Her::Model::HTTP do
11
11
  Foo::User.uses_api api
12
12
  Foo::User.her_api.should_not == nil
13
13
  Foo::User.her_api.base_uri.should == "https://api.example.com"
14
- end # }}}
14
+ end
15
15
 
16
- it "binds a model directly to Her::API" do # {{{
16
+ it "binds a model directly to Her::API" do
17
17
  Her::API.setup :url => "https://api.example.com"
18
18
 
19
19
  spawn_model "Foo::User"
20
20
 
21
21
  Foo::User.her_api.should_not == nil
22
22
  Foo::User.her_api.base_uri.should == "https://api.example.com"
23
- end # }}}
23
+ end
24
24
 
25
- it "binds two models to two different instances of Her::API" do # {{{
25
+ it "binds two models to two different instances of Her::API" do
26
26
  api1 = Her::API.new
27
27
  api1.setup :url => "https://api1.example.com" do |builder|
28
28
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -42,9 +42,9 @@ describe Her::Model::HTTP do
42
42
  spawn_model "Foo::Comment"
43
43
  Foo::Comment.uses_api api2
44
44
  Foo::Comment.her_api.base_uri.should == "https://api2.example.com"
45
- end # }}}
45
+ end
46
46
 
47
- it "binds one model to Her::API and another one to an instance of Her::API" do # {{{
47
+ it "binds one model to Her::API and another one to an instance of Her::API" do
48
48
  Her::API.setup :url => "https://api1.example.com" do |builder|
49
49
  builder.use Her::Middleware::FirstLevelParseJSON
50
50
  builder.use Faraday::Request::UrlEncoded
@@ -63,9 +63,9 @@ describe Her::Model::HTTP do
63
63
  spawn_model "Foo::Comment"
64
64
  Foo::Comment.uses_api api
65
65
  Foo::Comment.her_api.base_uri.should == "https://api2.example.com"
66
- end # }}}
66
+ end
67
67
 
68
- it "binds a a model to it's superclass' her_api" do # {{{
68
+ it "binds a a model to it's superclass' her_api" do
69
69
  api = Her::API.new
70
70
  api.setup :url => "http://api.example.com" do |builder|
71
71
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -78,9 +78,9 @@ describe Her::Model::HTTP do
78
78
 
79
79
  Foo::Subclass = Class.new(Foo::Superclass)
80
80
  Foo::Subclass.her_api.should == Foo::Superclass.her_api
81
- end # }}}
81
+ end
82
82
 
83
- it "allows subclasses to change her_api without changing the parent class' her_api" do # {{{
83
+ it "allows subclasses to change her_api without changing the parent class' her_api" do
84
84
  api1 = Her::API.new
85
85
  api1.setup :url => "http://api.example.com" do |builder|
86
86
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -102,11 +102,11 @@ describe Her::Model::HTTP do
102
102
  end
103
103
 
104
104
  Foo::Subclass.her_api.should_not == Foo::Superclass.her_api
105
- end # }}}
105
+ end
106
106
  end
107
107
 
108
108
  context "making HTTP requests" do
109
- before do # {{{
109
+ before do
110
110
  Her::API.setup :url => "https://api.example.com" do |builder|
111
111
  builder.use Her::Middleware::FirstLevelParseJSON
112
112
  builder.use Faraday::Request::UrlEncoded
@@ -128,109 +128,109 @@ describe Her::Model::HTTP do
128
128
  end
129
129
 
130
130
  spawn_model "Foo::User"
131
- end # }}}
131
+ end
132
132
 
133
- it "handles GET wrapper method" do # {{{
133
+ it "handles GET wrapper method" do
134
134
  @users = Foo::User.get(:popular)
135
135
  @users.length.should == 2
136
136
  @users.first.id.should == 1
137
137
 
138
138
  @user = Foo::User.get(:"1")
139
139
  @user.id.should == 1
140
- end # }}}
140
+ end
141
141
 
142
- it "handles raw GET with a block" do # {{{
142
+ it "handles raw GET with a block" do
143
143
  Foo::User.get_raw("/users") do |parsed_data|
144
144
  parsed_data[:data].should == [{ :id => 1 }]
145
145
  end
146
- end # }}}
146
+ end
147
147
 
148
- it "handles raw GET with return value" do # {{{
148
+ it "handles raw GET with return value" do
149
149
  parsed_data = Foo::User.get_raw("/users")
150
150
  parsed_data[:data].should == [{ :id => 1 }]
151
- end # }}}
151
+ end
152
152
 
153
- it "handles raw POST with a block" do # {{{
153
+ it "handles raw POST with a block" do
154
154
  Foo::User.post_raw("/users") do |parsed_data|
155
155
  parsed_data[:data].should == [{ :id => 3 }]
156
156
  end
157
- end # }}}
157
+ end
158
158
 
159
- it "handles raw POST with return value" do # {{{
159
+ it "handles raw POST with return value" do
160
160
  parsed_data = Foo::User.post_raw("/users")
161
161
  parsed_data[:data].should == [{ :id => 3 }]
162
- end # }}}
162
+ end
163
163
 
164
- it "handles raw PUT with a block" do # {{{
164
+ it "handles raw PUT with a block" do
165
165
  Foo::User.put_raw("/users/4") do |parsed_data|
166
166
  parsed_data[:data].should == [{ :id => 4 }]
167
167
  end
168
- end # }}}
168
+ end
169
169
 
170
- it "handles raw PUT with return value" do # {{{
170
+ it "handles raw PUT with return value" do
171
171
  parsed_data = Foo::User.put_raw("/users/4")
172
172
  parsed_data[:data].should == [{ :id => 4 }]
173
- end # }}}
173
+ end
174
174
 
175
- it "handles raw PATCH with a block" do # {{{
175
+ it "handles raw PATCH with a block" do
176
176
  Foo::User.patch_raw("/users/6") do |parsed_data|
177
177
  parsed_data[:data].should == [{ :id => 6 }]
178
178
  end
179
- end # }}}
179
+ end
180
180
 
181
- it "handles raw PATCH with return value" do # {{{
181
+ it "handles raw PATCH with return value" do
182
182
  parsed_data = Foo::User.patch_raw("/users/6")
183
183
  parsed_data[:data].should == [{ :id => 6 }]
184
- end # }}}
184
+ end
185
185
 
186
- it "handles raw DELETE with a block" do # {{{
186
+ it "handles raw DELETE with a block" do
187
187
  Foo::User.delete_raw("/users/5") do |parsed_data|
188
188
  parsed_data[:data].should == [{ :id => 5 }]
189
189
  end
190
- end # }}}
190
+ end
191
191
 
192
- it "handles raw DELETE with return value" do # {{{
192
+ it "handles raw DELETE with return value" do
193
193
  parsed_data = Foo::User.delete_raw("/users/5")
194
194
  parsed_data[:data].should == [{ :id => 5 }]
195
- end # }}}
195
+ end
196
196
 
197
- it "handles querystring parameters" do # {{{
197
+ it "handles querystring parameters" do
198
198
  Foo::User.get_raw("/users", :page => 2) do |parsed_data|
199
199
  parsed_data[:data].should == [{ :id => 2 }]
200
200
  end
201
- end # }}}
201
+ end
202
202
 
203
- it "handles GET collection" do # {{{
203
+ it "handles GET collection" do
204
204
  @users = Foo::User.get_collection("/users/popular")
205
205
  @users.length.should == 2
206
206
  @users.first.id.should == 1
207
- end # }}}
207
+ end
208
208
 
209
- it "handles GET resource" do # {{{
209
+ it "handles GET resource" do
210
210
  @user = Foo::User.get_resource("/users/1")
211
211
  @user.id.should == 1
212
- end # }}}
212
+ end
213
213
 
214
- it "handles GET collection through a symbol" do # {{{
214
+ it "handles GET collection through a symbol" do
215
215
  @users = Foo::User.get_collection(:popular)
216
216
  @users.length.should == 2
217
217
  @users.first.id.should == 1
218
- end # }}}
218
+ end
219
219
 
220
- it "handles GET resource through a symbol" do # {{{
220
+ it "handles GET resource through a symbol" do
221
221
  @user = Foo::User.get_resource(:"1")
222
222
  @user.id.should == 1
223
- end # }}}
223
+ end
224
224
 
225
- it "handles raw GET through a symbol" do # {{{
225
+ it "handles raw GET through a symbol" do
226
226
  Foo::User.get_raw(:popular) do |parsed_data|
227
227
  parsed_data[:data].should == [{ :id => 1 }, { :id => 2 }]
228
228
  end
229
- end # }}}
229
+ end
230
230
  end
231
231
 
232
232
  context "setting custom requests" do
233
- before do # {{{
233
+ before do
234
234
  Her::API.setup :url => "https://api.example.com" do |builder|
235
235
  builder.use Her::Middleware::FirstLevelParseJSON
236
236
  builder.use Faraday::Request::UrlEncoded
@@ -243,23 +243,23 @@ describe Her::Model::HTTP do
243
243
  spawn_model "Foo::User"
244
244
  Foo::User.custom_get :popular, :foobar
245
245
  Foo::User.custom_post :from_default
246
- end # }}}
246
+ end
247
247
 
248
- it "handles custom methods" do # {{{
248
+ it "handles custom methods" do
249
249
  Foo::User.respond_to?(:popular).should be_true
250
250
  Foo::User.respond_to?(:foobar).should be_true
251
251
  Foo::User.respond_to?(:from_default).should be_true
252
- end # }}}
252
+ end
253
253
 
254
- it "handles custom GET requests" do # {{{
254
+ it "handles custom GET requests" do
255
255
  @users = Foo::User.popular
256
256
  @users.length.should == 2
257
257
  @users.first.id.should == 1
258
- end # }}}
258
+ end
259
259
 
260
- it "handles custom POST requests" do # {{{
260
+ it "handles custom POST requests" do
261
261
  @user = Foo::User.from_default(:name => "Tobias Fünke")
262
262
  @user.id.should be_true
263
- end # }}}
263
+ end
264
264
  end
265
265
  end
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
3
3
 
4
4
  describe Her::Model::Introspection do
5
5
  context "introspecting a resource" do
6
- before do # {{{
6
+ before do
7
7
  Her::API.setup :url => "https://api.example.com" do |builder|
8
8
  builder.use Her::Middleware::FirstLevelParseJSON
9
9
  builder.use Faraday::Request::UrlEncoded
@@ -16,36 +16,36 @@ describe Her::Model::Introspection do
16
16
  end
17
17
 
18
18
  spawn_model "Foo::User"
19
- end # }}}
19
+ end
20
20
 
21
21
  describe "#inspect" do
22
- it "outputs resource attributs for an existing resource" do # {{{
22
+ it "outputs resource attributs for an existing resource" do
23
23
  @user = Foo::User.find(1)
24
24
  ["#<Foo::User(users/1) name=\"Tobias Funke\" id=1>", "#<Foo::User(users/1) id=1 name=\"Tobias Funke\">"].should include(@user.inspect)
25
- end # }}}
25
+ end
26
26
 
27
- it "outputs resource attributs for an not-saved-yet resource" do # {{{
27
+ it "outputs resource attributs for an not-saved-yet resource" do
28
28
  @user = Foo::User.new(:name => "Tobias Funke")
29
29
  @user.inspect.should == "#<Foo::User(users) name=\"Tobias Funke\">"
30
- end # }}}
30
+ end
31
31
  end
32
32
  end
33
33
 
34
34
  describe "#nearby_class" do
35
- context "for a class inside of a module" do # {{{
36
- before do # {{{
35
+ context "for a class inside of a module" do
36
+ before do
37
37
  spawn_model "Foo::User"
38
38
  spawn_model "Foo::AccessRecord"
39
39
  spawn_model "AccessRecord"
40
40
  spawn_model "Log"
41
- end # }}}
41
+ end
42
42
 
43
- it "returns a sibling class, if found" do # {{{
43
+ it "returns a sibling class, if found" do
44
44
  Foo::User.nearby_class("AccessRecord").should == Foo::AccessRecord
45
45
  AccessRecord.nearby_class("Log").should == Log
46
46
  Foo::User.nearby_class("Log").should == Log
47
47
  Foo::User.nearby_class("X").should be_nil
48
- end # }}}
49
- end # }}}
48
+ end
49
+ end
50
50
  end
51
51
  end
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
3
3
 
4
4
  describe Her::Model::ORM do
5
5
  context "mapping data to Ruby objects" do
6
- before do # {{{
6
+ before do
7
7
  api = Her::API.new
8
8
  api.setup :url => "https://api.example.com" do |builder|
9
9
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -22,15 +22,15 @@ describe Her::Model::ORM do
22
22
  spawn_model "Foo::AdminUser" do
23
23
  uses_api api
24
24
  end
25
- end # }}}
25
+ end
26
26
 
27
- it "maps a single resource to a Ruby object" do # {{{
27
+ it "maps a single resource to a Ruby object" do
28
28
  @user = Foo::User.find(1)
29
29
  @user.id.should == 1
30
30
  @user.name.should == "Tobias Fünke"
31
- end # }}}
31
+ end
32
32
 
33
- it "maps a collection of resources to an array of Ruby objects" do # {{{
33
+ it "maps a collection of resources to an array of Ruby objects" do
34
34
  @users = Foo::User.all
35
35
  @users.length.should == 2
36
36
  @users.first.name.should == "Tobias Fünke"
@@ -38,52 +38,64 @@ describe Her::Model::ORM do
38
38
  @users = Foo::AdminUser.all
39
39
  @users.length.should == 2
40
40
  @users.first.name.should == "Tobias Fünke"
41
- end # }}}
41
+ end
42
42
 
43
- it "handles new resource" do # {{{
43
+ it "handles new resource" do
44
44
  @new_user = Foo::User.new(:fullname => "Tobias Fünke")
45
45
  @new_user.new?.should be_true
46
46
  @new_user.fullname.should == "Tobias Fünke"
47
47
 
48
48
  @existing_user = Foo::User.find(1)
49
49
  @existing_user.new?.should be_false
50
- end # }}}
50
+ end
51
51
 
52
- it "handles method missing for getter" do# {{{
52
+ it "handles method missing for getter" do
53
53
  @new_user = Foo::User.new(:fullname => 'Mayonegg')
54
54
  lambda { @new_user.unknown_method_for_a_user }.should raise_error(NoMethodError)
55
55
  expect { @new_user.fullname }.to_not raise_error(NoMethodError)
56
- end# }}}
56
+ end
57
57
 
58
- it "handles method missing for setter" do# {{{
58
+ it "handles method missing for setter" do
59
59
  @new_user = Foo::User.new
60
60
  expect { @new_user.fullname = "Tobias Fünke" }.to_not raise_error(NoMethodError)
61
- end# }}}
61
+ end
62
62
 
63
- it "handles method missing for query" do#{{{
63
+ it "handles method missing for query" do
64
64
  @new_user = Foo::User.new
65
65
  expect { @new_user.fullname? }.to_not raise_error(NoMethodError)
66
- end# }}}
66
+ end
67
67
 
68
- it "handles respond_to for getter" do#{{{
68
+ it "handles respond_to for getter" do
69
69
  @new_user = Foo::User.new(:fullname => 'Mayonegg')
70
70
  @new_user.should_not respond_to(:unknown_method_for_a_user)
71
71
  @new_user.should respond_to(:fullname)
72
- end#}}}
72
+ end
73
73
 
74
- it "handles respond_to for setter" do#{{{
74
+ it "handles respond_to for setter" do
75
75
  @new_user = Foo::User.new
76
76
  @new_user.should respond_to(:fullname=)
77
- end#}}}
77
+ end
78
78
 
79
- it "handles respond_to for query" do#{{{
79
+ it "handles respond_to for query" do
80
80
  @new_user = Foo::User.new
81
81
  @new_user.should respond_to(:fullname?)
82
- end#}}}
82
+ end
83
+
84
+ it "handles has_key for getter" do
85
+ @new_user = Foo::User.new(:fullname => 'Mayonegg')
86
+ @new_user.should_not have_key(:unknown_method_for_a_user)
87
+ @new_user.should have_key(:fullname)
88
+ end
89
+
90
+ it "handles [] for getter" do
91
+ @new_user = Foo::User.new(:fullname => 'Mayonegg')
92
+ @new_user[:unknown_method_for_a_user].should be_nil
93
+ @new_user[:fullname].should == 'Mayonegg'
94
+ end
83
95
  end
84
96
 
85
97
  context "mapping data, metadata and error data to Ruby objects" do
86
- before do # {{{
98
+ before do
87
99
  api = Her::API.new
88
100
  api.setup :url => "https://api.example.com" do |builder|
89
101
  builder.use Her::Middleware::SecondLevelParseJSON
@@ -97,32 +109,32 @@ describe Her::Model::ORM do
97
109
  spawn_model :User do
98
110
  uses_api api
99
111
  end
100
- end # }}}
112
+ end
101
113
 
102
- it "handles metadata on a collection" do # {{{
114
+ it "handles metadata on a collection" do
103
115
  @users = User.all
104
116
  @users.metadata[:total_pages].should == 10
105
- end # }}}
117
+ end
106
118
 
107
- it "handles error data on a collection" do # {{{
119
+ it "handles error data on a collection" do
108
120
  @users = User.all
109
121
  @users.errors.length.should == 3
110
- end # }}}
122
+ end
111
123
 
112
- it "handles metadata on a resource" do # {{{
124
+ it "handles metadata on a resource" do
113
125
  @user = User.create(:name => "George Michael Bluth")
114
126
  @user.metadata[:foo].should == "bar"
115
- end # }}}
127
+ end
116
128
 
117
- it "handles error data on a resource" do # {{{
129
+ it "handles error data on a resource" do
118
130
  @user = User.create(:name => "George Michael Bluth")
119
131
  @user.errors.should == ["Yes", "Sir"]
120
132
  @user.should be_invalid
121
- end # }}}
133
+ end
122
134
  end
123
135
 
124
136
  context "defining custom getters and setters" do
125
- before do # {{{
137
+ before do
126
138
  api = Her::API.new
127
139
  api.setup :url => "https://api.example.com" do |builder|
128
140
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -151,33 +163,33 @@ describe Her::Model::ORM do
151
163
  @data[:organization] = { :foo => :bar }
152
164
  end
153
165
  end
154
- end # }}}
166
+ end
155
167
 
156
- it "handles custom setters" do # {{{
168
+ it "handles custom setters" do
157
169
  @user = User.find(1)
158
170
  @user.friends.should == "* Maeby\n* GOB\n* Anne"
159
171
  @user.instance_eval do
160
172
  @data[:friends] = ["Maeby", "GOB", "Anne"]
161
173
  end
162
- end # }}}
174
+ end
163
175
 
164
- it "handles custom setters with relationships" do # {{{
176
+ it "handles custom setters with relationships" do
165
177
  @user = User.find(2)
166
178
  @user.organization.should == { :foo => :bar }
167
- end # }}}
179
+ end
168
180
 
169
- it "handles custom getters" do # {{{
181
+ it "handles custom getters" do
170
182
  @user = User.new
171
183
  @user.friends = "* George\n* Oscar\n* Lucille"
172
184
  @user.friends.should == "* George\n* Oscar\n* Lucille"
173
185
  @user.instance_eval do
174
186
  @data[:friends] = ["George", "Oscar", "Lucille"]
175
187
  end
176
- end # }}}
188
+ end
177
189
  end
178
190
 
179
191
  context "finding resources" do
180
- before do # {{{
192
+ before do
181
193
  api = Her::API.new
182
194
  api.setup :url => "https://api.example.com" do |builder|
183
195
  builder.use Her::Middleware::FirstLevelParseJSON
@@ -192,20 +204,20 @@ describe Her::Model::ORM do
192
204
  spawn_model :User do
193
205
  uses_api api
194
206
  end
195
- end # }}}
207
+ end
196
208
 
197
- it "handles finding by a single id" do # {{{
209
+ it "handles finding by a single id" do
198
210
  @user = User.find(1)
199
211
  @user.id.should == 1
200
- end # }}}
212
+ end
201
213
 
202
- it "handles finding by multiple ids" do # {{{
214
+ it "handles finding by multiple ids" do
203
215
  @users = User.find(1, 2)
204
216
  @users.should be_kind_of(Array)
205
217
  @users.length.should == 2
206
218
  @users[0].id.should == 1
207
219
  @users[1].id.should == 2
208
- end # }}}
220
+ end
209
221
 
210
222
  it "handles finding by an array of ids" do
211
223
  @users = User.find([1, 2])
@@ -222,41 +234,48 @@ describe Her::Model::ORM do
222
234
  @users[0].id.should == 1
223
235
  end
224
236
 
225
- it "handles finding with other parameters" do # {{{
237
+ it "handles finding with other parameters" do
226
238
  @users = User.all(:age => 42)
227
239
  @users.should be_kind_of(Array)
228
240
  @users.should be_all { |u| u.age == 42 }
229
- end # }}}
241
+ end
230
242
  end
231
243
 
232
244
  context "creating resources" do
233
- before do # {{{
245
+ before do
234
246
  Her::API.setup :url => "https://api.example.com" do |builder|
235
247
  builder.use Her::Middleware::FirstLevelParseJSON
236
248
  builder.use Faraday::Request::UrlEncoded
237
249
  builder.adapter :test do |stub|
238
250
  stub.post("/users") { |env| [200, {}, { :id => 1, :fullname => "Tobias Fünke" }.to_json] }
251
+ stub.post("/companies") { |env| [200, {}, { :errors => ["name is required"] }.to_json] }
239
252
  end
240
253
  end
241
254
 
242
255
  spawn_model "Foo::User"
243
- end # }}}
256
+ spawn_model "Foo::Company"
257
+ end
244
258
 
245
- it "handle one-line resource creation" do # {{{
259
+ it "handle one-line resource creation" do
246
260
  @user = Foo::User.create(:fullname => "Tobias Fünke")
247
261
  @user.id.should == 1
248
262
  @user.fullname.should == "Tobias Fünke"
249
- end # }}}
263
+ end
250
264
 
251
- it "handle resource creation through Model.new + #save" do # {{{
265
+ it "handle resource creation through Model.new + #save" do
252
266
  @user = Foo::User.new(:fullname => "Tobias Fünke")
253
- @user.save
267
+ @user.save.should be_true
254
268
  @user.fullname.should == "Tobias Fünke"
255
- end # }}}
269
+ end
270
+
271
+ it "returns false when #save gets errors" do
272
+ @company = Foo::Company.new
273
+ @company.save.should be_false
274
+ end
256
275
  end
257
276
 
258
277
  context "updating resources" do
259
- before do # {{{
278
+ before do
260
279
  Her::API.setup :url => "https://api.example.com" do |builder|
261
280
  builder.use Her::Middleware::FirstLevelParseJSON
262
281
  builder.use Faraday::Request::UrlEncoded
@@ -267,30 +286,30 @@ describe Her::Model::ORM do
267
286
  end
268
287
 
269
288
  spawn_model "Foo::User"
270
- end # }}}
289
+ end
271
290
 
272
- it "handle resource data update without saving it" do # {{{
291
+ it "handle resource data update without saving it" do
273
292
  @user = Foo::User.find(1)
274
293
  @user.fullname.should == "Tobias Fünke"
275
294
  @user.fullname = "Kittie Sanchez"
276
295
  @user.fullname.should == "Kittie Sanchez"
277
- end # }}}
296
+ end
278
297
 
279
- it "handle resource update through the .update class method" do # {{{
298
+ it "handle resource update through the .update class method" do
280
299
  @user = Foo::User.save_existing(1, { :fullname => "Lindsay Fünke" })
281
300
  @user.fullname.should == "Lindsay Fünke"
282
- end # }}}
301
+ end
283
302
 
284
- it "handle resource update through #save on an existing resource" do # {{{
303
+ it "handle resource update through #save on an existing resource" do
285
304
  @user = Foo::User.find(1)
286
305
  @user.fullname = "Lindsay Fünke"
287
306
  @user.save
288
307
  @user.fullname.should == "Lindsay Fünke"
289
- end # }}}
308
+ end
290
309
  end
291
310
 
292
311
  context "deleting resources" do
293
- before do # {{{
312
+ before do
294
313
  Her::API.setup :url => "https://api.example.com" do |builder|
295
314
  builder.use Her::Middleware::FirstLevelParseJSON
296
315
  builder.use Faraday::Request::UrlEncoded
@@ -301,22 +320,22 @@ describe Her::Model::ORM do
301
320
  end
302
321
 
303
322
  spawn_model "Foo::User"
304
- end # }}}
323
+ end
305
324
 
306
- it "handle resource deletion through the .destroy class method" do # {{{
325
+ it "handle resource deletion through the .destroy class method" do
307
326
  @user = Foo::User.destroy_existing(1)
308
327
  @user.active.should be_false
309
- end # }}}
328
+ end
310
329
 
311
- it "handle resource deletion through #destroy on an existing resource" do # {{{
330
+ it "handle resource deletion through #destroy on an existing resource" do
312
331
  @user = Foo::User.find(1)
313
332
  @user.destroy
314
333
  @user.active.should be_false
315
- end # }}}
334
+ end
316
335
  end
317
336
 
318
337
  context "saving resources with overridden to_params" do
319
- before do # {{{
338
+ before do
320
339
  Her::API.setup :url => "https://api.example.com" do |builder|
321
340
  builder.use Her::Middleware::FirstLevelParseJSON
322
341
  builder.use Faraday::Request::UrlEncoded
@@ -329,29 +348,29 @@ describe Her::Model::ORM do
329
348
  [200, {}, body]
330
349
  end
331
350
  end
332
- end # }}}
351
+ end
333
352
 
334
353
  spawn_model "Foo::User" do
335
354
  def to_params
336
355
  { :fullname => "Lindsay Fünke" }
337
356
  end
338
357
  end
339
- end # }}}
358
+ end
340
359
 
341
- it "changes the request parameters for one-line resource creation" do # {{{
360
+ it "changes the request parameters for one-line resource creation" do
342
361
  @user = Foo::User.create(:fullname => "Tobias Fünke")
343
362
  @user.fullname.should == "Lindsay Fünke"
344
- end # }}}
363
+ end
345
364
 
346
- it "changes the request parameters for Model.new + #save" do # {{{
365
+ it "changes the request parameters for Model.new + #save" do
347
366
  @user = Foo::User.new(:fullname => "Tobias Fünke")
348
367
  @user.save
349
368
  @user.fullname.should == "Lindsay Fünke"
350
- end # }}}
369
+ end
351
370
  end
352
371
 
353
372
  context "checking resource equality" do
354
- before do # {{{
373
+ before do
355
374
  Her::API.setup :url => "https://api.example.com" do |builder|
356
375
  builder.use Her::Middleware::FirstLevelParseJSON
357
376
  builder.use Faraday::Request::UrlEncoded
@@ -364,52 +383,52 @@ describe Her::Model::ORM do
364
383
 
365
384
  spawn_model "Foo::User"
366
385
  spawn_model "Foo::Admin"
367
- end # }}}
386
+ end
368
387
 
369
388
  let(:user) { Foo::User.find(1) }
370
389
 
371
- it "returns true for the exact same object" do # {{{
390
+ it "returns true for the exact same object" do
372
391
  user.should == user
373
- end # }}}
392
+ end
374
393
 
375
- it "returns true for the same resource via find" do # {{{
394
+ it "returns true for the same resource via find" do
376
395
  user.should == Foo::User.find(1)
377
- end # }}}
396
+ end
378
397
 
379
- it "returns true for the same class with identical data" do # {{{
398
+ it "returns true for the same class with identical data" do
380
399
  user.should == Foo::User.new(:id => 1, :fullname => "Lindsay Fünke")
381
- end # }}}
400
+ end
382
401
 
383
- it "returns true for a different resource with the same data" do # {{{
402
+ it "returns true for a different resource with the same data" do
384
403
  user.should == Foo::Admin.find(1)
385
- end # }}}
404
+ end
386
405
 
387
- it "returns false for the same class with different data" do # {{{
406
+ it "returns false for the same class with different data" do
388
407
  user.should_not == Foo::User.new(:id => 2, :fullname => "Tobias Fünke")
389
- end # }}}
408
+ end
390
409
 
391
- it "returns false for a non-resource with the same data" do # {{{
410
+ it "returns false for a non-resource with the same data" do
392
411
  fake_user = stub(:data => { :id => 1, :fullname => "Lindsay Fünke" })
393
412
  user.should_not == fake_user
394
- end # }}}
413
+ end
395
414
 
396
- it "delegates eql? to ==" do # {{{
415
+ it "delegates eql? to ==" do
397
416
  other = Object.new
398
417
  user.expects(:==).with(other).returns(true)
399
418
  user.eql?(other).should be_true
400
- end # }}}
419
+ end
401
420
 
402
- it "treats equal resources as equal for Array#uniq" do # {{{
421
+ it "treats equal resources as equal for Array#uniq" do
403
422
  user2 = Foo::User.find(1)
404
423
  [user, user2].uniq.should == [user]
405
- end # }}}
424
+ end
406
425
 
407
- it "treats equal resources as equal for hash keys" do # {{{
426
+ it "treats equal resources as equal for hash keys" do
408
427
  Foo::User.find(1)
409
428
  hash = { user => true }
410
429
  hash[Foo::User.find(1)] = false
411
430
  hash.size.should == 1
412
431
  hash.should == { user => false }
413
- end # }}}
432
+ end
414
433
  end
415
434
  end