roar-rails 0.1.6 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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"