rabl 0.13.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +35 -0
  3. data/CONTRIBUTING.md +2 -2
  4. data/README.md +16 -11
  5. data/lib/rabl/builder.rb +29 -17
  6. data/lib/rabl/cache_engine.rb +30 -1
  7. data/lib/rabl/configuration.rb +3 -1
  8. data/lib/rabl/digestor/rails3.rb +12 -0
  9. data/lib/rabl/digestor/rails41.rb +12 -0
  10. data/lib/rabl/digestor/rails5.rb +6 -0
  11. data/lib/rabl/digestor.rb +5 -37
  12. data/lib/rabl/engine.rb +30 -11
  13. data/lib/rabl/helpers.rb +7 -3
  14. data/lib/rabl/railtie.rb +18 -1
  15. data/lib/rabl/template.rb +21 -1
  16. data/lib/rabl/version.rb +1 -1
  17. data/lib/rabl.rb +5 -5
  18. metadata +15 -298
  19. data/.gitignore +0 -8
  20. data/.travis.yml +0 -15
  21. data/Gemfile +0 -27
  22. data/Rakefile +0 -54
  23. data/examples/base.json.rabl +0 -8
  24. data/examples/demo.json.rabl +0 -42
  25. data/examples/inherited.json.rabl +0 -11
  26. data/fixtures/ashared/NOTES +0 -44
  27. data/fixtures/ashared/README +0 -39
  28. data/fixtures/ashared/migrate/20111002092016_create_users.rb +0 -15
  29. data/fixtures/ashared/migrate/20111002092019_create_posts.rb +0 -14
  30. data/fixtures/ashared/migrate/20111002092024_create_phone_numbers.rb +0 -16
  31. data/fixtures/ashared/models/phone_number.rb +0 -7
  32. data/fixtures/ashared/models/post.rb +0 -3
  33. data/fixtures/ashared/models/user.rb +0 -3
  34. data/fixtures/ashared/views/layouts/application.html.erb +0 -9
  35. data/fixtures/ashared/views/posts/_show_footer_script.js.erb +0 -1
  36. data/fixtures/ashared/views/posts/date.rabl +0 -3
  37. data/fixtures/ashared/views/posts/index.rabl +0 -12
  38. data/fixtures/ashared/views/posts/show.rabl +0 -17
  39. data/fixtures/ashared/views/users/index.json.rabl +0 -3
  40. data/fixtures/ashared/views/users/phone_number.json.rabl +0 -6
  41. data/fixtures/ashared/views/users/show.json.rabl +0 -16
  42. data/fixtures/ashared/views_rails_3/layouts/application.html.erb +0 -13
  43. data/fixtures/ashared/views_rails_3/posts/_show_footer_script.js.erb +0 -1
  44. data/fixtures/ashared/views_rails_3/posts/date.rabl +0 -3
  45. data/fixtures/ashared/views_rails_3/posts/index.html.erb +0 -3
  46. data/fixtures/ashared/views_rails_3/posts/index.rabl +0 -12
  47. data/fixtures/ashared/views_rails_3/posts/renderer.rabl +0 -8
  48. data/fixtures/ashared/views_rails_3/posts/renderer_partial.rabl +0 -4
  49. data/fixtures/ashared/views_rails_3/posts/show.html.erb +0 -3
  50. data/fixtures/ashared/views_rails_3/posts/show.rabl +0 -25
  51. data/fixtures/ashared/views_rails_3/posts/show.rabl_test_v1.rabl +0 -7
  52. data/fixtures/ashared/views_rails_3/users/index.json.rabl +0 -3
  53. data/fixtures/ashared/views_rails_3/users/phone_number.json.rabl +0 -8
  54. data/fixtures/ashared/views_rails_3/users/phone_number.xml.rabl +0 -8
  55. data/fixtures/ashared/views_rails_3/users/show.json.rabl +0 -16
  56. data/fixtures/ashared/views_rails_3/users/show.rabl_test_v1.rabl +0 -3
  57. data/fixtures/padrino_test/.components +0 -7
  58. data/fixtures/padrino_test/.gitignore +0 -7
  59. data/fixtures/padrino_test/Gemfile +0 -17
  60. data/fixtures/padrino_test/Rakefile +0 -3
  61. data/fixtures/padrino_test/app/app.rb +0 -31
  62. data/fixtures/padrino_test/app/controllers/posts.rb +0 -11
  63. data/fixtures/padrino_test/app/controllers/users.rb +0 -11
  64. data/fixtures/padrino_test/app/helpers/posts_helper.rb +0 -7
  65. data/fixtures/padrino_test/app/helpers/users_helper.rb +0 -7
  66. data/fixtures/padrino_test/config/apps.rb +0 -34
  67. data/fixtures/padrino_test/config/boot.rb +0 -29
  68. data/fixtures/padrino_test/config/database.rb +0 -43
  69. data/fixtures/padrino_test/config.ru +0 -9
  70. data/fixtures/padrino_test/db/schema.rb +0 -42
  71. data/fixtures/padrino_test/public/favicon.ico +0 -0
  72. data/fixtures/padrino_test/test/app/controllers/posts_controller_test.rb +0 -108
  73. data/fixtures/padrino_test/test/app/controllers/users_controller_test.rb +0 -87
  74. data/fixtures/padrino_test/test/test.rake +0 -18
  75. data/fixtures/padrino_test/test/test_config.rb +0 -18
  76. data/fixtures/rails2/.gitignore +0 -1
  77. data/fixtures/rails2/Gemfile +0 -10
  78. data/fixtures/rails2/Rakefile +0 -14
  79. data/fixtures/rails2/app/controllers/application_controller.rb +0 -10
  80. data/fixtures/rails2/app/controllers/posts_controller.rb +0 -15
  81. data/fixtures/rails2/app/controllers/users_controller.rb +0 -15
  82. data/fixtures/rails2/app/helpers/application_helper.rb +0 -2
  83. data/fixtures/rails2/app/helpers/posts_helper.rb +0 -2
  84. data/fixtures/rails2/app/helpers/users_helper.rb +0 -2
  85. data/fixtures/rails2/config/boot.rb +0 -129
  86. data/fixtures/rails2/config/database.yml +0 -16
  87. data/fixtures/rails2/config/environment.rb +0 -64
  88. data/fixtures/rails2/config/environments/development.rb +0 -17
  89. data/fixtures/rails2/config/environments/production.rb +0 -28
  90. data/fixtures/rails2/config/environments/test.rb +0 -28
  91. data/fixtures/rails2/config/initializers/backtrace_silencers.rb +0 -7
  92. data/fixtures/rails2/config/initializers/cookie_verification_secret.rb +0 -7
  93. data/fixtures/rails2/config/initializers/inflections.rb +0 -10
  94. data/fixtures/rails2/config/initializers/mime_types.rb +0 -5
  95. data/fixtures/rails2/config/initializers/new_rails_defaults.rb +0 -21
  96. data/fixtures/rails2/config/initializers/session_store.rb +0 -15
  97. data/fixtures/rails2/config/locales/en.yml +0 -5
  98. data/fixtures/rails2/config/preinitializer.rb +0 -20
  99. data/fixtures/rails2/config/routes.rb +0 -45
  100. data/fixtures/rails2/db/schema.rb +0 -40
  101. data/fixtures/rails2/db/seeds.rb +0 -7
  102. data/fixtures/rails2/public/404.html +0 -30
  103. data/fixtures/rails2/public/422.html +0 -30
  104. data/fixtures/rails2/public/500.html +0 -30
  105. data/fixtures/rails2/public/favicon.ico +0 -0
  106. data/fixtures/rails2/public/images/rails.png +0 -0
  107. data/fixtures/rails2/public/index.html +0 -275
  108. data/fixtures/rails2/public/robots.txt +0 -5
  109. data/fixtures/rails2/script/about +0 -4
  110. data/fixtures/rails2/script/console +0 -3
  111. data/fixtures/rails2/script/dbconsole +0 -3
  112. data/fixtures/rails2/script/destroy +0 -3
  113. data/fixtures/rails2/script/generate +0 -3
  114. data/fixtures/rails2/script/performance/benchmarker +0 -3
  115. data/fixtures/rails2/script/performance/profiler +0 -3
  116. data/fixtures/rails2/script/plugin +0 -3
  117. data/fixtures/rails2/script/runner +0 -3
  118. data/fixtures/rails2/script/server +0 -3
  119. data/fixtures/rails2/test/functionals/posts_controller_test.rb +0 -108
  120. data/fixtures/rails2/test/functionals/users_controller_test.rb +0 -87
  121. data/fixtures/rails2/test/test_helper.rb +0 -33
  122. data/fixtures/rails3/.gitignore +0 -4
  123. data/fixtures/rails3/Gemfile +0 -37
  124. data/fixtures/rails3/Rakefile +0 -12
  125. data/fixtures/rails3/app/controllers/application_controller.rb +0 -14
  126. data/fixtures/rails3/app/controllers/posts_controller.rb +0 -11
  127. data/fixtures/rails3/app/controllers/users_controller.rb +0 -11
  128. data/fixtures/rails3/config/application.rb +0 -42
  129. data/fixtures/rails3/config/boot.rb +0 -6
  130. data/fixtures/rails3/config/database.yml +0 -22
  131. data/fixtures/rails3/config/environment.rb +0 -5
  132. data/fixtures/rails3/config/environments/development.rb +0 -26
  133. data/fixtures/rails3/config/environments/production.rb +0 -49
  134. data/fixtures/rails3/config/environments/test.rb +0 -35
  135. data/fixtures/rails3/config/initializers/backtrace_silencers.rb +0 -7
  136. data/fixtures/rails3/config/initializers/inflections.rb +0 -10
  137. data/fixtures/rails3/config/initializers/mime_types.rb +0 -5
  138. data/fixtures/rails3/config/initializers/secret_token.rb +0 -7
  139. data/fixtures/rails3/config/initializers/session_store.rb +0 -8
  140. data/fixtures/rails3/config/locales/en.yml +0 -5
  141. data/fixtures/rails3/config/routes.rb +0 -61
  142. data/fixtures/rails3/config.ru +0 -4
  143. data/fixtures/rails3/db/seeds.rb +0 -7
  144. data/fixtures/rails3/lib/tasks/.gitkeep +0 -0
  145. data/fixtures/rails3/public/404.html +0 -26
  146. data/fixtures/rails3/public/422.html +0 -26
  147. data/fixtures/rails3/public/500.html +0 -26
  148. data/fixtures/rails3/public/favicon.ico +0 -0
  149. data/fixtures/rails3/public/images/rails.png +0 -0
  150. data/fixtures/rails3/public/index.html +0 -239
  151. data/fixtures/rails3/public/robots.txt +0 -5
  152. data/fixtures/rails3/public/stylesheets/.gitkeep +0 -0
  153. data/fixtures/rails3/script/rails +0 -6
  154. data/fixtures/rails3/test/functional/posts_controller_test.rb +0 -108
  155. data/fixtures/rails3/test/functional/users_controller_test.rb +0 -87
  156. data/fixtures/rails3/test/test_helper.rb +0 -26
  157. data/fixtures/rails3_2/.gitignore +0 -15
  158. data/fixtures/rails3_2/Gemfile +0 -40
  159. data/fixtures/rails3_2/README.rdoc +0 -261
  160. data/fixtures/rails3_2/Rakefile +0 -12
  161. data/fixtures/rails3_2/app/assets/images/rails.png +0 -0
  162. data/fixtures/rails3_2/app/assets/javascripts/application.js +0 -15
  163. data/fixtures/rails3_2/app/assets/javascripts/posts.js.coffee +0 -3
  164. data/fixtures/rails3_2/app/assets/javascripts/users.js.coffee +0 -3
  165. data/fixtures/rails3_2/app/assets/stylesheets/application.css +0 -13
  166. data/fixtures/rails3_2/app/assets/stylesheets/posts.css.scss +0 -3
  167. data/fixtures/rails3_2/app/assets/stylesheets/users.css.scss +0 -3
  168. data/fixtures/rails3_2/app/controllers/application_controller.rb +0 -14
  169. data/fixtures/rails3_2/app/controllers/posts_controller.rb +0 -16
  170. data/fixtures/rails3_2/app/controllers/users_controller.rb +0 -11
  171. data/fixtures/rails3_2/app/helpers/application_helper.rb +0 -5
  172. data/fixtures/rails3_2/app/helpers/posts_helper.rb +0 -2
  173. data/fixtures/rails3_2/app/helpers/users_helper.rb +0 -2
  174. data/fixtures/rails3_2/app/mailers/.gitkeep +0 -0
  175. data/fixtures/rails3_2/config/application.rb +0 -59
  176. data/fixtures/rails3_2/config/boot.rb +0 -6
  177. data/fixtures/rails3_2/config/database.yml +0 -25
  178. data/fixtures/rails3_2/config/environment.rb +0 -5
  179. data/fixtures/rails3_2/config/environments/development.rb +0 -37
  180. data/fixtures/rails3_2/config/environments/production.rb +0 -67
  181. data/fixtures/rails3_2/config/environments/test.rb +0 -37
  182. data/fixtures/rails3_2/config/initializers/backtrace_silencers.rb +0 -7
  183. data/fixtures/rails3_2/config/initializers/inflections.rb +0 -15
  184. data/fixtures/rails3_2/config/initializers/mime_types.rb +0 -7
  185. data/fixtures/rails3_2/config/initializers/secret_token.rb +0 -7
  186. data/fixtures/rails3_2/config/initializers/session_store.rb +0 -8
  187. data/fixtures/rails3_2/config/initializers/wrap_parameters.rb +0 -14
  188. data/fixtures/rails3_2/config/locales/en.yml +0 -5
  189. data/fixtures/rails3_2/config/routes.rb +0 -64
  190. data/fixtures/rails3_2/config.ru +0 -4
  191. data/fixtures/rails3_2/db/schema.rb +0 -42
  192. data/fixtures/rails3_2/db/seeds.rb +0 -7
  193. data/fixtures/rails3_2/doc/README_FOR_APP +0 -2
  194. data/fixtures/rails3_2/lib/assets/.gitkeep +0 -0
  195. data/fixtures/rails3_2/lib/tasks/.gitkeep +0 -0
  196. data/fixtures/rails3_2/log/.gitkeep +0 -0
  197. data/fixtures/rails3_2/public/404.html +0 -26
  198. data/fixtures/rails3_2/public/422.html +0 -26
  199. data/fixtures/rails3_2/public/500.html +0 -25
  200. data/fixtures/rails3_2/public/favicon.ico +0 -0
  201. data/fixtures/rails3_2/public/index.html +0 -241
  202. data/fixtures/rails3_2/public/robots.txt +0 -5
  203. data/fixtures/rails3_2/script/rails +0 -6
  204. data/fixtures/rails3_2/test/fixtures/phone_numbers.yml +0 -11
  205. data/fixtures/rails3_2/test/fixtures/posts.yml +0 -11
  206. data/fixtures/rails3_2/test/fixtures/users.yml +0 -11
  207. data/fixtures/rails3_2/test/functional/posts_controller_test.rb +0 -263
  208. data/fixtures/rails3_2/test/functional/users_controller_test.rb +0 -87
  209. data/fixtures/rails3_2/test/integration/.gitkeep +0 -0
  210. data/fixtures/rails3_2/test/performance/browsing_test.rb +0 -12
  211. data/fixtures/rails3_2/test/test_helper.rb +0 -26
  212. data/fixtures/rails3_2/test/unit/helpers/posts_helper_test.rb +0 -4
  213. data/fixtures/rails3_2/test/unit/helpers/users_helper_test.rb +0 -4
  214. data/fixtures/rails3_2/test/unit/phone_number_test.rb +0 -7
  215. data/fixtures/rails3_2/test/unit/post_test.rb +0 -7
  216. data/fixtures/rails3_2/test/unit/user_test.rb +0 -7
  217. data/fixtures/rails3_2/vendor/assets/javascripts/.gitkeep +0 -0
  218. data/fixtures/rails3_2/vendor/assets/stylesheets/.gitkeep +0 -0
  219. data/fixtures/rails3_2/vendor/plugins/.gitkeep +0 -0
  220. data/fixtures/rails4/.gitignore +0 -16
  221. data/fixtures/rails4/Gemfile +0 -49
  222. data/fixtures/rails4/README.rdoc +0 -28
  223. data/fixtures/rails4/Rakefile +0 -11
  224. data/fixtures/rails4/app/assets/javascripts/application.js +0 -16
  225. data/fixtures/rails4/app/assets/stylesheets/application.css +0 -13
  226. data/fixtures/rails4/app/controllers/application_controller.rb +0 -5
  227. data/fixtures/rails4/app/controllers/concerns/.keep +0 -0
  228. data/fixtures/rails4/app/controllers/posts_controller.rb +0 -16
  229. data/fixtures/rails4/app/controllers/users_controller.rb +0 -11
  230. data/fixtures/rails4/app/helpers/application_helper.rb +0 -5
  231. data/fixtures/rails4/app/mailers/.keep +0 -0
  232. data/fixtures/rails4/bin/bundle +0 -3
  233. data/fixtures/rails4/bin/rails +0 -4
  234. data/fixtures/rails4/bin/rake +0 -4
  235. data/fixtures/rails4/config/application.rb +0 -23
  236. data/fixtures/rails4/config/boot.rb +0 -4
  237. data/fixtures/rails4/config/database.yml +0 -25
  238. data/fixtures/rails4/config/environment.rb +0 -5
  239. data/fixtures/rails4/config/environments/development.rb +0 -29
  240. data/fixtures/rails4/config/environments/production.rb +0 -80
  241. data/fixtures/rails4/config/environments/test.rb +0 -36
  242. data/fixtures/rails4/config/initializers/backtrace_silencers.rb +0 -7
  243. data/fixtures/rails4/config/initializers/filter_parameter_logging.rb +0 -4
  244. data/fixtures/rails4/config/initializers/inflections.rb +0 -16
  245. data/fixtures/rails4/config/initializers/mime_types.rb +0 -7
  246. data/fixtures/rails4/config/initializers/secret_token.rb +0 -12
  247. data/fixtures/rails4/config/initializers/session_store.rb +0 -3
  248. data/fixtures/rails4/config/initializers/wrap_parameters.rb +0 -14
  249. data/fixtures/rails4/config/locales/en.yml +0 -23
  250. data/fixtures/rails4/config/routes.rb +0 -55
  251. data/fixtures/rails4/config.ru +0 -4
  252. data/fixtures/rails4/db/seeds.rb +0 -7
  253. data/fixtures/rails4/lib/assets/.keep +0 -0
  254. data/fixtures/rails4/lib/tasks/.keep +0 -0
  255. data/fixtures/rails4/log/.keep +0 -0
  256. data/fixtures/rails4/public/404.html +0 -58
  257. data/fixtures/rails4/public/422.html +0 -58
  258. data/fixtures/rails4/public/500.html +0 -57
  259. data/fixtures/rails4/public/favicon.ico +0 -0
  260. data/fixtures/rails4/public/robots.txt +0 -5
  261. data/fixtures/rails4/test/controllers/.keep +0 -0
  262. data/fixtures/rails4/test/fixtures/.keep +0 -0
  263. data/fixtures/rails4/test/functional/posts_controller_test.rb +0 -248
  264. data/fixtures/rails4/test/functional/users_controller_test.rb +0 -87
  265. data/fixtures/rails4/test/helpers/.keep +0 -0
  266. data/fixtures/rails4/test/integration/.keep +0 -0
  267. data/fixtures/rails4/test/mailers/.keep +0 -0
  268. data/fixtures/rails4/test/models/.keep +0 -0
  269. data/fixtures/rails4/test/test_helper.rb +0 -26
  270. data/fixtures/rails4/vendor/assets/javascripts/.keep +0 -0
  271. data/fixtures/rails4/vendor/assets/stylesheets/.keep +0 -0
  272. data/fixtures/sinatra_test/Gemfile +0 -13
  273. data/fixtures/sinatra_test/Rakefile +0 -6
  274. data/fixtures/sinatra_test/app.rb +0 -55
  275. data/fixtures/sinatra_test/config.ru +0 -7
  276. data/fixtures/sinatra_test/test/functional/posts_controller_test.rb +0 -108
  277. data/fixtures/sinatra_test/test/functional/users_controller_test.rb +0 -87
  278. data/fixtures/sinatra_test/test/test_helper.rb +0 -19
  279. data/rabl.gemspec +0 -36
  280. data/test/bson_engine_test.rb +0 -310
  281. data/test/builder_test.rb +0 -362
  282. data/test/configuration_test.rb +0 -91
  283. data/test/engine_test.rb +0 -835
  284. data/test/helpers_test.rb +0 -136
  285. data/test/integration/posts_controller_test.rb +0 -108
  286. data/test/integration/rails3_2/posts_controller_test.rb +0 -263
  287. data/test/integration/rails3_2/users_controller_test.rb +0 -87
  288. data/test/integration/rails4/posts_controller_test.rb +0 -248
  289. data/test/integration/rails4/users_controller_test.rb +0 -87
  290. data/test/integration/test_init.rb +0 -36
  291. data/test/integration/users_controller_test.rb +0 -87
  292. data/test/models/ormless.rb +0 -3
  293. data/test/models/user.rb +0 -34
  294. data/test/msgpack_engine_test.rb +0 -312
  295. data/test/multi_builder_test.rb +0 -69
  296. data/test/partials_test.rb +0 -205
  297. data/test/plist_engine_test.rb +0 -308
  298. data/test/renderer_test.rb +0 -390
  299. data/test/silence.rb +0 -21
  300. data/test/template_test.rb +0 -63
  301. data/test/teststrap.rb +0 -37
  302. data/test/xml_test.rb +0 -297
  303. data/test.watchr +0 -47
data/test/xml_test.rb DELETED
@@ -1,297 +0,0 @@
1
- require 'active_support/core_ext/hash/conversions'
2
- require File.expand_path('../teststrap', __FILE__)
3
- require 'rabl/template'
4
-
5
- context "Rabl::Engine" do
6
- helper(:rabl) { |t| RablTemplate.new("code", :format => 'xml') { t } }
7
-
8
- # TODO fix annoying warnings in this file:
9
- # gems/builder-3.0.3/lib/builder/xmlbase.rb:181: warning: method redefined; discarding old user
10
- setup { @old_verbose, $VERBOSE = $VERBOSE, nil }
11
- teardown { $VERBOSE = @old_verbose }
12
-
13
- context "with xml defaults" do
14
- setup do
15
- Rabl.configure do |config|
16
- # Comment this line out because include_xml_root to false is default.
17
- #config.include_xml_root = false
18
- end
19
- end
20
-
21
- context "#object" do
22
- asserts "that it sets data source" do
23
- template = rabl %q{
24
- object @user
25
- }
26
- scope = Object.new
27
- scope.instance_variable_set :@user, User.new
28
- template.render(scope)
29
- end.matches ""
30
-
31
- asserts "that it can set root node" do
32
- template = rabl %q{
33
- object @user => :person
34
- }
35
- scope = Object.new
36
- scope.instance_variable_set :@user, User.new
37
- template.render(scope)
38
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n</person>\n"
39
- end
40
-
41
- context "#collection" do
42
- asserts "that it sets object to be casted as a simple array" do
43
- template = rabl %{
44
- collection @users
45
- }
46
- scope = Object.new
47
- scope.instance_variable_set :@users, [User.new, User.new]
48
- template.render(scope)
49
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<users type=\"array\">\n <user>\n </user>\n <user>\n </user>\n</users>\n"
50
-
51
- asserts "that it sets root node for objects" do
52
- template = rabl %{
53
- collection @users => :smors
54
- }
55
- scope = Object.new
56
- scope.instance_variable_set :@users, [User.new, User.new]
57
- template.render(scope)
58
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<smors type=\"array\">\n <smor>\n </smor>\n <smor>\n </smor>\n</smors>\n"
59
- end
60
-
61
- context "#attribute" do
62
- asserts "that it adds an attribute or method to be included in output" do
63
- template = rabl %{
64
- object @user
65
- attribute :name
66
- }
67
- scope = Object.new
68
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
69
- template.render(scope)
70
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <name>irvine</name>\n</user>\n"
71
-
72
- asserts "that it can add attribute under a different key name through :as" do
73
- template = rabl %{
74
- object @user
75
- attribute :name, :as => 'city'
76
- }
77
- scope = Object.new
78
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
79
- template.render(scope)
80
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <city>irvine</city>\n</user>\n"
81
-
82
- asserts "that it can add attribute under a different key name through hash" do
83
- template = rabl %{
84
- object @user
85
- attribute :name => :city
86
- }
87
- scope = Object.new
88
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
89
- template.render(scope)
90
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <city>irvine</city>\n</user>\n"
91
- end
92
-
93
- context "#code" do
94
- asserts "that it can create an arbitraty code node" do
95
- template = rabl %{
96
- code(:foo) { 'bar' }
97
- }
98
- template.render(Object.new)
99
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <foo>bar</foo>\n</hash>\n"
100
-
101
- asserts "that it can be passed conditionals" do
102
- template = rabl %{
103
- code(:foo, :if => lambda { |i| false }) { 'bar' }
104
- }
105
- template.render(Object.new)
106
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n</hash>\n"
107
- end
108
-
109
- context "#child" do
110
- asserts "that it can create a child node" do
111
- template = rabl %{
112
- object @user
113
- child(@user) { attribute :city }
114
- }
115
- scope = Object.new
116
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
117
- template.render(scope)
118
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <city>LA</city>\n </user>\n</user>\n"
119
-
120
- asserts "that it can create a child node with different key" do
121
- template = rabl %{
122
- object @user
123
- attribute :name
124
- child(@user => :person) { attribute :city }
125
- }
126
- scope = Object.new
127
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
128
- template.render(scope)
129
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <name>leo</name>\n <person>\n <city>LA</city>\n </person>\n</user>\n"
130
- end
131
-
132
- context "#glue" do
133
- asserts "that it glues data from a child node" do
134
- template = rabl %{
135
- object @user
136
- attribute :name
137
- glue(@user) { attribute :city }
138
- glue(@user) { attribute :age }
139
- }
140
- scope = Object.new
141
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA', :age => 12)
142
- template.render(scope)
143
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <name>leo</name>\n <city>LA</city>\n <age type=\"integer\">12</age>\n</user>\n"
144
- end
145
-
146
- teardown do
147
- Rabl.reset_configuration!
148
- end
149
- end
150
-
151
- context "with xml root" do
152
- setup do
153
- Rabl.configure do |config|
154
- config.include_xml_root = true
155
- end
156
- end
157
-
158
- context "#object" do
159
- asserts "that it sets data source" do
160
- template = rabl %q{
161
- object @user
162
- }
163
- scope = Object.new
164
- scope.instance_variable_set :@user, User.new
165
- template.render(scope)
166
- end.matches "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n </user>\n</user>\n"
167
-
168
- asserts "that it can set root node" do
169
- template = rabl %q{
170
- object @user => :person
171
- }
172
- scope = Object.new
173
- scope.instance_variable_set :@user, User.new
174
- template.render(scope)
175
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n <person>\n </person>\n</person>\n"
176
- end
177
-
178
- context "#collection" do
179
- asserts "that it sets object to be casted as a simple array" do
180
- template = rabl %{
181
- collection @users
182
- }
183
- scope = Object.new
184
- scope.instance_variable_set :@users, [User.new, User.new]
185
- template.render(scope)
186
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<users type=\"array\">\n <user>\n <user>\n </user>\n </user>\n <user>\n <user>\n </user>\n </user>\n</users>\n"
187
-
188
- asserts "that it sets root node for objects" do
189
- template = rabl %{
190
- collection @users => :people
191
- }
192
- scope = Object.new
193
- scope.instance_variable_set :@users, [User.new, User.new]
194
- template.render(scope)
195
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people type=\"array\">\n <person>\n <person>\n </person>\n </person>\n <person>\n <person>\n </person>\n </person>\n</people>\n"
196
-
197
- asserts "that it sets root node for objects with :root parameter" do
198
- template = rabl %{
199
- collection @users, :root => :people, :object_root => :person
200
- }
201
- scope = Object.new
202
- scope.instance_variable_set :@users, [User.new, User.new]
203
- template.render(scope)
204
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people type=\"array\">\n <person>\n <person>\n </person>\n </person>\n <person>\n <person>\n </person>\n </person>\n</people>\n"
205
-
206
- end
207
-
208
- context "#attribute" do
209
- asserts "that it adds an attribute or method to be included in output" do
210
- template = rabl %{
211
- object @user
212
- attribute :name
213
- }
214
- scope = Object.new
215
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
216
- template.render(scope)
217
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <name>irvine</name>\n </user>\n</user>\n"
218
-
219
- asserts "that it can add attribute under a different key name through :as" do
220
- template = rabl %{
221
- object @user
222
- attribute :name, :as => 'city'
223
- }
224
- scope = Object.new
225
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
226
- template.render(scope)
227
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <city>irvine</city>\n </user>\n</user>\n"
228
-
229
- asserts "that it can add attribute under a different key name through hash" do
230
- template = rabl %{
231
- object @user
232
- attribute :name => :city
233
- }
234
- scope = Object.new
235
- scope.instance_variable_set :@user, User.new(:name => 'irvine')
236
- template.render(scope)
237
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <city>irvine</city>\n </user>\n</user>\n"
238
- end
239
-
240
- context "#code" do
241
- asserts "that it can create an arbitrary code node" do
242
- template = rabl %{
243
- code(:foo) { 'bar' }
244
- }
245
- template.render(Object.new)
246
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <foo>bar</foo>\n</hash>\n"
247
-
248
- asserts "that it can be passed conditionals" do
249
- template = rabl %{
250
- code(:foo, :if => lambda { |i| false }) { 'bar' }
251
- }
252
- template.render(Object.new)
253
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n</hash>\n"
254
- end
255
-
256
- context "#child" do
257
- asserts "that it can create a child node" do
258
- template = rabl %{
259
- object @user
260
- child(@user) { attribute :city }
261
- }
262
- scope = Object.new
263
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
264
- template.render(scope)
265
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <user>\n <city>LA</city>\n </user>\n </user>\n</user>\n"
266
-
267
- asserts "that it can create a child node with different key" do
268
- template = rabl %{
269
- object @user
270
- attribute :name
271
- child(@user => :person) { attribute :city }
272
- }
273
- scope = Object.new
274
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
275
- template.render(scope)
276
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <name>leo</name>\n <person>\n <city>LA</city>\n </person>\n </user>\n</user>\n"
277
- end
278
-
279
- context "#glue" do
280
- asserts "that it glues data from a child node" do
281
- template = rabl %{
282
- object @user
283
- attribute :name
284
- glue(@user) { attribute :city }
285
- glue(@user) { attribute :age }
286
- }
287
- scope = Object.new
288
- scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA', :age => 12)
289
- template.render(scope)
290
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<user>\n <user>\n <name>leo</name>\n <city>LA</city>\n <age type=\"integer\">12</age>\n </user>\n</user>\n"
291
- end
292
-
293
- teardown do
294
- Rabl.reset_configuration!
295
- end
296
- end
297
- end
data/test.watchr DELETED
@@ -1,47 +0,0 @@
1
- ENV["WATCHR"] = "1"
2
- system 'clear'
3
-
4
- def run(cmd)
5
- puts(cmd)
6
- system cmd
7
- end
8
-
9
- def run_test_file(file)
10
- system('clear')
11
- run(%Q(ruby -I"lib:test" -rubygems #{file}))
12
- end
13
-
14
- def run_all_tests
15
- system('clear')
16
- run('rake test')
17
- end
18
-
19
- def related_test_files(path)
20
- Dir['test/**/*.rb'].select { |file| file =~ /#{File.basename(path).split(".").first}_test.rb/ }
21
- end
22
-
23
- watch('test/teststrap\.rb') { run_all_tests }
24
- watch('test/(.*).*_test\.rb') { |m| run_test_file(m[0]) }
25
- watch('lib/.*/.*\.rb') { |m| related_test_files(m[0]).map {|tf| run_test_file(tf) } }
26
-
27
- # Ctrl-\
28
- Signal.trap 'QUIT' do
29
- puts " --- Running all tests ---\n\n"
30
- run_all_tests
31
- end
32
-
33
- @interrupted = false
34
-
35
- # Ctrl-C
36
- Signal.trap 'INT' do
37
- if @interrupted then
38
- @wants_to_quit = true
39
- abort("\n")
40
- else
41
- puts "Interrupt a second time to quit"
42
- @interrupted = true
43
- Kernel.sleep 1.5
44
- # raise Interrupt, nil # let the run loop catch it
45
- run_all_tests
46
- end
47
- end