restfulie 1.0.0 → 1.0.3

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 (452) hide show
  1. data/.gitignore +20 -0
  2. data/.gitmodules +3 -0
  3. data/.rspec +2 -0
  4. data/Rakefile +9 -41
  5. data/full-examples/.gitignore +4 -0
  6. data/full-examples/README.textile +1 -0
  7. data/full-examples/mikemaze/README.textile +6 -0
  8. data/full-examples/mikemaze/maze_basic.rb +37 -0
  9. data/full-examples/mikemaze/maze_solver_spec.rb +108 -0
  10. data/full-examples/rest_from_scratch/part_1/.gitignore +4 -0
  11. data/full-examples/rest_from_scratch/part_1/.rspec +1 -0
  12. data/full-examples/rest_from_scratch/part_1/Gemfile +33 -0
  13. data/full-examples/rest_from_scratch/part_1/README +256 -0
  14. data/full-examples/rest_from_scratch/part_1/Rakefile +7 -0
  15. data/full-examples/rest_from_scratch/part_1/app/controllers/application_controller.rb +3 -0
  16. data/full-examples/rest_from_scratch/part_1/app/controllers/items_controller.rb +20 -0
  17. data/full-examples/rest_from_scratch/part_1/app/helpers/application_helper.rb +2 -0
  18. data/full-examples/rest_from_scratch/part_1/app/helpers/items_helper.rb +2 -0
  19. data/full-examples/rest_from_scratch/part_1/app/models/item.rb +2 -0
  20. data/full-examples/rest_from_scratch/part_1/app/views/items/_form.html.erb +25 -0
  21. data/full-examples/rest_from_scratch/part_1/app/views/items/edit.html.erb +6 -0
  22. data/full-examples/rest_from_scratch/part_1/app/views/items/index.html.erb +25 -0
  23. data/full-examples/rest_from_scratch/part_1/app/views/items/new.html.erb +5 -0
  24. data/full-examples/rest_from_scratch/part_1/app/views/items/show.html.erb +15 -0
  25. data/full-examples/rest_from_scratch/part_1/app/views/layouts/application.html.erb +14 -0
  26. data/full-examples/rest_from_scratch/part_1/autotest/discover.rb +1 -0
  27. data/full-examples/rest_from_scratch/part_1/config.ru +4 -0
  28. data/full-examples/rest_from_scratch/part_1/config/application.rb +42 -0
  29. data/full-examples/rest_from_scratch/part_1/config/boot.rb +13 -0
  30. data/full-examples/rest_from_scratch/part_1/config/database.yml +22 -0
  31. data/full-examples/rest_from_scratch/part_1/config/environment.rb +5 -0
  32. data/full-examples/rest_from_scratch/part_1/config/environments/development.rb +26 -0
  33. data/full-examples/rest_from_scratch/part_1/config/environments/production.rb +49 -0
  34. data/full-examples/rest_from_scratch/part_1/config/environments/test.rb +35 -0
  35. data/full-examples/rest_from_scratch/part_1/config/initializers/backtrace_silencers.rb +7 -0
  36. data/full-examples/rest_from_scratch/part_1/config/initializers/inflections.rb +10 -0
  37. data/full-examples/rest_from_scratch/part_1/config/initializers/mime_types.rb +5 -0
  38. data/full-examples/rest_from_scratch/part_1/config/initializers/secret_token.rb +7 -0
  39. data/full-examples/rest_from_scratch/part_1/config/initializers/session_store.rb +8 -0
  40. data/full-examples/rest_from_scratch/part_1/config/locales/en.yml +5 -0
  41. data/full-examples/rest_from_scratch/part_1/config/routes.rb +60 -0
  42. data/full-examples/rest_from_scratch/part_1/db/migrate/20100830171258_create_items.rb +14 -0
  43. data/full-examples/rest_from_scratch/part_1/db/schema.rb +22 -0
  44. data/full-examples/rest_from_scratch/part_1/db/seeds.rb +7 -0
  45. data/full-examples/rest_from_scratch/part_1/lib/tasks/.gitkeep +0 -0
  46. data/full-examples/rest_from_scratch/part_1/public/404.html +26 -0
  47. data/full-examples/rest_from_scratch/part_1/public/422.html +26 -0
  48. data/full-examples/rest_from_scratch/part_1/public/500.html +26 -0
  49. data/full-examples/rest_from_scratch/part_1/public/favicon.ico +0 -0
  50. data/full-examples/rest_from_scratch/part_1/public/images/rails.png +0 -0
  51. data/full-examples/rest_from_scratch/part_1/public/index.html +239 -0
  52. data/full-examples/rest_from_scratch/part_1/public/javascripts/application.js +2 -0
  53. data/full-examples/rest_from_scratch/part_1/public/javascripts/controls.js +965 -0
  54. data/full-examples/rest_from_scratch/part_1/public/javascripts/dragdrop.js +974 -0
  55. data/full-examples/rest_from_scratch/part_1/public/javascripts/effects.js +1123 -0
  56. data/full-examples/rest_from_scratch/part_1/public/javascripts/prototype.js +6001 -0
  57. data/full-examples/rest_from_scratch/part_1/public/javascripts/rails.js +175 -0
  58. data/full-examples/rest_from_scratch/part_1/public/robots.txt +5 -0
  59. data/full-examples/rest_from_scratch/part_1/public/stylesheets/.gitkeep +0 -0
  60. data/full-examples/rest_from_scratch/part_1/public/stylesheets/scaffold.css +56 -0
  61. data/full-examples/rest_from_scratch/part_1/script/rails +6 -0
  62. data/full-examples/rest_from_scratch/part_1/spec/items_spec.rb +31 -0
  63. data/full-examples/rest_from_scratch/part_1/spec/spec_helper.rb +27 -0
  64. data/full-examples/rest_from_scratch/part_1/test/fixtures/items.yml +9 -0
  65. data/full-examples/rest_from_scratch/part_1/test/functional/items_controller_test.rb +49 -0
  66. data/full-examples/rest_from_scratch/part_1/test/performance/browsing_test.rb +9 -0
  67. data/full-examples/rest_from_scratch/part_1/test/test_helper.rb +13 -0
  68. data/full-examples/rest_from_scratch/part_1/test/unit/helpers/items_helper_test.rb +4 -0
  69. data/full-examples/rest_from_scratch/part_1/test/unit/item_test.rb +8 -0
  70. data/full-examples/rest_from_scratch/part_1/vendor/plugins/.gitkeep +0 -0
  71. data/full-examples/rest_from_scratch/part_2/.gitignore +4 -0
  72. data/full-examples/rest_from_scratch/part_2/.rspec +1 -0
  73. data/full-examples/rest_from_scratch/part_2/Gemfile +34 -0
  74. data/full-examples/rest_from_scratch/part_2/README +256 -0
  75. data/full-examples/rest_from_scratch/part_2/Rakefile +7 -0
  76. data/full-examples/rest_from_scratch/part_2/app/controllers/application_controller.rb +3 -0
  77. data/full-examples/rest_from_scratch/part_2/app/controllers/baskets_controller.rb +25 -0
  78. data/full-examples/rest_from_scratch/part_2/app/controllers/items_controller.rb +20 -0
  79. data/full-examples/rest_from_scratch/part_2/app/controllers/payments_controller.rb +17 -0
  80. data/full-examples/rest_from_scratch/part_2/app/helpers/application_helper.rb +2 -0
  81. data/full-examples/rest_from_scratch/part_2/app/helpers/baskets_helper.rb +2 -0
  82. data/full-examples/rest_from_scratch/part_2/app/helpers/items_helper.rb +2 -0
  83. data/full-examples/rest_from_scratch/part_2/app/helpers/payments_helper.rb +2 -0
  84. data/full-examples/rest_from_scratch/part_2/app/models/basket.rb +11 -0
  85. data/full-examples/rest_from_scratch/part_2/app/models/item.rb +2 -0
  86. data/full-examples/rest_from_scratch/part_2/app/models/payment.rb +3 -0
  87. data/full-examples/rest_from_scratch/part_2/app/views/baskets/show.tokamak +9 -0
  88. data/full-examples/rest_from_scratch/part_2/app/views/items/_show.tokamak +6 -0
  89. data/full-examples/rest_from_scratch/part_2/app/views/items/index.tokamak +14 -0
  90. data/full-examples/rest_from_scratch/part_2/app/views/layouts/application.html.erb +14 -0
  91. data/full-examples/rest_from_scratch/part_2/autotest/discover.rb +1 -0
  92. data/full-examples/rest_from_scratch/part_2/config.ru +4 -0
  93. data/full-examples/rest_from_scratch/part_2/config/application.rb +42 -0
  94. data/full-examples/rest_from_scratch/part_2/config/boot.rb +13 -0
  95. data/full-examples/rest_from_scratch/part_2/config/database.yml +22 -0
  96. data/full-examples/rest_from_scratch/part_2/config/environment.rb +5 -0
  97. data/full-examples/rest_from_scratch/part_2/config/environments/development.rb +26 -0
  98. data/full-examples/rest_from_scratch/part_2/config/environments/production.rb +49 -0
  99. data/full-examples/rest_from_scratch/part_2/config/environments/test.rb +35 -0
  100. data/full-examples/rest_from_scratch/part_2/config/initializers/backtrace_silencers.rb +7 -0
  101. data/full-examples/rest_from_scratch/part_2/config/initializers/inflections.rb +10 -0
  102. data/full-examples/rest_from_scratch/part_2/config/initializers/mime_types.rb +5 -0
  103. data/full-examples/rest_from_scratch/part_2/config/initializers/secret_token.rb +7 -0
  104. data/full-examples/rest_from_scratch/part_2/config/initializers/session_store.rb +8 -0
  105. data/full-examples/rest_from_scratch/part_2/config/locales/en.yml +5 -0
  106. data/full-examples/rest_from_scratch/part_2/config/routes.rb +65 -0
  107. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830171258_create_items.rb +16 -0
  108. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180139_create_baskets.rb +12 -0
  109. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830180203_create_payments.rb +16 -0
  110. data/full-examples/rest_from_scratch/part_2/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
  111. data/full-examples/rest_from_scratch/part_2/db/schema.rb +43 -0
  112. data/full-examples/rest_from_scratch/part_2/db/seeds.rb +7 -0
  113. data/full-examples/rest_from_scratch/part_2/lib/tasks/.gitkeep +0 -0
  114. data/full-examples/rest_from_scratch/part_2/public/404.html +26 -0
  115. data/full-examples/rest_from_scratch/part_2/public/422.html +26 -0
  116. data/full-examples/rest_from_scratch/part_2/public/500.html +26 -0
  117. data/full-examples/rest_from_scratch/part_2/public/favicon.ico +0 -0
  118. data/full-examples/rest_from_scratch/part_2/public/images/rails.png +0 -0
  119. data/full-examples/rest_from_scratch/part_2/public/index.html +239 -0
  120. data/full-examples/rest_from_scratch/part_2/public/javascripts/application.js +2 -0
  121. data/full-examples/rest_from_scratch/part_2/public/javascripts/controls.js +965 -0
  122. data/full-examples/rest_from_scratch/part_2/public/javascripts/dragdrop.js +974 -0
  123. data/full-examples/rest_from_scratch/part_2/public/javascripts/effects.js +1123 -0
  124. data/full-examples/rest_from_scratch/part_2/public/javascripts/prototype.js +6001 -0
  125. data/full-examples/rest_from_scratch/part_2/public/javascripts/rails.js +175 -0
  126. data/full-examples/rest_from_scratch/part_2/public/robots.txt +5 -0
  127. data/full-examples/rest_from_scratch/part_2/public/stylesheets/.gitkeep +0 -0
  128. data/full-examples/rest_from_scratch/part_2/public/stylesheets/scaffold.css +56 -0
  129. data/full-examples/rest_from_scratch/part_2/script/rails +6 -0
  130. data/full-examples/rest_from_scratch/part_2/spec/full_cycle_spec.rb +31 -0
  131. data/full-examples/rest_from_scratch/part_2/spec/items_spec.rb +31 -0
  132. data/full-examples/rest_from_scratch/part_2/spec/spec_helper.rb +27 -0
  133. data/full-examples/rest_from_scratch/part_2/test/fixtures/items.yml +9 -0
  134. data/full-examples/rest_from_scratch/part_2/test/functional/items_controller_test.rb +49 -0
  135. data/full-examples/rest_from_scratch/part_2/test/performance/browsing_test.rb +9 -0
  136. data/full-examples/rest_from_scratch/part_2/test/test_helper.rb +13 -0
  137. data/full-examples/rest_from_scratch/part_2/test/unit/helpers/items_helper_test.rb +4 -0
  138. data/full-examples/rest_from_scratch/part_2/test/unit/item_test.rb +8 -0
  139. data/full-examples/rest_from_scratch/part_2/vendor/plugins/.gitkeep +0 -0
  140. data/full-examples/rest_from_scratch/part_3/.gitignore +4 -0
  141. data/full-examples/rest_from_scratch/part_3/.rspec +1 -0
  142. data/full-examples/rest_from_scratch/part_3/Gemfile +33 -0
  143. data/full-examples/rest_from_scratch/part_3/README +256 -0
  144. data/full-examples/rest_from_scratch/part_3/Rakefile +7 -0
  145. data/full-examples/rest_from_scratch/part_3/app/controllers/application_controller.rb +3 -0
  146. data/full-examples/rest_from_scratch/part_3/app/controllers/baskets_controller.rb +34 -0
  147. data/full-examples/rest_from_scratch/part_3/app/controllers/items_controller.rb +20 -0
  148. data/full-examples/rest_from_scratch/part_3/app/controllers/payments_controller.rb +17 -0
  149. data/full-examples/rest_from_scratch/part_3/app/helpers/application_helper.rb +2 -0
  150. data/full-examples/rest_from_scratch/part_3/app/helpers/baskets_helper.rb +2 -0
  151. data/full-examples/rest_from_scratch/part_3/app/helpers/items_helper.rb +2 -0
  152. data/full-examples/rest_from_scratch/part_3/app/helpers/payments_helper.rb +2 -0
  153. data/full-examples/rest_from_scratch/part_3/app/models/basket.rb +11 -0
  154. data/full-examples/rest_from_scratch/part_3/app/models/item.rb +2 -0
  155. data/full-examples/rest_from_scratch/part_3/app/models/payment.rb +3 -0
  156. data/full-examples/rest_from_scratch/part_3/app/views/baskets/show.tokamak +9 -0
  157. data/full-examples/rest_from_scratch/part_3/app/views/items/_show.tokamak +6 -0
  158. data/full-examples/rest_from_scratch/part_3/app/views/items/index.tokamak +14 -0
  159. data/full-examples/rest_from_scratch/part_3/app/views/layouts/application.html.erb +14 -0
  160. data/full-examples/rest_from_scratch/part_3/autotest/discover.rb +1 -0
  161. data/full-examples/rest_from_scratch/part_3/config.ru +4 -0
  162. data/full-examples/rest_from_scratch/part_3/config/application.rb +42 -0
  163. data/full-examples/rest_from_scratch/part_3/config/boot.rb +13 -0
  164. data/full-examples/rest_from_scratch/part_3/config/database.yml +22 -0
  165. data/full-examples/rest_from_scratch/part_3/config/environment.rb +5 -0
  166. data/full-examples/rest_from_scratch/part_3/config/environments/development.rb +26 -0
  167. data/full-examples/rest_from_scratch/part_3/config/environments/production.rb +49 -0
  168. data/full-examples/rest_from_scratch/part_3/config/environments/test.rb +35 -0
  169. data/full-examples/rest_from_scratch/part_3/config/initializers/backtrace_silencers.rb +7 -0
  170. data/full-examples/rest_from_scratch/part_3/config/initializers/inflections.rb +10 -0
  171. data/full-examples/rest_from_scratch/part_3/config/initializers/mime_types.rb +5 -0
  172. data/full-examples/rest_from_scratch/part_3/config/initializers/secret_token.rb +7 -0
  173. data/full-examples/rest_from_scratch/part_3/config/initializers/session_store.rb +8 -0
  174. data/full-examples/rest_from_scratch/part_3/config/locales/en.yml +5 -0
  175. data/full-examples/rest_from_scratch/part_3/config/routes.rb +67 -0
  176. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830171258_create_items.rb +16 -0
  177. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180139_create_baskets.rb +12 -0
  178. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830180203_create_payments.rb +16 -0
  179. data/full-examples/rest_from_scratch/part_3/db/migrate/20100830185456_connect_baskets_to_items.rb +13 -0
  180. data/full-examples/rest_from_scratch/part_3/db/schema.rb +43 -0
  181. data/full-examples/rest_from_scratch/part_3/db/seeds.rb +7 -0
  182. data/full-examples/rest_from_scratch/part_3/lib/tasks/.gitkeep +0 -0
  183. data/full-examples/rest_from_scratch/part_3/public/404.html +26 -0
  184. data/full-examples/rest_from_scratch/part_3/public/422.html +26 -0
  185. data/full-examples/rest_from_scratch/part_3/public/500.html +26 -0
  186. data/full-examples/rest_from_scratch/part_3/public/favicon.ico +0 -0
  187. data/full-examples/rest_from_scratch/part_3/public/images/rails.png +0 -0
  188. data/full-examples/rest_from_scratch/part_3/public/index.html +239 -0
  189. data/full-examples/rest_from_scratch/part_3/public/javascripts/application.js +2 -0
  190. data/full-examples/rest_from_scratch/part_3/public/javascripts/controls.js +965 -0
  191. data/full-examples/rest_from_scratch/part_3/public/javascripts/dragdrop.js +974 -0
  192. data/full-examples/rest_from_scratch/part_3/public/javascripts/effects.js +1123 -0
  193. data/full-examples/rest_from_scratch/part_3/public/javascripts/prototype.js +6001 -0
  194. data/full-examples/rest_from_scratch/part_3/public/javascripts/rails.js +175 -0
  195. data/full-examples/rest_from_scratch/part_3/public/robots.txt +5 -0
  196. data/full-examples/rest_from_scratch/part_3/public/stylesheets/.gitkeep +0 -0
  197. data/full-examples/rest_from_scratch/part_3/public/stylesheets/scaffold.css +56 -0
  198. data/full-examples/rest_from_scratch/part_3/script/rails +6 -0
  199. data/full-examples/rest_from_scratch/part_3/spec/buying_process_spec.rb +24 -0
  200. data/full-examples/rest_from_scratch/part_3/spec/client/buying_process.rb +23 -0
  201. data/full-examples/rest_from_scratch/part_3/spec/client/scenarios/buying_process.scenario +15 -0
  202. data/full-examples/rest_from_scratch/part_3/spec/client/steps/buying_process.rb +56 -0
  203. data/full-examples/rest_from_scratch/part_3/spec/full_cycle_spec.rb +30 -0
  204. data/full-examples/rest_from_scratch/part_3/spec/items_spec.rb +31 -0
  205. data/full-examples/rest_from_scratch/part_3/spec/spec_helper.rb +27 -0
  206. data/full-examples/rest_from_scratch/part_3/test/fixtures/items.yml +9 -0
  207. data/full-examples/rest_from_scratch/part_3/test/functional/items_controller_test.rb +49 -0
  208. data/full-examples/rest_from_scratch/part_3/test/performance/browsing_test.rb +9 -0
  209. data/full-examples/rest_from_scratch/part_3/test/test_helper.rb +13 -0
  210. data/full-examples/rest_from_scratch/part_3/test/unit/helpers/items_helper_test.rb +4 -0
  211. data/full-examples/rest_from_scratch/part_3/test/unit/item_test.rb +8 -0
  212. data/full-examples/rest_from_scratch/part_3/vendor/plugins/.gitkeep +0 -0
  213. data/init.rb +1 -0
  214. data/lib/restfulie/client/README.textile +33 -0
  215. data/lib/restfulie/client/feature/fake_response.rb +13 -0
  216. data/lib/restfulie/client/feature/follow_request.rb +29 -11
  217. data/lib/restfulie/client/feature/{throw_error.rb → throw_error_request.rb} +3 -2
  218. data/lib/restfulie/client/feature/verb.rb +12 -19
  219. data/lib/restfulie/common.rb +1 -1
  220. data/lib/restfulie/server.rb +1 -1
  221. data/lib/restfulie/server/action_controller/base.rb +0 -2
  222. data/lib/restfulie/server/action_controller/restful_responder.rb +2 -2
  223. data/lib/restfulie/server/action_controller/trait/cacheable.rb +22 -9
  224. data/lib/restfulie/server/hypertemplate.rb +3 -0
  225. data/lib/restfulie/version.rb +2 -2
  226. data/restfulie.gemspec +42 -0
  227. data/script/console +8 -0
  228. data/site/README +1 -0
  229. data/site/Rakefile +10 -0
  230. data/site/app/controllers/application_controller.rb +11 -0
  231. data/site/app/controllers/java_controller.rb +53 -0
  232. data/site/app/controllers/javascript_controller.rb +12 -0
  233. data/site/app/controllers/restful_csharp_controller.rb +12 -0
  234. data/site/app/controllers/ruby_controller.rb +24 -0
  235. data/site/app/controllers/systems_controller.rb +14 -0
  236. data/site/app/helpers/application_helper.rb +10 -0
  237. data/site/app/helpers/documentation_helper.rb +2 -0
  238. data/site/app/views/java/features.html.erb +99 -0
  239. data/site/app/views/java/hypermedia.html.erb +97 -0
  240. data/site/app/views/java/server.html.erb +0 -0
  241. data/site/app/views/layouts/_blackmenu.html.erb +11 -0
  242. data/site/app/views/layouts/_uppermenu.html.erb +24 -0
  243. data/site/app/views/layouts/application.html.erb +50 -0
  244. data/site/app/views/layouts/java.html.erb +72 -0
  245. data/site/app/views/layouts/javascript.html.erb +62 -0
  246. data/site/app/views/layouts/restful_csharp.html.erb +81 -0
  247. data/site/app/views/layouts/restful_java.html.erb +87 -0
  248. data/site/app/views/shared/_examples.html.erb +29 -0
  249. data/site/app/views/shared/_negotiation.html.erb +9 -0
  250. data/site/app/views/shared/_simple_representation.html.erb +37 -0
  251. data/site/app/views/systems/features.html.erb +106 -0
  252. data/site/app/views/systems/index.html.erb +97 -0
  253. data/site/app/views/systems/support.html.erb +54 -0
  254. data/site/config/boot.rb +110 -0
  255. data/site/config/database.yml +22 -0
  256. data/site/config/environments/development.rb +17 -0
  257. data/site/config/environments/production.rb +28 -0
  258. data/site/config/environments/test.rb +28 -0
  259. data/site/config/initializers/backtrace_silencers.rb +7 -0
  260. data/site/config/initializers/inflections.rb +10 -0
  261. data/site/config/initializers/mime_types.rb +5 -0
  262. data/site/config/initializers/new_rails_defaults.rb +21 -0
  263. data/site/config/initializers/session_store.rb +15 -0
  264. data/site/config/locales/en.yml +5 -0
  265. data/site/config/routes.rb +56 -0
  266. data/site/db/seeds.rb +7 -0
  267. data/site/public/404.html +30 -0
  268. data/site/public/422.html +30 -0
  269. data/site/public/500.html +30 -0
  270. data/site/public/caelumobjects-restful-rails.pdf +0 -0
  271. data/site/public/docs.html +164 -0
  272. data/site/public/favicon.ico +0 -0
  273. data/site/public/images/bgBarHome-trans.png +0 -0
  274. data/site/public/images/bgHeader.png +0 -0
  275. data/site/public/images/bgSubMenu-trans.png +0 -0
  276. data/site/public/images/code_java_01.png +0 -0
  277. data/site/public/images/code_java_02.png +0 -0
  278. data/site/public/images/code_net_01.png +0 -0
  279. data/site/public/images/code_net_02.png +0 -0
  280. data/site/public/images/code_ruby_01.png +0 -0
  281. data/site/public/images/code_ruby_02.png +0 -0
  282. data/site/public/images/dependency.png +0 -0
  283. data/site/public/images/ldl-trans.png +0 -0
  284. data/site/public/images/leftBGBtn.png +0 -0
  285. data/site/public/images/logoCaelumGray-trans.png +0 -0
  286. data/site/public/images/negotiation.png +0 -0
  287. data/site/public/images/rails.png +0 -0
  288. data/site/public/images/restfulieSprites-trans.png +0 -0
  289. data/site/public/images/rightBGBtn.png +0 -0
  290. data/site/public/images/service.png +0 -0
  291. data/site/public/images/subMenuBottom-trans.png +0 -0
  292. data/site/public/images/subMenuTop-trans.png +0 -0
  293. data/site/public/javascripts/application.js +2 -0
  294. data/site/public/javascripts/controls.js +963 -0
  295. data/site/public/javascripts/dragdrop.js +973 -0
  296. data/site/public/javascripts/effects.js +1128 -0
  297. data/site/public/javascripts/prototype.js +4320 -0
  298. data/site/public/robots.txt +5 -0
  299. data/site/public/stylesheets/menu.css +98 -0
  300. data/site/public/stylesheets/screen.css +345 -0
  301. data/site/public/stylesheets/uppermenu.css +87 -0
  302. data/site/script/about +4 -0
  303. data/site/script/console +3 -0
  304. data/site/script/dbconsole +3 -0
  305. data/site/script/destroy +3 -0
  306. data/site/script/generate +3 -0
  307. data/site/script/performance/benchmarker +3 -0
  308. data/site/script/performance/profiler +3 -0
  309. data/site/script/plugin +3 -0
  310. data/site/script/runner +3 -0
  311. data/site/script/server +3 -0
  312. data/site/test/functional/documentation_controller_test.rb +8 -0
  313. data/site/test/performance/browsing_test.rb +9 -0
  314. data/site/test/test_helper.rb +38 -0
  315. data/site/test/unit/helpers/documentation_helper_test.rb +4 -0
  316. data/spec/integration/twitter.rb +945 -0
  317. data/spec/integration/twitter_spec.rb +24 -0
  318. data/spec/spec_helper.rb +4 -0
  319. data/spec/unit/client/base_spec.rb +9 -0
  320. data/spec/unit/client/cache/fake_spec.rb +23 -0
  321. data/spec/unit/client/cache/http_ext_spec.rb +182 -0
  322. data/spec/unit/client/cache/restrictions_spec.rb +24 -0
  323. data/spec/unit/client/configuration_spec.rb +54 -0
  324. data/spec/unit/client/ext/open_search_spec.rb +28 -0
  325. data/spec/unit/client/feature/conneg_when_unaccepted_spec.rb +45 -0
  326. data/spec/unit/client/feature/open_search/pattern_matcher_spec.rb +21 -0
  327. data/spec/unit/client/feature/rescue_exception_spec.rb +27 -0
  328. data/spec/unit/client/feature/retry_when_unavailable_spec.rb +38 -0
  329. data/spec/unit/client/feature/verb_spec.rb +37 -0
  330. data/spec/unit/client/http/link_header_spec.rb +43 -0
  331. data/spec/unit/client/mikyung/concatenator_spec.rb +14 -0
  332. data/spec/unit/client/mikyung/rest_process_model_spec.rb +140 -0
  333. data/spec/unit/client/mikyung/steady_state_walker_spec.rb +39 -0
  334. data/spec/unit/client/mikyung/then_condition_spec.rb +38 -0
  335. data/spec/unit/client/mikyung/when_condition_spec.rb +59 -0
  336. data/spec/unit/client/mikyung_spec.rb +72 -0
  337. data/spec/unit/client/stack_navigator.rb +75 -0
  338. data/spec/unit/common/errors_spec.rb +33 -0
  339. data/spec/unit/restfulie_spec.rb +30 -0
  340. data/spec/unit/server/action_controller/trait/cacheable_spec.rb +48 -0
  341. data/spec/unit/server/action_controller/trait/created_spec.rb +50 -0
  342. data/spec/unit/server/configuration_spec.rb +36 -0
  343. data/spec/unit/server/core_ext/array_spec.rb +35 -0
  344. data/spec/unit/server/restfulie_controller_spec.rb +110 -0
  345. data/spec/unit/spec_helper.rb +1 -0
  346. data/tests/.gitignore +5 -0
  347. data/tests/.rspec +1 -0
  348. data/tests/Gemfile +42 -0
  349. data/tests/README +256 -0
  350. data/tests/Rakefile +7 -0
  351. data/tests/app/controllers/albums_controller.rb +10 -0
  352. data/tests/app/controllers/application_controller.rb +3 -0
  353. data/tests/app/controllers/artists_controller.rb +12 -0
  354. data/tests/app/controllers/cacheable_songs_controller.rb +28 -0
  355. data/tests/app/controllers/projects_controller.rb +13 -0
  356. data/tests/app/controllers/render_controller.rb +15 -0
  357. data/tests/app/controllers/songs_controller.rb +2 -0
  358. data/tests/app/helpers/albums_helper.rb +2 -0
  359. data/tests/app/helpers/application_helper.rb +2 -0
  360. data/tests/app/helpers/artists_helper.rb +2 -0
  361. data/tests/app/helpers/cacheable_clients_helper.rb +2 -0
  362. data/tests/app/helpers/projects_helper.rb +2 -0
  363. data/tests/app/helpers/render_helper.rb +2 -0
  364. data/tests/app/helpers/songs_helper.rb +2 -0
  365. data/tests/app/models/album.rb +4 -0
  366. data/tests/app/models/artist.rb +2 -0
  367. data/tests/app/models/song.rb +3 -0
  368. data/tests/app/views/albums/_member.tokamak +11 -0
  369. data/tests/app/views/albums/index.tokamak +26 -0
  370. data/tests/app/views/albums/show.tokamak +3 -0
  371. data/tests/app/views/artists/_form.html.erb +25 -0
  372. data/tests/app/views/artists/edit.html.erb +6 -0
  373. data/tests/app/views/artists/index.html.erb +25 -0
  374. data/tests/app/views/artists/new.html.erb +5 -0
  375. data/tests/app/views/artists/show.html.erb +15 -0
  376. data/tests/app/views/cacheable_clients/collection.tokamak +0 -0
  377. data/tests/app/views/cacheable_clients/empty.tokamak +0 -0
  378. data/tests/app/views/cacheable_clients/single.tokamak +0 -0
  379. data/tests/app/views/layouts/application.html.erb +14 -0
  380. data/tests/app/views/projects/index.atom.tokamak +14 -0
  381. data/tests/app/views/projects/new.atom.tokamak +7 -0
  382. data/tests/app/views/projects/new.tokamak +0 -0
  383. data/tests/app/views/projects/show.tokamak +7 -0
  384. data/tests/autotest/discover.rb +2 -0
  385. data/tests/config.ru +4 -0
  386. data/tests/config/application.rb +42 -0
  387. data/tests/config/boot.rb +13 -0
  388. data/tests/config/database.yml +22 -0
  389. data/tests/config/environment.rb +5 -0
  390. data/tests/config/environments/development.rb +22 -0
  391. data/tests/config/environments/production.rb +49 -0
  392. data/tests/config/environments/test.rb +35 -0
  393. data/tests/config/initializers/backtrace_silencers.rb +7 -0
  394. data/tests/config/initializers/inflections.rb +10 -0
  395. data/tests/config/initializers/mime_types.rb +5 -0
  396. data/tests/config/initializers/secret_token.rb +7 -0
  397. data/tests/config/initializers/session_store.rb +8 -0
  398. data/tests/config/locales/en.yml +5 -0
  399. data/tests/config/routes.rb +66 -0
  400. data/tests/db/migrate/20100817165415_create_albums.rb +15 -0
  401. data/tests/db/migrate/20100817165436_create_songs.rb +16 -0
  402. data/tests/db/migrate/20100819165238_create_artists.rb +14 -0
  403. data/tests/db/schema.rb +39 -0
  404. data/tests/db/seeds.rb +7 -0
  405. data/tests/lib/tasks/.gitkeep +0 -0
  406. data/tests/public/404.html +26 -0
  407. data/tests/public/422.html +26 -0
  408. data/tests/public/500.html +26 -0
  409. data/tests/public/favicon.ico +0 -0
  410. data/tests/public/images/rails.png +0 -0
  411. data/tests/public/index.html +262 -0
  412. data/tests/public/javascripts/application.js +2 -0
  413. data/tests/public/javascripts/controls.js +965 -0
  414. data/tests/public/javascripts/dragdrop.js +974 -0
  415. data/tests/public/javascripts/effects.js +1123 -0
  416. data/tests/public/javascripts/prototype.js +6001 -0
  417. data/tests/public/javascripts/rails.js +175 -0
  418. data/tests/public/robots.txt +5 -0
  419. data/tests/public/stylesheets/.gitkeep +0 -0
  420. data/tests/public/stylesheets/scaffold.css +56 -0
  421. data/tests/script/rails +6 -0
  422. data/tests/spec/controllers/integration/albums_controller_spec.rb +60 -0
  423. data/tests/spec/controllers/integration/cacheable_songs_controller_spec.rb +43 -0
  424. data/tests/spec/controllers/integration/controller_base_spec.rb +35 -0
  425. data/tests/spec/controllers/integration/created_responder_spec.rb +35 -0
  426. data/tests/spec/controllers/integration/params_parser_spec.rb +150 -0
  427. data/tests/spec/controllers/integration/projects_controller_spec.rb +30 -0
  428. data/tests/spec/requests/_integration_client.txt +1 -0
  429. data/tests/spec/requests/base_spec.rb2 +142 -0
  430. data/tests/spec/requests/fake_server.rb +107 -0
  431. data/tests/spec/requests/http/adapter_spec.rb +105 -0
  432. data/tests/spec/requests/http/content_type_spec.rb +88 -0
  433. data/tests/spec/requests/http/errors_spec.rb +130 -0
  434. data/tests/spec/requests/http/history_spec.rb +56 -0
  435. data/tests/spec/requests/http/marshal_spec.rb2 +113 -0
  436. data/tests/spec/requests/http/parameters_spec.rb +12 -0
  437. data/tests/spec/spec.opts +5 -0
  438. data/tests/spec/spec_helper.rb +61 -0
  439. data/tests/spec/support/atoms/full.rb.txt +63 -0
  440. data/tests/spec/support/atoms/related_songs +30 -0
  441. data/tests/spec/support/atoms/song_1 +11 -0
  442. data/tests/spec/support/atoms/song_2 +11 -0
  443. data/tests/spec/support/atoms/song_3 +11 -0
  444. data/tests/spec/support/atoms/song_4 +11 -0
  445. data/tests/spec/support/atoms/songs +51 -0
  446. data/tests/spec/support/atoms/songs_top_ten +27 -0
  447. data/tests/spec/support/data_helper.rb +13 -0
  448. data/tests/test/performance/browsing_test.rb +9 -0
  449. data/tests/test/test_helper.rb +13 -0
  450. data/tests/vendor/plugins/.gitkeep +0 -0
  451. metadata +534 -97
  452. data/lib/restfulie/server/tokamak.rb +0 -6
@@ -0,0 +1,130 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::HTTP do
4
+
5
+ context "error conditions" do
6
+
7
+ before do
8
+ @host = "http://localhost:4567"
9
+ @client = Restfulie.at(@host)
10
+ end
11
+
12
+ it "receives error when 300..399 code is returned" do
13
+ @client.at("/test/302").get.should respond_with_status(200)
14
+ end
15
+ it "raise Error::Redirection error when 300..399 code is returned" do
16
+ lambda { @client.at("/test/302").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::Redirection
17
+ end
18
+
19
+ it "raise Error::BadRequest error when 400 code is returned" do
20
+ @client.at("/test/400").get.should respond_with_status(400)
21
+ end
22
+ it "receives error when 400 code is returned" do
23
+ lambda { @client.at("/test/400").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::BadRequest
24
+ end
25
+
26
+ it "raise Error::Unauthorized error when 401 code is returned" do
27
+ @client.at("/test/401").get.should respond_with_status(401)
28
+ end
29
+ it "receives error when 401 code is returned" do
30
+ lambda { @client.at("/test/401").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::Unauthorized
31
+ end
32
+
33
+ it "raise Error::Forbidden error when 403 code is returned" do
34
+ @client.at("/test/403").get.should respond_with_status(403)
35
+ end
36
+
37
+ it "receives error when 403 code is returned" do
38
+ lambda { Restfulie.at("http://localhost:4567/test/403").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::Forbidden
39
+ end
40
+
41
+ it "raise Error::NotFound error when 404 code is returned" do
42
+ @client.at("/test/404").get.should respond_with_status(404)
43
+ end
44
+ it "receives error when 404 code is returned" do
45
+ lambda { @client.at("/test/404").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::NotFound
46
+ end
47
+
48
+ it "raise Error::MethodNotAllowed error when 405 code is returned" do
49
+ @client.at("/test/405").get.should respond_with_status(405)
50
+ end
51
+ it "receives error when 405 code is returned" do
52
+ lambda { @client.at("/test/405").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::MethodNotAllowed
53
+ end
54
+
55
+ it "raise Error::ProxyAuthenticationRequired error when 407 code is returned" do
56
+ @client.at("/test/407").get.should respond_with_status(407)
57
+ end
58
+ it "receives error when 407 code is returned" do
59
+ lambda { @client.at("/test/407").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::ProxyAuthenticationRequired
60
+ end
61
+
62
+ it "receives error when 409 code is returned" do
63
+ @client.at("/test/409").get.should respond_with_status(409)
64
+ end
65
+
66
+ it "raise Error::Conflict error when 409 code is returned" do
67
+ lambda { @client.at("/test/409").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::Conflict
68
+ end
69
+
70
+ it "raise Error::Gone error when 410 code is returned" do
71
+ @client.at("/test/410").get.should respond_with_status(410)
72
+ end
73
+ it "receives error when 410 code is returned" do
74
+ lambda { @client.at("/test/410").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::Gone
75
+ end
76
+
77
+ it "raise Error::PreconditionFailed error when 412 code is returned" do
78
+ @client.at("/test/412").get.should respond_with_status(412)
79
+ end
80
+ it "receives error when 412 code is returned" do
81
+ lambda { @client.at("/test/412").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::PreconditionFailed
82
+ end
83
+
84
+ it "receives error when 413 code is returned" do
85
+ @client.at("/test/413").get.should respond_with_status(413)
86
+ end
87
+ it "raise Error::ClientError error when 413 code is returned" do
88
+ lambda { @client.at("/test/413").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::ClientError
89
+ end
90
+
91
+ it "receives error when 501 code is returned" do
92
+ @client.at("/test/501").get.should respond_with_status(501)
93
+ end
94
+ it "raise Error::NotImplemented error when 501 code is returned" do
95
+ lambda { @client.at("/test/501").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::NotImplemented
96
+ end
97
+
98
+ it "receives error when 500 code is returned" do
99
+ @client.at("/test/500").get.should respond_with_status(500)
100
+ end
101
+ it "raise Error::ServerError error when 500 code is returned" do
102
+ lambda { @client.at("/test/500").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::ServerError
103
+ end
104
+
105
+ it "receives error when 503 code is returned" do
106
+ pending "should treat it well when the server is not there..."
107
+ Restfulie.at("http://localhost:2222/").get.should respond_with_status(503)
108
+ end
109
+
110
+ it "raise Error::ServerNotAvailableError error when 503 code is returned" do
111
+ lambda { Restfulie.at("http://localhost:2222/").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::ServerNotAvailableError
112
+ end
113
+
114
+ it "receives error when 502..599 code is returned" do
115
+ @client.at("/test/502").get.should respond_with_status(502)
116
+ end
117
+ it "raise Error::ServerError error when 502..599 code is returned" do
118
+ lambda { @client.at("/test/502").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::ServerError
119
+ end
120
+
121
+ it "receives error when 600 or bigger code is returned" do
122
+ @client.at("/test/600").get.should respond_with_status(600)
123
+ end
124
+ it "raise Error::UnknownError error when 600 or bigger code is returned" do
125
+ lambda { @client.at("/test/600").get! }.should raise_exception ::Restfulie::Client::HTTP::Error::UnknownError
126
+ end
127
+
128
+ end
129
+ end
130
+
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::HTTP do
4
+
5
+ context 'RequestHistory' do
6
+
7
+ before do
8
+ @host = "http://localhost:4567"
9
+ end
10
+
11
+ it "should remember last requests" do
12
+ r1 = Restfulie.at(@host).history.at('/test').accepts('application/atom+xml').with('Accept-Language' => 'en').get
13
+ r1.should respond_with_status(200)
14
+ r2 = r1.debug.at('/test').accepts('text/html').with('Accept-Language' => 'pt-BR').head
15
+ r2.should respond_with_status(200)
16
+ r3 = r2.at('/test').as('application/xml').with('Accept-Language' => 'en').delete!
17
+ r3.should respond_with_status(200)
18
+ r4 = r3.at('/test/500').accepts('application/xml').with('Accept-Language' => 'en').get
19
+ r4.should respond_with_status(500)
20
+
21
+ req = r4.debug.history(-4)
22
+ req.get.should respond_with_status(200)
23
+ req.path.should == '/test'
24
+ req.host.to_s.should == @host + "/test"
25
+ req.headers['Accept'].should == 'application/atom+xml'
26
+ req.headers['Accept-Language'].should == 'en'
27
+
28
+ req = req.history(-4)
29
+ req.head.should respond_with_status(200)
30
+ req.path.should == '/test'
31
+ req.host.to_s.should == @host + "/test"
32
+ req.headers['Accept'].should == 'text/html'
33
+ req.headers['Accept-Language'].should == 'pt-BR'
34
+
35
+ req = req.history(-4)
36
+ req.post!.should respond_with_status(200)
37
+ req.path.should == '/test'
38
+ req.host.to_s.should == @host + "/test"
39
+ req.headers['Accept'].should == 'application/xml'
40
+ req.headers['Accept-Language'].should == 'en'
41
+ req.headers['Content-Type'].should == 'application/xml'
42
+
43
+ req = req.history(-4)
44
+ req.get.should respond_with_status(500)
45
+ req.path.should == '/test/500'
46
+ req.host.to_s.should == @host + "/test/500"
47
+ req.headers['Accept'].should == 'application/xml'
48
+ req.headers['Accept-Language'].should == 'en'
49
+
50
+ lambda { req.history(10).request }.should raise_error RuntimeError
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::HTTP::RequestMarshaller do
4
+
5
+ before(:all) do
6
+ @marshaller = Restfulie::Client::HTTP::RequestMarshallerExecutor.new('http://localhost:4567')
7
+ end
8
+
9
+ context 'raw' do
10
+
11
+ context 'shouldnt unmarshal if forcing raw' do
12
+
13
+ let(:raw_response) { @marshaller.at('/songs').accepts('application/atom+xml').raw.get! }
14
+
15
+ it "should respond to 200 code" do
16
+ raw_response.code.should equal 200
17
+ end
18
+
19
+ it "response class should Restfulie response" do
20
+ raw_response.class.should equal Restfulie::Client::HTTP::Response
21
+ end
22
+
23
+ it "body should equal to response data" do
24
+ raw_response.body.should == response_data( 'atoms', 'songs' )
25
+ end
26
+
27
+ end
28
+
29
+ context "follow 201 responses and shouldnt unmarshal if forcing raw" do
30
+ let(:raw_response) { @marshaller.at('/test/redirect/songs').accepts('application/atom+xml').as("application/atom+xml").raw.post!('<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom"><id>http://example.com/albums/1</id><title>Albums feed</title><updated>2010-05-03T16:29:26-03:00</updated></feed>') }
31
+
32
+ it "should respond to 200 code" do
33
+ raw_response.response.code.should == 200
34
+ end
35
+
36
+ it "body should equal to response data" do
37
+ raw_response.response.body.should == response_data( 'atoms', 'songs' )
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ context 'marshal' do
45
+
46
+ # before(:all) do
47
+ # Restfulie.recipe(:atom, :name => :custom_song) do |representation, song|
48
+ # representation.values do |value|
49
+ # value.id "ID/#{song.id}"
50
+ # value.title "Title #{song.title}"
51
+ # value.updated song.updated
52
+ # end
53
+ # end
54
+ # end
55
+
56
+ it 'should unmarshal' do
57
+ pending
58
+ songs = @marshaller.at('/songs').accepts('application/atom+xml').get!
59
+
60
+ songs.response.code.should == 200
61
+ songs.title.should == 'Songs feed'
62
+ songs.id.should == 'http://localhost:4567/songs'
63
+ songs.updated.year.should == 2010
64
+ songs.entries.size.should == 4
65
+
66
+ a_song = songs.entries.first
67
+ a_song.title.should == 'Song 1'
68
+ a_song.id.should == 'http://localhost:4567/songs_1'
69
+
70
+ top_ten_songs = songs.links.top_ten.get!
71
+ top_ten_songs.response.code.should == 200
72
+ top_ten_songs.title.should == 'Top Ten Songs feed'
73
+ top_ten_songs.id.should == 'http://localhost:4567/songs_top_ten'
74
+ top_ten_songs.updated.year.should == 2010
75
+ a_song = top_ten_songs.entries.first
76
+ a_song.title.should == 'Song 3'
77
+ a_song.id.should == 'http://localhost:4567/song_3'
78
+
79
+ top_ten_songs = songs.links.top_ten.get!
80
+ a_song = top_ten_songs.entries.first
81
+ related_songs = a_song.links.related_songs.get!
82
+ similar_song = related_songs.entries.first.links.similar_song
83
+ similar_song.get!.title.should == 'Song 4 feed'
84
+ end
85
+
86
+ it 'should marshal' do
87
+ pending
88
+ songs = @marshaller.at('/songs').accepts('application/atom+xml').get!
89
+
90
+ a_song = songs.entries.first
91
+ a_song.title = "Update song #{a_song.title}"
92
+
93
+ songs = @marshaller.at('/test/redirect/songs').as("application/atom+xml").post!(a_song)
94
+ songs.response.code.should == 200
95
+
96
+ songs = @marshaller.at('/test/redirect/songs').as("application/atom+xml").post!(a_song, :recipe => :custom_song)
97
+ songs.response.code.should == 200
98
+ end
99
+
100
+ end
101
+
102
+ it 'should understand a different response content type from its request' do
103
+ result = Restfulie.at('http://localhost:4567/with_content').as("application/xml").post!('<order></order>')
104
+ result.response.headers['content-type'].should == "application/atom+xml"
105
+ end
106
+ end
107
+
108
+ describe Restfulie::Client::HTTP::RequestMarshaller do
109
+ it "should retrieve any content type if no accepts is specified" do
110
+ result = Restfulie.at('http://localhost:4567/html_result').get!
111
+ result.response.headers['content-type'].should == "text/html"
112
+ end
113
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie do
4
+
5
+ it "should accept parameters in get requests" do
6
+ result = Restfulie.at('http://localhost:4567/request_with_querystring').get(:foo => "bar", :bar => "foo")
7
+ params = JSON.parse(result.body)
8
+ params["foo"].should == "bar"
9
+ params["bar"].should == "foo"
10
+ end
11
+
12
+ end
@@ -0,0 +1,5 @@
1
+ --colour
2
+ --format html:doc/rspec_results.html
3
+ --format specdoc
4
+ --loadby mtime
5
+ --reverse
@@ -0,0 +1,61 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+ require File.expand_path("../../config/environment", __FILE__)
5
+ require 'rspec/rails'
6
+
7
+ # Requires supporting files with custom matchers and macros, etc,
8
+ # in ./support/ and its subdirectories.
9
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
+
11
+ module ResponseMatchers
12
+
13
+ class ResponseStatus
14
+
15
+ def initialize(response_code)
16
+ @expected_code = response_code.to_s
17
+ end
18
+
19
+ def matches?(response_header)
20
+ @actual_code = response_header.code
21
+ @expected_code.to_i == @actual_code.to_i
22
+ end
23
+
24
+ def failure_message
25
+ "expected response status to be #{@expected_code} but it's #{@actual_code}"
26
+ end
27
+
28
+ def negative_failure_message
29
+ "didn't expect #{@expected_code} to be #{@actual_code}"
30
+ end
31
+
32
+ end
33
+
34
+ def respond_with_status(response_code)
35
+ ResponseStatus.new(response_code)
36
+ end
37
+
38
+ end
39
+
40
+ RSpec.configure do |config|
41
+ # == Mock Framework
42
+ #
43
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
44
+ #
45
+ # config.mock_with :mocha
46
+ # config.mock_with :flexmock
47
+ # config.mock_with :rr
48
+ config.mock_with :rspec
49
+
50
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
51
+
52
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
53
+ # examples within a transaction, comment the following line or assign false
54
+ # instead of true.
55
+ config.use_transactional_fixtures = true
56
+
57
+ config.include(ResponseMatchers)
58
+ end
59
+
60
+ # Change output logger
61
+ Restfulie::Common::Logger.logger = ActiveSupport::BufferedLogger.new(File.join(File.dirname(__FILE__), "logs", "spec.log"))
@@ -0,0 +1,63 @@
1
+ # Revision: 4 #
2
+ collection(@materias) do |collection, materias| # <feed xmlns="http://www.w3.org/2005/Atom" xmlns:materias="http://example.com.br">
3
+ #
4
+ collection.values("xmlns:materias" => "http://example.com.br") do |values| #
5
+ values.id "uri:materia:1" # <id>uri:materia:1</id>
6
+ values.title "Materias" # <title>Materias</title>
7
+ values.updated Time.now # <updated>2010-05-03T16:29:26-03:00</updated>
8
+ #
9
+ values.author { # <author>
10
+ values.name "Éverton Ribeiro" # <name>Éverton Antônio Ribeiro</name>
11
+ values.email "nuxlli@gmail.com" # <email>nuxlli@gmail.com</email>
12
+ } # </author>
13
+ #
14
+ values.author { # <author>
15
+ values.name "Luis Felipe Cipriani" # <name>Luis Felipe Cipriani</name>
16
+ values.email "lfcipriani@gmail.com" # <email>lfcipriani@gmail.com</email>
17
+ } # </author>
18
+ #
19
+ values["materias"].dominio "editorial" # <materias:dominio>editorial</materias:dominio>
20
+ values.count("xmlns" => "http://example.com.br") do # <count xmlns="http://example.com.br">
21
+ values.materias 1 # <materias>1</materias>
22
+ values.albums 1 # <albums>1</albums>
23
+ end # </count>
24
+ end #
25
+ #
26
+ collection.members do |member, materia| # <entry xmlns:materias="http://example.com.br">
27
+ #
28
+ member.values("xmlns:materias" => "http://example.com.br") do |values| #
29
+ values.id "uri:1" # <id>uri:1</id>
30
+ values.title "Materias 1" # <title>Materia 1</title>
31
+ values.updated materia.updated_at # <updated>2010-05-03T16:29:26-03:00</updated>
32
+ #
33
+ values["materias"].criacao { # <materias:criacao>
34
+ values["materias"].autor "Luis Felipe Cipriani" # <materias:autor>Luis Felipe Cipriani</materias:autor>
35
+ values["materias"].data_de_criacao Time.now # <materias:data_de_criacao>2010-05-03T16:29:26-03:00</materias:data_de_criacao>
36
+ } # </materias:criacao>
37
+ #
38
+ values["materias"].editorial(:editoria => "veja") do # <materias:editorial editoria="veja">
39
+ values["materias"].categoria "categoria 1, categoria 2" # <materias:categoria>categoria 1, categoria 2</materias:categoria>
40
+ end # </materias:editorial>
41
+ #
42
+ values["materias"].albums("xmlns:albums" => "http://example.com.br") do # <materias:albums xmlns:albums="http://example.com.br">
43
+ values["albums"].id "uri:albums:1" # <albums:id>uri:albums:1</albums:id>
44
+ values["albums"].title "Album 1" # <albums:title>Album 1</albums:title>
45
+ end # </albums:albums>
46
+ #
47
+ values.albums("xmlns" => "http://example.com.br", # <albums xmlns="http://example.com.br" xmlns:song="http://example.com.br">
48
+ "xmlns:song" => "http://example.com.br") do #
49
+ values.id = 1 # <id>1</id>
50
+ values["song"].song "a song" # <song:title>a song</song:title>
51
+ end # </albums>
52
+ end #
53
+ #
54
+ member.link("image", "http://example.com/image/1") # <link href="http://example.com/image/1" rel="image" />
55
+ member.link("image", "http://example.com/image/2", # <link href="http://example.com/image/2" rel="image" type="application/atom+xml" />
56
+ :type => "application/atom+xml") #
57
+ end # </entry>
58
+ #
59
+ collection.link("next", "http://example.com/next") # <link href="http://example.com/next" rel="next" />
60
+ collection.link("previous", "http://example.com/previous", # <link href="http://example.com/previus" rel="previous" />
61
+ :type => "application/atom+xml") #
62
+ end # </feed>
63
+