roar-rails 0.1.6 → 1.0.0
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/CHANGES.markdown +5 -0
- data/Gemfile +1 -1
- data/README.markdown +12 -8
- data/gemfiles/Gemfile.rails3-0 +2 -0
- data/gemfiles/Gemfile.rails3-2 +1 -0
- data/lib/roar-rails.rb +4 -6
- data/lib/roar/rails/controller_additions.rb +26 -10
- data/lib/roar/rails/hal.rb +3 -3
- data/lib/roar/rails/railtie.rb +5 -0
- data/lib/roar/rails/responder.rb +1 -1
- data/lib/roar/rails/validations_representer.rb +3 -3
- data/lib/roar/rails/version.rb +1 -1
- data/roar-rails.gemspec +3 -3
- data/test/consume_test.rb +64 -2
- data/test/dummy/app/representers/band_representer.rb +2 -2
- data/test/dummy/app/representers/singer_alias_representer.rb +1 -1
- data/test/dummy/app/representers/singer_representer.rb +2 -2
- data/test/json_hal_renderer_test.rb +5 -13
- data/test/render_test.rb +1 -1
- data/test/responder_test.rb +44 -5
- data/test/test_helper.rb +9 -0
- metadata +66 -52
- data/test/dummy/Rakefile +0 -7
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/app/views/musician/featured.html.erb +0 -1
- data/test/dummy/app/views/musician/featured_with_block.html.erb +0 -4
- data/test/dummy/app/views/musician/hamlet.html.haml +0 -1
- data/test/dummy/config/locales/en.yml +0 -5
- data/test/dummy/public/404.html +0 -26
- data/test/dummy/public/422.html +0 -26
- data/test/dummy/public/500.html +0 -26
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/javascripts/application.js +0 -2
- data/test/dummy/public/javascripts/controls.js +0 -965
- data/test/dummy/public/javascripts/dragdrop.js +0 -974
- data/test/dummy/public/javascripts/effects.js +0 -1123
- data/test/dummy/public/javascripts/prototype.js +0 -4874
- data/test/dummy/public/javascripts/rails.js +0 -118
- data/test/dummy/public/stylesheets/.gitkeep +0 -0
- data/test/dummy/script/rails +0 -6
data/test/responder_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
module SingersRepresenter
|
4
|
-
include Roar::
|
4
|
+
include Roar::JSON
|
5
5
|
|
6
6
|
collection :singers, :extend => SingerRepresenter
|
7
7
|
def singers
|
@@ -134,7 +134,7 @@ class ResponderTest < ActionController::TestCase
|
|
134
134
|
|
135
135
|
class XmlResponseTest < ResponderTest
|
136
136
|
module SingerRepresenter
|
137
|
-
include Roar::
|
137
|
+
include Roar::XML
|
138
138
|
|
139
139
|
property :name
|
140
140
|
self.representation_wrap = :singer
|
@@ -256,8 +256,8 @@ class ResponderTest < ActionController::TestCase
|
|
256
256
|
|
257
257
|
class ControllerWithDecoratorTest < ResponderTest
|
258
258
|
class SingerRepresentation < Representable::Decorator
|
259
|
-
include Roar::
|
260
|
-
include Roar::
|
259
|
+
include Roar::JSON
|
260
|
+
include Roar::JSON::HAL
|
261
261
|
|
262
262
|
property :name
|
263
263
|
|
@@ -282,6 +282,8 @@ class ResponderTest < ActionController::TestCase
|
|
282
282
|
test "parsing uses decorating representer" do # FIXME: move to controller_test.
|
283
283
|
created_singer = nil
|
284
284
|
|
285
|
+
@request.env['CONTENT_TYPE'] = 'application/json'
|
286
|
+
|
285
287
|
put singer.to_json do
|
286
288
|
created_singer = consume!(Singer.new)
|
287
289
|
respond_with created_singer
|
@@ -295,7 +297,7 @@ class ResponderTest < ActionController::TestCase
|
|
295
297
|
class PassingUserOptionsTest < ResponderTest
|
296
298
|
# FIXME: should be in generic roar-rails test.
|
297
299
|
module DynamicSingerRepresenter
|
298
|
-
include Roar::
|
300
|
+
include Roar::JSON
|
299
301
|
property :name, :setter => lambda { |val, opts| self.name = "#{opts[:title]} #{val}" },
|
300
302
|
:getter => lambda { |opts| "#{opts[:title]} #{name}" }
|
301
303
|
end
|
@@ -325,6 +327,8 @@ class ResponderTest < ActionController::TestCase
|
|
325
327
|
test "passes options in #consume!" do
|
326
328
|
created_singer = nil
|
327
329
|
|
330
|
+
@request.env['CONTENT_TYPE'] = 'application/json'
|
331
|
+
|
328
332
|
put singer.to_json do
|
329
333
|
created_singer = consume!(Singer.new, :title => "Mr.")
|
330
334
|
respond_with created_singer
|
@@ -351,6 +355,39 @@ class ResponderTest < ActionController::TestCase
|
|
351
355
|
end
|
352
356
|
end
|
353
357
|
|
358
|
+
class StatusCodeTest < ResponderTest
|
359
|
+
class MusicianController < BaseController
|
360
|
+
represents :json, Singer
|
361
|
+
respond_to :json
|
362
|
+
|
363
|
+
def create
|
364
|
+
singer = Singer.new('asdf')
|
365
|
+
respond_with singer, location: nil
|
366
|
+
end
|
367
|
+
|
368
|
+
def update
|
369
|
+
singer = Singer.new('asdf')
|
370
|
+
respond_with singer
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
tests MusicianController
|
375
|
+
|
376
|
+
test "sets the right status code for a POST" do
|
377
|
+
post :create, "{}", format: :json
|
378
|
+
assert_equal 201, response.status
|
379
|
+
end
|
380
|
+
|
381
|
+
# This behavior only applies to Rails >= 3.2
|
382
|
+
|
383
|
+
if Rails.version >= "3.2"
|
384
|
+
test "sets the right status code for a PUT" do
|
385
|
+
default_put :update, "{}", format: :json
|
386
|
+
assert_equal 204, response.status
|
387
|
+
end
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
354
391
|
|
355
392
|
|
356
393
|
def get(format=:json, &block)
|
@@ -361,6 +398,8 @@ class ResponderTest < ActionController::TestCase
|
|
361
398
|
super :execute, :format => format
|
362
399
|
end
|
363
400
|
|
401
|
+
# Keep access to the original put method
|
402
|
+
alias_method :default_put, :put
|
364
403
|
def put(body="", format=:json, &block)
|
365
404
|
@controller.instance_eval do
|
366
405
|
@block = block
|
data/test/test_helper.rb
CHANGED
@@ -7,3 +7,12 @@ require "rails/test_help" # adds stuff like @routes, etc.
|
|
7
7
|
require "roar/rails/test_case"
|
8
8
|
|
9
9
|
Singer = Struct.new(:name)
|
10
|
+
|
11
|
+
# Rails.backtrace_cleaner.remove_silencers!
|
12
|
+
|
13
|
+
Mime::Type.register 'application/hal+json', :hal
|
14
|
+
|
15
|
+
ActionController.add_renderer :hal do |js, options|
|
16
|
+
self.content_type ||= Mime::HAL
|
17
|
+
js.is_a?(String) ? js : js.to_json
|
18
|
+
end
|
metadata
CHANGED
@@ -1,153 +1,159 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roar-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roar
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 1.0.0
|
20
|
+
- - "<="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.1.0
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.0
|
30
|
+
- - "<="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: 1.1.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: test_xml
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
39
|
version: 0.1.6
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
|
-
- -
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: 0.1.6
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: actionpack
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- -
|
51
|
+
- - ">="
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
|
-
- -
|
58
|
+
- - ">="
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: railties
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- -
|
65
|
+
- - ">="
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: 3.0.0
|
62
68
|
type: :runtime
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- -
|
72
|
+
- - ">="
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: 3.0.0
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: uber
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
|
-
- -
|
79
|
+
- - ">="
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
81
|
+
version: 0.0.5
|
76
82
|
type: :runtime
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
|
-
- -
|
86
|
+
- - ">="
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
88
|
+
version: 0.0.5
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: minitest
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
|
-
- -
|
93
|
+
- - ">="
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
95
|
+
version: '0'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
|
-
- -
|
100
|
+
- - ">="
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
102
|
+
version: '0'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
104
|
name: activemodel
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- -
|
107
|
+
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
109
|
version: '0'
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- -
|
114
|
+
- - ">="
|
109
115
|
- !ruby/object:Gem::Version
|
110
116
|
version: '0'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
118
|
name: activerecord
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
|
-
- -
|
121
|
+
- - ">="
|
116
122
|
- !ruby/object:Gem::Version
|
117
123
|
version: '0'
|
118
124
|
type: :development
|
119
125
|
prerelease: false
|
120
126
|
version_requirements: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
|
-
- -
|
128
|
+
- - ">="
|
123
129
|
- !ruby/object:Gem::Version
|
124
130
|
version: '0'
|
125
131
|
- !ruby/object:Gem::Dependency
|
126
132
|
name: sqlite3
|
127
133
|
requirement: !ruby/object:Gem::Requirement
|
128
134
|
requirements:
|
129
|
-
- -
|
135
|
+
- - ">="
|
130
136
|
- !ruby/object:Gem::Version
|
131
137
|
version: '0'
|
132
138
|
type: :development
|
133
139
|
prerelease: false
|
134
140
|
version_requirements: !ruby/object:Gem::Requirement
|
135
141
|
requirements:
|
136
|
-
- -
|
142
|
+
- - ">="
|
137
143
|
- !ruby/object:Gem::Version
|
138
144
|
version: '0'
|
139
145
|
- !ruby/object:Gem::Dependency
|
140
146
|
name: tzinfo
|
141
147
|
requirement: !ruby/object:Gem::Requirement
|
142
148
|
requirements:
|
143
|
-
- -
|
149
|
+
- - ">="
|
144
150
|
- !ruby/object:Gem::Version
|
145
151
|
version: '0'
|
146
152
|
type: :development
|
147
153
|
prerelease: false
|
148
154
|
version_requirements: !ruby/object:Gem::Requirement
|
149
155
|
requirements:
|
150
|
-
- -
|
156
|
+
- - ">="
|
151
157
|
- !ruby/object:Gem::Version
|
152
158
|
version: '0'
|
153
159
|
description: Rails extensions for using Roar in the popular web framework.
|
@@ -157,8 +163,8 @@ executables: []
|
|
157
163
|
extensions: []
|
158
164
|
extra_rdoc_files: []
|
159
165
|
files:
|
160
|
-
- .gitignore
|
161
|
-
- .travis.yml
|
166
|
+
- ".gitignore"
|
167
|
+
- ".travis.yml"
|
162
168
|
- CHANGES.markdown
|
163
169
|
- Gemfile
|
164
170
|
- LICENSE
|
@@ -189,19 +195,13 @@ files:
|
|
189
195
|
- lib/roar/rails/version.rb
|
190
196
|
- roar-rails.gemspec
|
191
197
|
- test/consume_test.rb
|
192
|
-
- test/dummy/Rakefile
|
193
198
|
- test/dummy/app/controllers/application_controller.rb
|
194
199
|
- test/dummy/app/controllers/bands_controller.rb
|
195
200
|
- test/dummy/app/controllers/singers_controller.rb
|
196
|
-
- test/dummy/app/helpers/application_helper.rb
|
197
201
|
- test/dummy/app/models/artist.rb
|
198
202
|
- test/dummy/app/representers/band_representer.rb
|
199
203
|
- test/dummy/app/representers/singer_alias_representer.rb
|
200
204
|
- test/dummy/app/representers/singer_representer.rb
|
201
|
-
- test/dummy/app/views/layouts/application.html.erb
|
202
|
-
- test/dummy/app/views/musician/featured.html.erb
|
203
|
-
- test/dummy/app/views/musician/featured_with_block.html.erb
|
204
|
-
- test/dummy/app/views/musician/hamlet.html.haml
|
205
205
|
- test/dummy/config.ru
|
206
206
|
- test/dummy/config/application.rb
|
207
207
|
- test/dummy/config/boot.rb
|
@@ -210,21 +210,8 @@ files:
|
|
210
210
|
- test/dummy/config/environments/development.rb
|
211
211
|
- test/dummy/config/environments/production.rb
|
212
212
|
- test/dummy/config/environments/test.rb
|
213
|
-
- test/dummy/config/locales/en.yml
|
214
213
|
- test/dummy/config/routes.rb
|
215
214
|
- test/dummy/db/test.sqlite3
|
216
|
-
- test/dummy/public/404.html
|
217
|
-
- test/dummy/public/422.html
|
218
|
-
- test/dummy/public/500.html
|
219
|
-
- test/dummy/public/favicon.ico
|
220
|
-
- test/dummy/public/javascripts/application.js
|
221
|
-
- test/dummy/public/javascripts/controls.js
|
222
|
-
- test/dummy/public/javascripts/dragdrop.js
|
223
|
-
- test/dummy/public/javascripts/effects.js
|
224
|
-
- test/dummy/public/javascripts/prototype.js
|
225
|
-
- test/dummy/public/javascripts/rails.js
|
226
|
-
- test/dummy/public/stylesheets/.gitkeep
|
227
|
-
- test/dummy/script/rails
|
228
215
|
- test/formats_test.rb
|
229
216
|
- test/json_hal_renderer_test.rb
|
230
217
|
- test/render_test.rb
|
@@ -243,12 +230,12 @@ require_paths:
|
|
243
230
|
- lib
|
244
231
|
required_ruby_version: !ruby/object:Gem::Requirement
|
245
232
|
requirements:
|
246
|
-
- -
|
233
|
+
- - ">="
|
247
234
|
- !ruby/object:Gem::Version
|
248
235
|
version: '0'
|
249
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
237
|
requirements:
|
251
|
-
- -
|
238
|
+
- - ">="
|
252
239
|
- !ruby/object:Gem::Version
|
253
240
|
version: '0'
|
254
241
|
requirements: []
|
@@ -257,4 +244,31 @@ rubygems_version: 2.2.2
|
|
257
244
|
signing_key:
|
258
245
|
specification_version: 4
|
259
246
|
summary: Use Roar in Rails.
|
260
|
-
test_files:
|
247
|
+
test_files:
|
248
|
+
- test/consume_test.rb
|
249
|
+
- test/dummy/app/controllers/application_controller.rb
|
250
|
+
- test/dummy/app/controllers/bands_controller.rb
|
251
|
+
- test/dummy/app/controllers/singers_controller.rb
|
252
|
+
- test/dummy/app/models/artist.rb
|
253
|
+
- test/dummy/app/representers/band_representer.rb
|
254
|
+
- test/dummy/app/representers/singer_alias_representer.rb
|
255
|
+
- test/dummy/app/representers/singer_representer.rb
|
256
|
+
- test/dummy/config.ru
|
257
|
+
- test/dummy/config/application.rb
|
258
|
+
- test/dummy/config/boot.rb
|
259
|
+
- test/dummy/config/database.yml
|
260
|
+
- test/dummy/config/environment.rb
|
261
|
+
- test/dummy/config/environments/development.rb
|
262
|
+
- test/dummy/config/environments/production.rb
|
263
|
+
- test/dummy/config/environments/test.rb
|
264
|
+
- test/dummy/config/routes.rb
|
265
|
+
- test/dummy/db/test.sqlite3
|
266
|
+
- test/formats_test.rb
|
267
|
+
- test/json_hal_renderer_test.rb
|
268
|
+
- test/render_test.rb
|
269
|
+
- test/representer_generator_test.rb
|
270
|
+
- test/representer_test.rb
|
271
|
+
- test/responder_test.rb
|
272
|
+
- test/test_case_test.rb
|
273
|
+
- test/test_helper.rb
|
274
|
+
- test/validations_test.rb
|
data/test/dummy/Rakefile
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
2
|
-
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
3
|
-
|
4
|
-
require File.expand_path('../config/application', __FILE__)
|
5
|
-
require 'rake'
|
6
|
-
|
7
|
-
Rails::Application.load_tasks
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render_cell :bassist, :provoke %>
|
@@ -1 +0,0 @@
|
|
1
|
-
= render_cell :bassist, :provoke
|