morpheus 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.
- data/.rvmrc +1 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +134 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +44 -0
- data/Rakefile +48 -0
- data/VERSION +1 -0
- data/autotest/discover.rb +7 -0
- data/lib/ext/typhoeus.rb +37 -0
- data/lib/morpheus/associations/association.rb +110 -0
- data/lib/morpheus/associations/belongs_to_association.rb +45 -0
- data/lib/morpheus/associations/has_many_association.rb +70 -0
- data/lib/morpheus/associations/has_one_association.rb +46 -0
- data/lib/morpheus/base.rb +66 -0
- data/lib/morpheus/client/associations.rb +47 -0
- data/lib/morpheus/client/inflections.rb +3 -0
- data/lib/morpheus/client/log_subscriber.rb +64 -0
- data/lib/morpheus/client/railtie.rb +25 -0
- data/lib/morpheus/configuration.rb +49 -0
- data/lib/morpheus/errors.rb +32 -0
- data/lib/morpheus/filter.rb +18 -0
- data/lib/morpheus/mixins/associations.rb +55 -0
- data/lib/morpheus/mixins/attributes.rb +133 -0
- data/lib/morpheus/mixins/conversion.rb +21 -0
- data/lib/morpheus/mixins/filtering.rb +18 -0
- data/lib/morpheus/mixins/finders.rb +58 -0
- data/lib/morpheus/mixins/introspection.rb +25 -0
- data/lib/morpheus/mixins/persistence.rb +46 -0
- data/lib/morpheus/mixins/reflections.rb +24 -0
- data/lib/morpheus/mixins/request_handling.rb +34 -0
- data/lib/morpheus/mixins/response_parsing.rb +27 -0
- data/lib/morpheus/mixins/url_support.rb +36 -0
- data/lib/morpheus/mock.rb +66 -0
- data/lib/morpheus/reflection.rb +22 -0
- data/lib/morpheus/relation.rb +57 -0
- data/lib/morpheus/request.rb +41 -0
- data/lib/morpheus/request_cache.rb +18 -0
- data/lib/morpheus/request_queue.rb +44 -0
- data/lib/morpheus/response.rb +24 -0
- data/lib/morpheus/response_parser.rb +80 -0
- data/lib/morpheus/type_caster.rb +80 -0
- data/lib/morpheus/url_builder.rb +52 -0
- data/lib/morpheus.rb +64 -0
- data/morpheus.gemspec +191 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/purchase.rb +3 -0
- data/spec/dummy/app/resources/attendee.rb +2 -0
- data/spec/dummy/app/resources/author.rb +5 -0
- data/spec/dummy/app/resources/automobile.rb +6 -0
- data/spec/dummy/app/resources/book.rb +5 -0
- data/spec/dummy/app/resources/conference.rb +3 -0
- data/spec/dummy/app/resources/dog.rb +10 -0
- data/spec/dummy/app/resources/item.rb +5 -0
- data/spec/dummy/app/resources/meeting.rb +7 -0
- data/spec/dummy/app/resources/speaker.rb +3 -0
- data/spec/dummy/app/resources/state.rb +5 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +22 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +26 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +35 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/morpheus.rb +3 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20110605002144_create_purchases.rb +13 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/morpheus/associations/association_spec.rb +44 -0
- data/spec/morpheus/associations/belongs_to_association_spec.rb +5 -0
- data/spec/morpheus/associations/has_many_association_spec.rb +17 -0
- data/spec/morpheus/associations/has_one_association_spec.rb +5 -0
- data/spec/morpheus/base_spec.rb +126 -0
- data/spec/morpheus/client/associations_spec.rb +44 -0
- data/spec/morpheus/configuration_spec.rb +136 -0
- data/spec/morpheus/mixins/associations_spec.rb +141 -0
- data/spec/morpheus/mixins/attributes_spec.rb +99 -0
- data/spec/morpheus/mixins/conversion_spec.rb +76 -0
- data/spec/morpheus/mixins/finders_spec.rb +255 -0
- data/spec/morpheus/mixins/introspection_spec.rb +154 -0
- data/spec/morpheus/mixins/persistence_spec.rb +161 -0
- data/spec/morpheus/mixins/reflection_spec.rb +100 -0
- data/spec/morpheus/mixins/response_parsing_spec.rb +5 -0
- data/spec/morpheus/mock_spec.rb +133 -0
- data/spec/morpheus/relation_spec.rb +71 -0
- data/spec/morpheus/request_cache_spec.rb +5 -0
- data/spec/morpheus/request_spec.rb +5 -0
- data/spec/morpheus/response_spec.rb +73 -0
- data/spec/morpheus/type_caster_spec.rb +343 -0
- data/spec/shared/active_model_lint_test.rb +14 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/support/configuration.rb +26 -0
- metadata +427 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Morpheus::TypeCaster, "#cast" do
|
|
4
|
+
|
|
5
|
+
context "when the type_class is nil" do
|
|
6
|
+
|
|
7
|
+
it "casts 'hello' to 'hello'" do
|
|
8
|
+
Morpheus::TypeCaster.cast('hello', nil).should eql('hello')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "casts '2011-04-10' to '2011-04-10'" do
|
|
12
|
+
Morpheus::TypeCaster.cast('2011-04-10', nil).should eql('2011-04-10')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "cast '3' to '3'" do
|
|
16
|
+
Morpheus::TypeCaster.cast('3', nil).should eql('3')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "casts '10-04-2011T05:00:00Z' to '10-04-2011T05:00:00Z'" do
|
|
20
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', nil).should eql('10-04-2011T05:00:00Z')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "casts 'true' to 'true'" do
|
|
24
|
+
Morpheus::TypeCaster.cast('true', nil).should eql('true')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "casts 4 to 4" do
|
|
28
|
+
Morpheus::TypeCaster.cast(4, nil).should eql(4)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "casts true to true" do
|
|
32
|
+
Morpheus::TypeCaster.cast(true, nil).should eql(true)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "cast DateTime to DateTime" do
|
|
36
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), nil).should eql(DateTime.parse('10-04-2011T05:00:00Z'))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "casts Date to Date" do
|
|
40
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), nil).should eql(Date.parse('2011-04-10'))
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "casts Time to Time" do
|
|
44
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), nil).should eql(Time.parse('10-04-2011T05:00:00Z'))
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context "when the type_class is String" do
|
|
50
|
+
|
|
51
|
+
it "casts 'hello' to 'hello'" do
|
|
52
|
+
Morpheus::TypeCaster.cast('hello', :string).should eql('hello')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "casts '2011-04-10' to '2011-04-10'" do
|
|
56
|
+
Morpheus::TypeCaster.cast('2011-04-10', :string).should eql('2011-04-10')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "cast '3' to '3'" do
|
|
60
|
+
Morpheus::TypeCaster.cast('3', :string).should eql('3')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "casts '10-04-2011T05:00:00Z' to '10-04-2011T05:00:00Z'" do
|
|
64
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :string).should eql('10-04-2011T05:00:00Z')
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "casts 'true' to 'true'" do
|
|
68
|
+
Morpheus::TypeCaster.cast('true', :string).should eql('true')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "casts 4 to '4'" do
|
|
72
|
+
Morpheus::TypeCaster.cast(4, :string).should eql('4')
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "casts true to 'true'" do
|
|
76
|
+
Morpheus::TypeCaster.cast(true, :string).should eql('true')
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "cast DateTime to '10-04-2011T05:00:00Z'" do
|
|
80
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :string).should eql('2011-04-10T05:00:00+00:00')
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "casts Date to '2011-04-10'" do
|
|
84
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :string).should eql('2011-04-10')
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "casts Time to '10-04-2011T05:00:00Z'" do
|
|
88
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :string).should eql('Sun Apr 10 05:00:00 UTC 2011')
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
context "when the type_class is Integer" do
|
|
94
|
+
|
|
95
|
+
it "casts 'hello' to 0" do
|
|
96
|
+
Morpheus::TypeCaster.cast('hello', :integer).should eql(0)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "casts '2011-04-10' to 10" do
|
|
100
|
+
Morpheus::TypeCaster.cast('2011-04-10', :integer).should eql(2011)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "cast '3' to 3" do
|
|
104
|
+
Morpheus::TypeCaster.cast('3', :integer).should eql(3)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "casts '10-04-2011T05:00:00Z' to 10" do
|
|
108
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :integer).should eql(10)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "casts 'true' to 0" do
|
|
112
|
+
Morpheus::TypeCaster.cast('true', :integer).should eql(0)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "casts 4 to 4" do
|
|
116
|
+
Morpheus::TypeCaster.cast(4, :integer).should eql(4)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "casts true to 1" do
|
|
120
|
+
Morpheus::TypeCaster.cast(true, :integer).should eql(1)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "casts false to 0" do
|
|
124
|
+
Morpheus::TypeCaster.cast(false, :integer).should eql(0)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "cast DateTime to 1302411600" do
|
|
128
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :integer).should eql(1302411600)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "casts Date to 1302393600" do
|
|
132
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :integer).should eql(1302418800)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "casts Time to 1302411600" do
|
|
136
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :integer).should eql(1302411600)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
context "when the type_class is DateTime" do
|
|
142
|
+
|
|
143
|
+
it "casts 'hello' to nil" do
|
|
144
|
+
Morpheus::TypeCaster.cast('hello', :datetime).should eql(nil)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "casts '2011-04-10' to DateTime" do
|
|
148
|
+
Morpheus::TypeCaster.cast('2011-04-10', :datetime).should eql(DateTime.parse('2011-04-10'))
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "cast '3' to nil" do
|
|
152
|
+
Morpheus::TypeCaster.cast('3', :datetime).should eql(nil)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "casts '10-04-2011T05:00:00Z' to DateTime" do
|
|
156
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :datetime).should eql(DateTime.parse('10-04-2011T05:00:00Z'))
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
it "casts 'true' to nil" do
|
|
160
|
+
Morpheus::TypeCaster.cast('true', :datetime).should eql(nil)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it "casts 4 to nil" do
|
|
164
|
+
Morpheus::TypeCaster.cast(4, :datetime).should eql(nil)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "casts true to nil" do
|
|
168
|
+
Morpheus::TypeCaster.cast(true, :datetime).should eql(nil)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "cast DateTime to DateTime" do
|
|
172
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :datetime).should eql(DateTime.parse('10-04-2011T05:00:00Z'))
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it "casts Date to DateTime" do
|
|
176
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :datetime).should eql(DateTime.parse('2011-04-10'))
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "casts Time to DateTime" do
|
|
180
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :datetime).should eql(DateTime.parse('10-04-2011T05:00:00Z'))
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
context "when the type_class is Date" do
|
|
186
|
+
|
|
187
|
+
it "casts 'hello' to nil" do
|
|
188
|
+
Morpheus::TypeCaster.cast('hello', :date).should eql(nil)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it "casts '2011-04-10' to Date" do
|
|
192
|
+
Morpheus::TypeCaster.cast('2011-04-10', :date).should eql(Date.parse('10-04-2011'))
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
it "cast '3' to nil" do
|
|
196
|
+
Morpheus::TypeCaster.cast('3', :date).should eql(nil)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it "casts '10-04-2011T05:00:00Z' to Date" do
|
|
200
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :date).should eql(Date.parse('10-04-2011T05:00:00Z'))
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
it "casts 'true' to nil" do
|
|
204
|
+
Morpheus::TypeCaster.cast('true', :date).should eql(nil)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it "casts 4 to nil" do
|
|
208
|
+
Morpheus::TypeCaster.cast(4, :date).should eql(nil)
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "casts true to nil" do
|
|
212
|
+
Morpheus::TypeCaster.cast(true, :date).should eql(nil)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it "cast DateTime to Date" do
|
|
216
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :date).should eql(Date.parse('10-04-2011T05:00:00Z'))
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
it "casts Date to Date" do
|
|
220
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :date).should eql(Date.parse('2011-04-10'))
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it "casts Time to Date" do
|
|
224
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :date).should eql(Date.parse('10-04-2011T05:00:00Z'))
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
context "when the type_class is Time" do
|
|
230
|
+
|
|
231
|
+
it "casts 'hello' to nil" do
|
|
232
|
+
Morpheus::TypeCaster.cast('hello', :time).should eql(nil)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it "casts '2011-04-10' to Time" do
|
|
236
|
+
Morpheus::TypeCaster.cast('2011-04-10', :time).should eql('2011-04-10'.to_time)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it "cast '3' to nil" do
|
|
240
|
+
Morpheus::TypeCaster.cast('3', :time).should eql(nil)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "casts '10-04-2011T05:00:00Z' to Time" do
|
|
244
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :time).should eql(Time.parse('10-04-2011T05:00:00Z'))
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
it "casts 'true' to nil" do
|
|
248
|
+
Morpheus::TypeCaster.cast('true', :time).should eql(nil)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
it "casts 4 to nil" do
|
|
252
|
+
Morpheus::TypeCaster.cast(4, :time).should eql(nil)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it "casts true to nil" do
|
|
256
|
+
Morpheus::TypeCaster.cast(true, :time).should eql(nil)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
it "cast DateTime to Time" do
|
|
260
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :time).should eql(Time.parse('10-04-2011T05:00:00Z'))
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
it "casts Date to Time" do
|
|
264
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :time).should eql(Time.parse('2011-04-10'))
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
it "casts Time to Time" do
|
|
268
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :time).should eql(Time.parse('10-04-2011T05:00:00Z'))
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
context "when the type_class is a boolean" do
|
|
274
|
+
|
|
275
|
+
it "casts 'hello' to true" do
|
|
276
|
+
Morpheus::TypeCaster.cast('hello', :boolean).should eql(true)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
it "casts '2011-04-10' to true" do
|
|
280
|
+
Morpheus::TypeCaster.cast('2011-04-10', :boolean).should eql(true)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
it "cast '3' to true" do
|
|
284
|
+
Morpheus::TypeCaster.cast('3', :boolean).should eql(true)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
it "casts '10-04-2011T05:00:00Z' to true" do
|
|
288
|
+
Morpheus::TypeCaster.cast('10-04-2011T05:00:00Z', :boolean).should eql(true)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
it "casts 'true' to true" do
|
|
292
|
+
Morpheus::TypeCaster.cast('true', :boolean).should eql(true)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it "casts 4 to true" do
|
|
296
|
+
Morpheus::TypeCaster.cast(4, :boolean).should eql(true)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
it "casts true to true" do
|
|
300
|
+
Morpheus::TypeCaster.cast(true, :boolean).should eql(true)
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
it "casts nil to false" do
|
|
304
|
+
Morpheus::TypeCaster.cast(nil, :boolean).should eql(false)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
it "casts 'false' to false" do
|
|
308
|
+
Morpheus::TypeCaster.cast('false', :boolean).should eql(false)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
it "casts 1 to true" do
|
|
312
|
+
Morpheus::TypeCaster.cast(1, :boolean).should eql(true)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
it "casts '0' to false" do
|
|
316
|
+
Morpheus::TypeCaster.cast('0', :boolean).should eql(false)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
it "cast DateTime to true" do
|
|
320
|
+
Morpheus::TypeCaster.cast(DateTime.parse('10-04-2011T05:00:00Z'), :boolean).should eql(true)
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
it "casts Date to true" do
|
|
324
|
+
Morpheus::TypeCaster.cast(Date.parse('2011-04-10'), :boolean).should eql(true)
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
it "casts Time to true" do
|
|
328
|
+
Morpheus::TypeCaster.cast(Time.parse('10-04-2011T05:00:00Z'), :boolean).should eql(true)
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
context "when the type_class is unknown" do
|
|
334
|
+
|
|
335
|
+
it "raises an error" do
|
|
336
|
+
lambda {
|
|
337
|
+
Morpheus::TypeCaster.cast(nil, :made_up_class)
|
|
338
|
+
}.should raise_error(Morpheus::UnrecognizedTypeCastClass, "Can't typecast to made_up_class!")
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
shared_examples_for "ActiveModel" do
|
|
2
|
+
require 'test/unit/assertions'
|
|
3
|
+
require 'active_model/lint'
|
|
4
|
+
include Test::Unit::Assertions
|
|
5
|
+
include ActiveModel::Lint::Tests
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@model = model_under_test
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
ActiveModel::Lint::Tests.public_instance_methods.map { |method| method.to_s }.grep(/^test/).each do |method|
|
|
12
|
+
example(method.gsub('_', ' ')) { send method }
|
|
13
|
+
end
|
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Configure Rails Envinronment
|
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
|
3
|
+
|
|
4
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
|
5
|
+
require "rails/test_help"
|
|
6
|
+
require "rspec/rails"
|
|
7
|
+
require 'pry'
|
|
8
|
+
|
|
9
|
+
ActionMailer::Base.delivery_method = :test
|
|
10
|
+
ActionMailer::Base.perform_deliveries = true
|
|
11
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
|
12
|
+
|
|
13
|
+
Rails.backtrace_cleaner.remove_silencers!
|
|
14
|
+
|
|
15
|
+
# Run any available migration
|
|
16
|
+
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
|
17
|
+
|
|
18
|
+
# Load support files
|
|
19
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
20
|
+
Dir["#{File.dirname(__FILE__)}/shared/**/*.rb"].each { |f| require f }
|
|
21
|
+
|
|
22
|
+
RSpec.configure do |config|
|
|
23
|
+
# Remove this line if you don't want RSpec's should and should_not
|
|
24
|
+
# methods or matchers
|
|
25
|
+
require 'rspec/expectations'
|
|
26
|
+
config.include RSpec::Matchers
|
|
27
|
+
|
|
28
|
+
# == Mock Framework
|
|
29
|
+
config.mock_with :rspec
|
|
30
|
+
|
|
31
|
+
config.color_enabled = true
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Morpheus::Configuration.host = 'http://localhost:3000'
|
|
2
|
+
Morpheus::Configuration.hydra = Typhoeus::Hydra.new
|
|
3
|
+
Morpheus::Configuration.allow_net_connect = false
|
|
4
|
+
|
|
5
|
+
module MorpheusHelper
|
|
6
|
+
|
|
7
|
+
def build_morpheus_response(status, content, errors = nil)
|
|
8
|
+
body = {
|
|
9
|
+
:status => status,
|
|
10
|
+
:content => content
|
|
11
|
+
}
|
|
12
|
+
body.merge!(errors) if errors
|
|
13
|
+
Morpheus::Response.new(:code => status, :headers => "", :body => body.to_json, :time => 0.3)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
RSpec.configure do |config|
|
|
19
|
+
config.include(MorpheusHelper)
|
|
20
|
+
|
|
21
|
+
config.before(:each) do
|
|
22
|
+
Morpheus::Configuration.hydra.clear_stubs
|
|
23
|
+
Morpheus::RequestQueue.queue.clear
|
|
24
|
+
Morpheus::RequestCache.cache.clear
|
|
25
|
+
end
|
|
26
|
+
end
|