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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.markdown +5 -0
  3. data/Gemfile +1 -1
  4. data/README.markdown +12 -8
  5. data/gemfiles/Gemfile.rails3-0 +2 -0
  6. data/gemfiles/Gemfile.rails3-2 +1 -0
  7. data/lib/roar-rails.rb +4 -6
  8. data/lib/roar/rails/controller_additions.rb +26 -10
  9. data/lib/roar/rails/hal.rb +3 -3
  10. data/lib/roar/rails/railtie.rb +5 -0
  11. data/lib/roar/rails/responder.rb +1 -1
  12. data/lib/roar/rails/validations_representer.rb +3 -3
  13. data/lib/roar/rails/version.rb +1 -1
  14. data/roar-rails.gemspec +3 -3
  15. data/test/consume_test.rb +64 -2
  16. data/test/dummy/app/representers/band_representer.rb +2 -2
  17. data/test/dummy/app/representers/singer_alias_representer.rb +1 -1
  18. data/test/dummy/app/representers/singer_representer.rb +2 -2
  19. data/test/json_hal_renderer_test.rb +5 -13
  20. data/test/render_test.rb +1 -1
  21. data/test/responder_test.rb +44 -5
  22. data/test/test_helper.rb +9 -0
  23. metadata +66 -52
  24. data/test/dummy/Rakefile +0 -7
  25. data/test/dummy/app/helpers/application_helper.rb +0 -2
  26. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  27. data/test/dummy/app/views/musician/featured.html.erb +0 -1
  28. data/test/dummy/app/views/musician/featured_with_block.html.erb +0 -4
  29. data/test/dummy/app/views/musician/hamlet.html.haml +0 -1
  30. data/test/dummy/config/locales/en.yml +0 -5
  31. data/test/dummy/public/404.html +0 -26
  32. data/test/dummy/public/422.html +0 -26
  33. data/test/dummy/public/500.html +0 -26
  34. data/test/dummy/public/favicon.ico +0 -0
  35. data/test/dummy/public/javascripts/application.js +0 -2
  36. data/test/dummy/public/javascripts/controls.js +0 -965
  37. data/test/dummy/public/javascripts/dragdrop.js +0 -974
  38. data/test/dummy/public/javascripts/effects.js +0 -1123
  39. data/test/dummy/public/javascripts/prototype.js +0 -4874
  40. data/test/dummy/public/javascripts/rails.js +0 -118
  41. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  42. data/test/dummy/script/rails +0 -6
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  module SingersRepresenter
4
- include Roar::Representer::JSON
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::Representer::XML
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::Representer::JSON
260
- include Roar::Representer::JSON::HAL
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::Representer::JSON
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.1.6
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-05-31 00:00:00.000000000 Z
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.11.13
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: 0.11.13
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: '0'
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: '0'
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: '4.0'
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: '4.0'
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,2 +0,0 @@
1
- module ApplicationHelper
2
- end
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Dummy</title>
5
- <%= stylesheet_link_tag :all %>
6
- <%= javascript_include_tag :defaults %>
7
- <%= csrf_meta_tag %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
@@ -1 +0,0 @@
1
- <%= render_cell :bassist, :provoke %>
@@ -1,4 +0,0 @@
1
- <% flag = false %>
2
- <%= render_cell :bassist, :play do |cell|
3
- flag = cell.class
4
- end %> from <%= flag %>
@@ -1 +0,0 @@
1
- = render_cell :bassist, :provoke
@@ -1,5 +0,0 @@
1
- # Sample localization file for English. Add more files in this directory for other locales.
2
- # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
-
4
- en:
5
- hello: "Hello world"