rabl 0.13.0 → 0.13.1

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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +4 -0
  4. data/Gemfile +2 -1
  5. data/Rakefile +2 -2
  6. data/fixtures/ashared/views_rails_3/users/phone_number.xml.rabl +1 -0
  7. data/fixtures/padrino_test/app/views +1 -0
  8. data/fixtures/padrino_test/db/migrate +1 -0
  9. data/fixtures/padrino_test/models +1 -0
  10. data/fixtures/padrino_test/test/app/controllers/posts_controller_test.rb +1 -0
  11. data/fixtures/padrino_test/test/app/controllers/users_controller_test.rb +1 -0
  12. data/fixtures/rails2/app/models +1 -0
  13. data/fixtures/rails2/app/views +1 -0
  14. data/fixtures/rails2/db/migrate +1 -0
  15. data/fixtures/rails2/test/functionals/posts_controller_test.rb +1 -0
  16. data/fixtures/rails2/test/functionals/users_controller_test.rb +1 -0
  17. data/fixtures/rails3/app/models +1 -0
  18. data/fixtures/rails3/app/views +1 -0
  19. data/fixtures/rails3/db/migrate +1 -0
  20. data/fixtures/rails3/test/functional/posts_controller_test.rb +1 -0
  21. data/fixtures/rails3/test/functional/users_controller_test.rb +1 -0
  22. data/fixtures/rails3_2/app/models +1 -0
  23. data/fixtures/rails3_2/app/views +1 -0
  24. data/fixtures/rails3_2/db/migrate +1 -0
  25. data/fixtures/rails3_2/test/functional/posts_controller_test.rb +1 -0
  26. data/fixtures/rails3_2/test/functional/users_controller_test.rb +1 -0
  27. data/fixtures/rails4/app/models +1 -0
  28. data/fixtures/rails4/app/views +1 -0
  29. data/fixtures/rails4/db/migrate +1 -0
  30. data/fixtures/rails4/test/functional/posts_controller_test.rb +1 -0
  31. data/fixtures/rails4/test/functional/users_controller_test.rb +1 -0
  32. data/fixtures/rails5/.gitignore +21 -0
  33. data/fixtures/rails5/Gemfile +52 -0
  34. data/fixtures/rails5/README.md +24 -0
  35. data/fixtures/rails5/Rakefile +13 -0
  36. data/fixtures/rails5/app/assets/config/manifest.js +3 -0
  37. data/fixtures/rails5/app/assets/images/.keep +0 -0
  38. data/fixtures/rails5/app/assets/javascripts/application.js +16 -0
  39. data/fixtures/rails5/app/assets/javascripts/cable.js +13 -0
  40. data/fixtures/rails5/app/assets/javascripts/channels/.keep +0 -0
  41. data/fixtures/rails5/app/assets/stylesheets/application.css +15 -0
  42. data/fixtures/rails5/app/channels/application_cable/channel.rb +4 -0
  43. data/fixtures/rails5/app/channels/application_cable/connection.rb +4 -0
  44. data/fixtures/rails5/app/controllers/application_controller.rb +3 -0
  45. data/fixtures/rails5/app/controllers/concerns/.keep +0 -0
  46. data/fixtures/rails5/app/controllers/posts_controller.rb +17 -0
  47. data/fixtures/rails5/app/controllers/users_controller.rb +11 -0
  48. data/fixtures/rails5/app/helpers/application_helper.rb +5 -0
  49. data/fixtures/rails5/app/jobs/application_job.rb +2 -0
  50. data/fixtures/rails5/app/mailers/application_mailer.rb +4 -0
  51. data/fixtures/rails5/app/models +1 -0
  52. data/fixtures/rails5/app/views +1 -0
  53. data/fixtures/rails5/bin/bundle +3 -0
  54. data/fixtures/rails5/bin/rails +9 -0
  55. data/fixtures/rails5/bin/rake +9 -0
  56. data/fixtures/rails5/bin/setup +34 -0
  57. data/fixtures/rails5/bin/spring +15 -0
  58. data/fixtures/rails5/bin/update +29 -0
  59. data/fixtures/rails5/config.ru +5 -0
  60. data/fixtures/rails5/config/application.rb +15 -0
  61. data/fixtures/rails5/config/boot.rb +3 -0
  62. data/fixtures/rails5/config/cable.yml +9 -0
  63. data/fixtures/rails5/config/database.yml +25 -0
  64. data/fixtures/rails5/config/environment.rb +5 -0
  65. data/fixtures/rails5/config/environments/development.rb +54 -0
  66. data/fixtures/rails5/config/environments/production.rb +86 -0
  67. data/fixtures/rails5/config/environments/test.rb +42 -0
  68. data/fixtures/rails5/config/initializers/application_controller_renderer.rb +6 -0
  69. data/fixtures/rails5/config/initializers/assets.rb +11 -0
  70. data/fixtures/rails5/config/initializers/backtrace_silencers.rb +7 -0
  71. data/fixtures/rails5/config/initializers/cookies_serializer.rb +5 -0
  72. data/fixtures/rails5/config/initializers/filter_parameter_logging.rb +4 -0
  73. data/fixtures/rails5/config/initializers/inflections.rb +16 -0
  74. data/fixtures/rails5/config/initializers/mime_types.rb +4 -0
  75. data/fixtures/rails5/config/initializers/new_framework_defaults.rb +24 -0
  76. data/fixtures/rails5/config/initializers/session_store.rb +3 -0
  77. data/fixtures/rails5/config/initializers/wrap_parameters.rb +14 -0
  78. data/fixtures/rails5/config/locales/en.yml +23 -0
  79. data/fixtures/rails5/config/puma.rb +47 -0
  80. data/fixtures/rails5/config/routes.rb +8 -0
  81. data/fixtures/rails5/config/secrets.yml +22 -0
  82. data/fixtures/rails5/config/spring.rb +6 -0
  83. data/fixtures/rails5/db/migrate +1 -0
  84. data/fixtures/rails5/db/schema.rb +41 -0
  85. data/fixtures/rails5/db/seeds.rb +7 -0
  86. data/fixtures/rails5/lib/assets/.keep +0 -0
  87. data/fixtures/rails5/lib/tasks/.keep +0 -0
  88. data/fixtures/rails5/log/.keep +0 -0
  89. data/fixtures/rails5/public/404.html +67 -0
  90. data/fixtures/rails5/public/422.html +67 -0
  91. data/fixtures/rails5/public/500.html +66 -0
  92. data/fixtures/rails5/public/apple-touch-icon-precomposed.png +0 -0
  93. data/fixtures/rails5/public/apple-touch-icon.png +0 -0
  94. data/fixtures/rails5/public/favicon.ico +0 -0
  95. data/fixtures/rails5/public/robots.txt +5 -0
  96. data/fixtures/rails5/test/controllers/.keep +0 -0
  97. data/fixtures/rails5/test/fixtures/.keep +0 -0
  98. data/fixtures/rails5/test/fixtures/files/.keep +0 -0
  99. data/fixtures/rails5/test/helpers/.keep +0 -0
  100. data/fixtures/rails5/test/integration/.keep +0 -0
  101. data/fixtures/rails5/test/mailers/.keep +0 -0
  102. data/fixtures/rails5/test/models/.keep +0 -0
  103. data/fixtures/rails5/test/test_helper.rb +26 -0
  104. data/fixtures/rails5/tmp/.keep +0 -0
  105. data/fixtures/rails5/vendor/assets/javascripts/.keep +0 -0
  106. data/fixtures/rails5/vendor/assets/stylesheets/.keep +0 -0
  107. data/fixtures/sinatra_test/db/migrate +1 -0
  108. data/fixtures/sinatra_test/models +1 -0
  109. data/fixtures/sinatra_test/test/functional/posts_controller_test.rb +1 -0
  110. data/fixtures/sinatra_test/test/functional/users_controller_test.rb +1 -0
  111. data/fixtures/sinatra_test/views +1 -0
  112. data/lib/rabl.rb +1 -1
  113. data/lib/rabl/configuration.rb +1 -1
  114. data/lib/rabl/digestor.rb +3 -37
  115. data/lib/rabl/digestor/rails3.rb +10 -0
  116. data/lib/rabl/digestor/rails41.rb +10 -0
  117. data/lib/rabl/digestor/rails5.rb +4 -0
  118. data/lib/rabl/engine.rb +1 -1
  119. data/lib/rabl/version.rb +1 -1
  120. metadata +99 -3
  121. data/fixtures/ashared/views_rails_3/users/phone_number.xml.rabl +0 -8
  122. data/fixtures/padrino_test/test/app/controllers/posts_controller_test.rb +0 -108
  123. data/fixtures/padrino_test/test/app/controllers/users_controller_test.rb +0 -87
  124. data/fixtures/rails2/test/functionals/posts_controller_test.rb +0 -108
  125. data/fixtures/rails2/test/functionals/users_controller_test.rb +0 -87
  126. data/fixtures/rails3/test/functional/posts_controller_test.rb +0 -108
  127. data/fixtures/rails3/test/functional/users_controller_test.rb +0 -87
  128. data/fixtures/rails3_2/test/functional/posts_controller_test.rb +0 -263
  129. data/fixtures/rails3_2/test/functional/users_controller_test.rb +0 -87
  130. data/fixtures/rails4/test/functional/posts_controller_test.rb +0 -248
  131. data/fixtures/rails4/test/functional/users_controller_test.rb +0 -87
  132. data/fixtures/sinatra_test/test/functional/posts_controller_test.rb +0 -108
  133. data/fixtures/sinatra_test/test/functional/users_controller_test.rb +0 -87
@@ -0,0 +1,10 @@
1
+ module Rabl
2
+ class Digestor < ActionView::Digestor
3
+ def self.digest(name, format, finder, options = {})
4
+ cache_key = [name, format] + Array.wrap(options[:dependencies])
5
+ @@cache[cache_key.join('.')] ||= begin
6
+ Digestor.new(name, format, finder, options).digest
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Rabl
2
+ class Digestor < ActionView::Digestor
3
+ def self.digest(options = {})
4
+ cache_key = [options[:name]] + Array.wrap(options[:dependencies])
5
+ @@cache[cache_key.join('.')] ||= begin
6
+ Digestor.new({ :name => options[:name], :finder => options[:finder] }.merge!(options)).digest
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,4 @@
1
+ module Rabl
2
+ class Digestor < ActionView::Digestor
3
+ end
4
+ end
@@ -417,5 +417,5 @@ module Rabl
417
417
  instance_eval(@_source)
418
418
  end
419
419
  end
420
- end
420
+ end
421
421
  end
@@ -1,3 +1,3 @@
1
1
  module Rabl
2
- VERSION = "0.13.0"
2
+ VERSION = "0.13.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Esquenazi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-15 00:00:00.000000000 Z
11
+ date: 2016-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -194,11 +194,14 @@ files:
194
194
  - fixtures/padrino_test/app/controllers/users.rb
195
195
  - fixtures/padrino_test/app/helpers/posts_helper.rb
196
196
  - fixtures/padrino_test/app/helpers/users_helper.rb
197
+ - fixtures/padrino_test/app/views
197
198
  - fixtures/padrino_test/config.ru
198
199
  - fixtures/padrino_test/config/apps.rb
199
200
  - fixtures/padrino_test/config/boot.rb
200
201
  - fixtures/padrino_test/config/database.rb
202
+ - fixtures/padrino_test/db/migrate
201
203
  - fixtures/padrino_test/db/schema.rb
204
+ - fixtures/padrino_test/models
202
205
  - fixtures/padrino_test/public/favicon.ico
203
206
  - fixtures/padrino_test/test/app/controllers/posts_controller_test.rb
204
207
  - fixtures/padrino_test/test/app/controllers/users_controller_test.rb
@@ -213,6 +216,8 @@ files:
213
216
  - fixtures/rails2/app/helpers/application_helper.rb
214
217
  - fixtures/rails2/app/helpers/posts_helper.rb
215
218
  - fixtures/rails2/app/helpers/users_helper.rb
219
+ - fixtures/rails2/app/models
220
+ - fixtures/rails2/app/views
216
221
  - fixtures/rails2/config/boot.rb
217
222
  - fixtures/rails2/config/database.yml
218
223
  - fixtures/rails2/config/environment.rb
@@ -228,6 +233,7 @@ files:
228
233
  - fixtures/rails2/config/locales/en.yml
229
234
  - fixtures/rails2/config/preinitializer.rb
230
235
  - fixtures/rails2/config/routes.rb
236
+ - fixtures/rails2/db/migrate
231
237
  - fixtures/rails2/db/schema.rb
232
238
  - fixtures/rails2/db/seeds.rb
233
239
  - fixtures/rails2/public/404.html
@@ -256,6 +262,8 @@ files:
256
262
  - fixtures/rails3/app/controllers/application_controller.rb
257
263
  - fixtures/rails3/app/controllers/posts_controller.rb
258
264
  - fixtures/rails3/app/controllers/users_controller.rb
265
+ - fixtures/rails3/app/models
266
+ - fixtures/rails3/app/views
259
267
  - fixtures/rails3/config.ru
260
268
  - fixtures/rails3/config/application.rb
261
269
  - fixtures/rails3/config/boot.rb
@@ -271,6 +279,7 @@ files:
271
279
  - fixtures/rails3/config/initializers/session_store.rb
272
280
  - fixtures/rails3/config/locales/en.yml
273
281
  - fixtures/rails3/config/routes.rb
282
+ - fixtures/rails3/db/migrate
274
283
  - fixtures/rails3/db/seeds.rb
275
284
  - fixtures/rails3/lib/tasks/.gitkeep
276
285
  - fixtures/rails3/public/404.html
@@ -303,6 +312,8 @@ files:
303
312
  - fixtures/rails3_2/app/helpers/posts_helper.rb
304
313
  - fixtures/rails3_2/app/helpers/users_helper.rb
305
314
  - fixtures/rails3_2/app/mailers/.gitkeep
315
+ - fixtures/rails3_2/app/models
316
+ - fixtures/rails3_2/app/views
306
317
  - fixtures/rails3_2/config.ru
307
318
  - fixtures/rails3_2/config/application.rb
308
319
  - fixtures/rails3_2/config/boot.rb
@@ -319,6 +330,7 @@ files:
319
330
  - fixtures/rails3_2/config/initializers/wrap_parameters.rb
320
331
  - fixtures/rails3_2/config/locales/en.yml
321
332
  - fixtures/rails3_2/config/routes.rb
333
+ - fixtures/rails3_2/db/migrate
322
334
  - fixtures/rails3_2/db/schema.rb
323
335
  - fixtures/rails3_2/db/seeds.rb
324
336
  - fixtures/rails3_2/doc/README_FOR_APP
@@ -360,6 +372,8 @@ files:
360
372
  - fixtures/rails4/app/controllers/users_controller.rb
361
373
  - fixtures/rails4/app/helpers/application_helper.rb
362
374
  - fixtures/rails4/app/mailers/.keep
375
+ - fixtures/rails4/app/models
376
+ - fixtures/rails4/app/views
363
377
  - fixtures/rails4/bin/bundle
364
378
  - fixtures/rails4/bin/rails
365
379
  - fixtures/rails4/bin/rake
@@ -380,6 +394,7 @@ files:
380
394
  - fixtures/rails4/config/initializers/wrap_parameters.rb
381
395
  - fixtures/rails4/config/locales/en.yml
382
396
  - fixtures/rails4/config/routes.rb
397
+ - fixtures/rails4/db/migrate
383
398
  - fixtures/rails4/db/seeds.rb
384
399
  - fixtures/rails4/lib/assets/.keep
385
400
  - fixtures/rails4/lib/tasks/.keep
@@ -400,18 +415,99 @@ files:
400
415
  - fixtures/rails4/test/test_helper.rb
401
416
  - fixtures/rails4/vendor/assets/javascripts/.keep
402
417
  - fixtures/rails4/vendor/assets/stylesheets/.keep
418
+ - fixtures/rails5/.gitignore
419
+ - fixtures/rails5/Gemfile
420
+ - fixtures/rails5/README.md
421
+ - fixtures/rails5/Rakefile
422
+ - fixtures/rails5/app/assets/config/manifest.js
423
+ - fixtures/rails5/app/assets/images/.keep
424
+ - fixtures/rails5/app/assets/javascripts/application.js
425
+ - fixtures/rails5/app/assets/javascripts/cable.js
426
+ - fixtures/rails5/app/assets/javascripts/channels/.keep
427
+ - fixtures/rails5/app/assets/stylesheets/application.css
428
+ - fixtures/rails5/app/channels/application_cable/channel.rb
429
+ - fixtures/rails5/app/channels/application_cable/connection.rb
430
+ - fixtures/rails5/app/controllers/application_controller.rb
431
+ - fixtures/rails5/app/controllers/concerns/.keep
432
+ - fixtures/rails5/app/controllers/posts_controller.rb
433
+ - fixtures/rails5/app/controllers/users_controller.rb
434
+ - fixtures/rails5/app/helpers/application_helper.rb
435
+ - fixtures/rails5/app/jobs/application_job.rb
436
+ - fixtures/rails5/app/mailers/application_mailer.rb
437
+ - fixtures/rails5/app/models
438
+ - fixtures/rails5/app/views
439
+ - fixtures/rails5/bin/bundle
440
+ - fixtures/rails5/bin/rails
441
+ - fixtures/rails5/bin/rake
442
+ - fixtures/rails5/bin/setup
443
+ - fixtures/rails5/bin/spring
444
+ - fixtures/rails5/bin/update
445
+ - fixtures/rails5/config.ru
446
+ - fixtures/rails5/config/application.rb
447
+ - fixtures/rails5/config/boot.rb
448
+ - fixtures/rails5/config/cable.yml
449
+ - fixtures/rails5/config/database.yml
450
+ - fixtures/rails5/config/environment.rb
451
+ - fixtures/rails5/config/environments/development.rb
452
+ - fixtures/rails5/config/environments/production.rb
453
+ - fixtures/rails5/config/environments/test.rb
454
+ - fixtures/rails5/config/initializers/application_controller_renderer.rb
455
+ - fixtures/rails5/config/initializers/assets.rb
456
+ - fixtures/rails5/config/initializers/backtrace_silencers.rb
457
+ - fixtures/rails5/config/initializers/cookies_serializer.rb
458
+ - fixtures/rails5/config/initializers/filter_parameter_logging.rb
459
+ - fixtures/rails5/config/initializers/inflections.rb
460
+ - fixtures/rails5/config/initializers/mime_types.rb
461
+ - fixtures/rails5/config/initializers/new_framework_defaults.rb
462
+ - fixtures/rails5/config/initializers/session_store.rb
463
+ - fixtures/rails5/config/initializers/wrap_parameters.rb
464
+ - fixtures/rails5/config/locales/en.yml
465
+ - fixtures/rails5/config/puma.rb
466
+ - fixtures/rails5/config/routes.rb
467
+ - fixtures/rails5/config/secrets.yml
468
+ - fixtures/rails5/config/spring.rb
469
+ - fixtures/rails5/db/migrate
470
+ - fixtures/rails5/db/schema.rb
471
+ - fixtures/rails5/db/seeds.rb
472
+ - fixtures/rails5/lib/assets/.keep
473
+ - fixtures/rails5/lib/tasks/.keep
474
+ - fixtures/rails5/log/.keep
475
+ - fixtures/rails5/public/404.html
476
+ - fixtures/rails5/public/422.html
477
+ - fixtures/rails5/public/500.html
478
+ - fixtures/rails5/public/apple-touch-icon-precomposed.png
479
+ - fixtures/rails5/public/apple-touch-icon.png
480
+ - fixtures/rails5/public/favicon.ico
481
+ - fixtures/rails5/public/robots.txt
482
+ - fixtures/rails5/test/controllers/.keep
483
+ - fixtures/rails5/test/fixtures/.keep
484
+ - fixtures/rails5/test/fixtures/files/.keep
485
+ - fixtures/rails5/test/helpers/.keep
486
+ - fixtures/rails5/test/integration/.keep
487
+ - fixtures/rails5/test/mailers/.keep
488
+ - fixtures/rails5/test/models/.keep
489
+ - fixtures/rails5/test/test_helper.rb
490
+ - fixtures/rails5/tmp/.keep
491
+ - fixtures/rails5/vendor/assets/javascripts/.keep
492
+ - fixtures/rails5/vendor/assets/stylesheets/.keep
403
493
  - fixtures/sinatra_test/Gemfile
404
494
  - fixtures/sinatra_test/Rakefile
405
495
  - fixtures/sinatra_test/app.rb
406
496
  - fixtures/sinatra_test/config.ru
497
+ - fixtures/sinatra_test/db/migrate
498
+ - fixtures/sinatra_test/models
407
499
  - fixtures/sinatra_test/test/functional/posts_controller_test.rb
408
500
  - fixtures/sinatra_test/test/functional/users_controller_test.rb
409
501
  - fixtures/sinatra_test/test/test_helper.rb
502
+ - fixtures/sinatra_test/views
410
503
  - lib/rabl.rb
411
504
  - lib/rabl/builder.rb
412
505
  - lib/rabl/cache_engine.rb
413
506
  - lib/rabl/configuration.rb
414
507
  - lib/rabl/digestor.rb
508
+ - lib/rabl/digestor/rails3.rb
509
+ - lib/rabl/digestor/rails41.rb
510
+ - lib/rabl/digestor/rails5.rb
415
511
  - lib/rabl/engine.rb
416
512
  - lib/rabl/helpers.rb
417
513
  - lib/rabl/multi_builder.rb
@@ -467,7 +563,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
467
563
  version: '0'
468
564
  requirements: []
469
565
  rubyforge_project: rabl
470
- rubygems_version: 2.4.8
566
+ rubygems_version: 2.6.7
471
567
  signing_key:
472
568
  specification_version: 4
473
569
  summary: General ruby templating with json, bson, xml and msgpack support
@@ -1,8 +0,0 @@
1
- attributes :prefix, :suffix, :area_code
2
- attributes :is_primary => :primary
3
-
4
- if locals[:reversed]
5
- node(:reversed) { |n| n.formatted.reverse }
6
- else
7
- node(:formatted) { |n| n.formatted }
8
- end
@@ -1,108 +0,0 @@
1
- # Lives in <rabl>/test/integration/posts_controller_test.rb
2
- # Symlinked to fixture applications
3
-
4
- begin # Padrino
5
- require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb')
6
- rescue LoadError # Rails
7
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
8
- end
9
-
10
- context "PostsController" do
11
- helper(:json_output) { JSON.parse(last_response.body) }
12
-
13
- setup do
14
- create_users!
15
- Post.delete_all
16
- @post1 = Post.create(:title => "Foo", :body => "Bar", :user_id => @user1.id)
17
- @post2 = Post.create(:title => "Baz", :body => "Bah", :user_id => @user2.id)
18
- @post3 = Post.create(:title => "Kaz", :body => "Paz", :user_id => @user3.id)
19
- @posts = [@post1, @post2, @post3]
20
- end
21
-
22
- context "for index action" do
23
- setup do
24
- get "/posts", :format => :json
25
- end
26
-
27
- # Attributes (regular)
28
- asserts("contains post titles") do
29
- json_output['articles'].map { |o| o["article"]["title"] }
30
- end.equals { @posts.map(&:title) }
31
-
32
- asserts("contains post bodies") do
33
- json_output['articles'].map { |o| o["article"]["body"] }
34
- end.equals { @posts.map(&:body) }
35
-
36
- # Attributes (custom name)
37
- asserts("contains post posted_at") do
38
- json_output['articles'].map { |o| o["article"]["posted_at"] }
39
- end.equals { @posts.map(&:created_at).map(&:iso8601) }
40
-
41
- # Child
42
- asserts("contains post user child username") do
43
- json_output['articles'].map { |o| o["article"]["user"]["username"] }
44
- end.equals { @posts.map(&:user).map(&:username) }
45
-
46
- asserts("contains post user child role") do
47
- json_output['articles'].map { |o| o["article"]["user"]["role"] }
48
- end.equals { ["normal", "normal", "admin"] }
49
-
50
- # Child Numbers of the Child User
51
- asserts("contains post user child numbers") do
52
- json_output['articles'].map { |o| o["article"]["user"]["pnumbers"][0]["pnumber"]["formatted"] }
53
- end.equals { @posts.map(&:user).map(&:phone_numbers).map(&:first).map(&:formatted) }
54
-
55
- # Glue (username to article)
56
- asserts("contains glued usernames") do
57
- json_output['articles'].map { |o| o["article"]["author_name"] }
58
- end.equals { @posts.map(&:user).map(&:username) }
59
-
60
- # Conditional Child (admin)
61
- asserts("contains admin child only for admins") do
62
- json_output['articles'].map { |o| o["article"]["admin"]["username"] if o["article"].has_key?("admin") }.compact
63
- end.equals { [@user3.username] }
64
-
65
- # Conditional Node (created_by_admin)
66
- asserts("contains created_by_admin node for admins") do
67
- json_output['articles'].last['article']['created_by_admin']
68
- end.equals { true }
69
-
70
- denies("contains no created_by_admin node for non-admins") do
71
- json_output['articles'].first['article']
72
- end.includes(:created_by_admin)
73
- end # index action
74
-
75
- context "for show action" do
76
- setup do
77
- get "/posts/#{@post1.id}", :format => :json
78
- json_output['post']
79
- end
80
-
81
- # Attributes (regular)
82
- asserts("contains post title") { topic['title'] }.equals { @post1.title }
83
- asserts("contains post body") { topic['body'] }.equals { @post1.body }
84
-
85
- # Attributes (custom name)
86
- asserts("contains post posted_at") { topic['posted_at'] }.equals { @post1.created_at.iso8601 }
87
-
88
- # Child
89
- asserts("contains post user child username") { topic["user"]["username"] }.equals { @post1.user.username }
90
- asserts("contains post user child role") { topic["user"]["role"] }.equals { "normal" }
91
-
92
- # Child Numbers of the Child User
93
- asserts("contains post user child numbers") do
94
- topic["user"]["pnumbers"][0]["pnumber"]["formatted"]
95
- end.equals { @post1.user.phone_numbers[0].formatted }
96
-
97
- # Glue (username to article)
98
- asserts("contains glued username") { topic["author_name"] }.equals { @post1.user.username }
99
-
100
- # Non-ORM Date Node Partial
101
- context "for date node" do
102
- setup { json_output['post']['created_date'] }
103
- asserts("contains date partial with day") { topic['day'] }.equals { @post1.created_at.day }
104
- asserts("contains date partial with hour") { topic['hour'] }.equals { @post1.created_at.hour }
105
- asserts("contains date partial with full") { topic['full'] }.equals { @post1.created_at.iso8601 }
106
- end # date node
107
- end # show action
108
- end
@@ -1,87 +0,0 @@
1
- # Lives in <rabl>/test/integration/users_controller_test.rb
2
- # Symlinked to fixture applications
3
-
4
- begin # Sinatra
5
- require File.expand_path(File.dirname(__FILE__) + '/../../test_config.rb')
6
- rescue LoadError # Rails
7
- require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
8
- end
9
-
10
- context "UsersController" do
11
- helper(:json_output) { JSON.parse(last_response.body) }
12
-
13
- setup do
14
- create_users!
15
- end
16
-
17
- context "for index action" do
18
- # Tests `collection @users` extending from 'show' template
19
-
20
- setup do
21
- get "/users"
22
- end
23
-
24
- # Attributes (regular)
25
- asserts("contains user usernames") do
26
- json_output.map { |u| u["user"]["username"] }
27
- end.equals { @users.map(&:username) }
28
- asserts("contains email") do
29
- json_output.map { |u| u["user"]["email"] }
30
- end.equals { @users.map(&:email) }
31
- asserts("contains location") do
32
- json_output.map { |u| u["user"]["location"] }
33
- end.equals { @users.map(&:location) }
34
-
35
- # Attributes (custom name)
36
- asserts("contains registered_at") do
37
- json_output.map { |u| u["user"]["registered_at"] }
38
- end.equals { @users.map(&:created_at).map(&:iso8601) }
39
-
40
- # Node (renders based on attribute)
41
- asserts("contains role") do
42
- json_output.map { |u| u["user"]["role"] }
43
- end.equals ['normal', 'normal', 'admin']
44
-
45
- # Child (custom collection name)
46
- asserts("contains formatted phone numbers") do
47
- json_output.map { |u| u["user"]["pnumbers"].map { |n| n["pnumber"]["formatted"] } }
48
- end.equals { @users.map { |u| u.phone_numbers.map(&:formatted) } }
49
-
50
- # Node (renders collection partial)
51
- asserts("contains formatted node numbers") do
52
- json_output.map { |u| u["user"]["node_numbers"].map { |n| n["formatted"] } }
53
- end.equals { @users.map { |u| u.phone_numbers.map(&:formatted) } }
54
- end # index
55
-
56
- context "for show action" do
57
- # Tests `object :user => :person` custom parent node name
58
- setup do
59
- get "/users/#{@user1.id}"
60
- end
61
-
62
- # Attributes (regular)
63
- asserts("contains username") { json_output["person"]["username"] }.equals { @user1.username }
64
- asserts("contains email") { json_output["person"]["email"] }.equals { @user1.email }
65
- asserts("contains location") { json_output["person"]["location"] }.equals { @user1.location }
66
- # Attributes (custom name)
67
- asserts("contains registered_at") { json_output["person"]["registered_at"] }.equals { @user1.created_at.iso8601 }
68
- # Node (renders based on attribute)
69
- asserts("contains role node") { json_output["person"]["role"] }.equals "normal"
70
-
71
- # Child (custom collection name)
72
- asserts("contains first phone number") {
73
- json_output["person"]["pnumbers"][0]["pnumber"]["formatted"]
74
- }.equals { @user1.phone_numbers[0].formatted }
75
- asserts("contains second phone number") {
76
- json_output["person"]["pnumbers"][1]["pnumber"]["formatted"]
77
- }.equals { @user1.phone_numbers[1].formatted }
78
-
79
- # Node (renders collection partial)
80
- asserts("contains first node number") {
81
- json_output["person"]["node_numbers"][0]["formatted"]
82
- }.equals { @user1.phone_numbers[0].formatted }
83
- asserts("contains second node number") {
84
- json_output["person"]["node_numbers"][1]["formatted"]
85
- }.equals { @user1.phone_numbers[1].formatted }
86
- end # show
87
- end