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,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Feature::RetryWhenUnavailable do
4
+
5
+ before do
6
+ @feature = Restfulie::Client::Feature::RetryWhenUnavailable.new
7
+ @response = mock Net::HTTPResponse
8
+ @request = Object.new
9
+ @chain = mock Restfulie::Client::StackNavigator
10
+ @chain.should_receive(:continue).and_return(@response)
11
+ end
12
+
13
+ context "when executing a request" do
14
+
15
+ it "should retry execution by default if response code is 503" do
16
+ second_response = mock Net::HTTPResponse
17
+ @chain.should_receive(:continue).with(@request, {}).and_return(second_response)
18
+ @response.stub(:code).and_return(503)
19
+ @feature.execute(@chain, @request, {}).should == second_response
20
+ end
21
+
22
+ it "should not retry execution by default if response code is not 503" do
23
+ @response.stub(:code).and_return(404)
24
+ @feature.execute(@chain, @request, {}).should == @response
25
+ end
26
+
27
+ it "should retry execution with a custom behavior" do
28
+ def @feature.should_retry?(response, env)
29
+ env["force_retry"] == true
30
+ end
31
+ second_response = mock Net::HTTPResponse
32
+ @chain.should_receive(:continue).and_return(second_response)
33
+ @feature.execute(@chain, @request, {"force_retry" => true}).should == second_response
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Feature::Verb do
4
+
5
+ before do
6
+ @request = Object.new
7
+ @request.extend Restfulie::Client::Feature::Verb
8
+ end
9
+
10
+ context "when invoking throw error based methods" do
11
+
12
+ it "should invoke throw error and delegate invocations on get" do
13
+ @request.should_receive(:request).with(:throw_error_request)
14
+ @request.should_receive(:get).with({:key => :value})
15
+ @request.get!({:key => :value})
16
+ end
17
+
18
+ ["head", "delete"].each do |method|
19
+ it "should invoke throw error and delegate invocations on #{method}" do
20
+ @request.should_receive(:request).with(:throw_error_request)
21
+ @request.should_receive(method)
22
+ @request.send "#{method}!"
23
+ end
24
+ end
25
+
26
+ ["put", "post", "patch"].each do |method|
27
+ it "should invoke throw error and delegate invocations on #{method}" do
28
+ body = "{ 'data' : 'content' }"
29
+ @request.should_receive(:request).with(:throw_error_request)
30
+ @request.should_receive(method).with(body)
31
+ @request.send "#{method}!", body
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::HTTP::LinkHeader do
4
+
5
+ context "when parsing one link header" do
6
+
7
+ it "returns all the parts if present" do
8
+ headers = {"link"=>["<http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel=\"start\"; type=\"application/xml\""]}
9
+ headers.extend Restfulie::Client::HTTP::LinkHeader
10
+ start = headers.link("start")
11
+ start.rel.should == "start"
12
+ start.href.should == "http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north"
13
+ start.content_type.should == "application/xml"
14
+ end
15
+
16
+ it "returns empty if one part is not present" do
17
+ headers = {"link"=>["<http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel=\"start\";"]}
18
+ headers.extend Restfulie::Client::HTTP::LinkHeader
19
+ start = headers.link("start")
20
+ start.content_type.should be_nil
21
+ end
22
+
23
+ it "returns nil if the link is not present" do
24
+ headers = {"link"=>["<http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel=\"start\""]}
25
+ headers.extend Restfulie::Client::HTTP::LinkHeader
26
+ headers.link("south").should be_nil
27
+ end
28
+
29
+ end
30
+
31
+ context "when parsing multiple link headers" do
32
+
33
+ it "should bring back all of them" do
34
+ headers = {"link"=>['<http://amundsen.com/examples/mazes/2d/ten-by-ten/0:north>; rel="current",<http://amundsen.com/examples/mazes/2d/ten-by-ten/10:east>; rel="east"']}
35
+ headers.extend Restfulie::Client::HTTP::LinkHeader
36
+ headers.links.size.should == 2
37
+ headers.link("current").should_not be_nil
38
+ headers.link("east").should_not be_nil
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Mikyung::Concatenator do
4
+
5
+ it "should use the content if there are no extra args" do
6
+ Restfulie::Client::Mikyung::Concatenator.new("alive").content.should == "alive"
7
+ end
8
+
9
+ it "should concatenate at the end if there is some extra content" do
10
+ Restfulie::Client::Mikyung::Concatenator.new("alive", Restfulie::Client::Mikyung::Concatenator.new("should")).content.should == "alive should"
11
+ end
12
+
13
+ end
14
+
@@ -0,0 +1,140 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Mikyung::WhenCondition do
4
+
5
+ class MyProcess < Restfulie::Client::Mikyung::RestProcessModel
6
+ def scenario
7
+ When "there are products" do |resource|
8
+ true
9
+ end
10
+
11
+ When "alive" do |resource|
12
+ true
13
+ end
14
+
15
+ When "dead" do |resource|
16
+ false
17
+ end
18
+
19
+ Then "rest" do |resource|
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ before do
26
+ @process = MyProcess.new
27
+ @process.scenario
28
+ end
29
+
30
+ context "configuring" do
31
+
32
+ it "should concatenate when method missing" do
33
+ def @process.scenario
34
+ nobody
35
+ end
36
+ @process.scenario.content.should == "nobody"
37
+ end
38
+
39
+ it "should start a concatenate when method missing" do
40
+ def @process.scenario
41
+ nobody but you
42
+ end
43
+ @process.scenario.content.should == "nobody but you"
44
+ end
45
+
46
+ it "should create a when rule when passing a string" do
47
+ l = lambda { |resource| @executed = true}
48
+ def @process.scenario(l)
49
+ When "something happens" do |resource|
50
+ l.call(resource)
51
+ end
52
+ end
53
+ @process.scenario(l)
54
+ @process.when_rules.size.should == 4
55
+ @process.when_rules[3][0].should == "something happens"
56
+ @process.when_rules[3][1].call("resource")
57
+ @executed.should be_true
58
+ end
59
+
60
+ it "should create a new rule when using concatenators" do
61
+ def @process.scenario
62
+ When alive
63
+ end
64
+ @process.scenario
65
+ @process.conditions.size.should == 1
66
+ end
67
+
68
+ it "should complain about a rule that does not yet exist" do
69
+ def @process.scenario
70
+ When studying
71
+ end
72
+ lambda {@process.scenario}.should raise_error(Restfulie::Client::Mikyung::ConfigurationError)
73
+ end
74
+
75
+ it "should add further restrictions" do
76
+ def @process.scenario
77
+ When alive
78
+ And dead
79
+ end
80
+ @process.scenario
81
+ @process.conditions.size.should == 1
82
+ end
83
+
84
+ it "should add results" do
85
+ def @process.scenario
86
+ When alive
87
+ Then rest
88
+ end
89
+ @process.scenario
90
+ @process.then_rules.size.should == 1
91
+ end
92
+
93
+ it "should create extra results" do
94
+ def @process.scenario
95
+ Then "play" do |resource|
96
+ end
97
+
98
+ When alive
99
+ Then play
100
+ end
101
+ @process.scenario
102
+ @process.then_rules.size.should == 2
103
+ end
104
+
105
+ end
106
+
107
+ context "running" do
108
+
109
+ it "should do nothing if there are no conditions" do
110
+ @process.next_step(nil,nil).should be_nil
111
+ end
112
+
113
+ it "should do nothing if there is no condition which should be run" do
114
+ def @process.scenario
115
+ Then "complain" do
116
+ "complained"
117
+ end
118
+ When dead
119
+ Then complain
120
+ end
121
+ @process.scenario
122
+ @process.next_step(nil,nil).should be_nil
123
+ end
124
+
125
+ it "should do something if it matches" do
126
+ def @process.scenario
127
+ Then "buy" do
128
+ "next step executed"
129
+ end
130
+ When there are products
131
+ Then buy
132
+ end
133
+ @process.scenario
134
+ @process.next_step(nil,nil).should == "next step executed"
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Mikyung::SteadyStateWalker do
4
+
5
+ before do
6
+ @goal = Object.new
7
+ @current = Object.new
8
+ @mikyung = Object.new
9
+ @walker = Restfulie::Client::Mikyung::SteadyStateWalker.new
10
+ end
11
+
12
+ it "should throw an error if there is no step to follow" do
13
+ @goal.should_receive(:next_step).with(@current, @mikyung)
14
+ lambda {@walker.move(@goal, @current, @mikyung)}.should raise_error Restfulie::Client::UnableToAchieveGoalError
15
+ end
16
+
17
+ it "should try to execute the step three times if it is an instantiated object" do
18
+ next_step = Object.new
19
+ @goal.should_receive(:next_step).with(@current, @mikyung).and_return(next_step)
20
+ @walker.should_receive(:try_to_execute).with(next_step, @current, 3, @mikyung).and_return(next_step)
21
+ @walker.move(@goal, @current, @mikyung).should == next_step
22
+ end
23
+
24
+ class CustomStep
25
+ end
26
+
27
+ it "should instantiate the step prior to executing it" do
28
+ step = CustomStep
29
+ @goal.should_receive(:next_step).with(@current, @mikyung).and_return(step)
30
+
31
+ next_step = CustomStep.new
32
+ CustomStep.should_receive(:new).and_return(next_step)
33
+
34
+ @walker.should_receive(:try_to_execute).with(next_step, @current, 3, @mikyung).and_return(next_step)
35
+ @walker.move(@goal, @current, @mikyung).should == next_step
36
+ end
37
+
38
+ end
39
+
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ class BasicGoal
4
+ attr_accessor :then_rules
5
+ end
6
+
7
+ describe Restfulie::Client::Mikyung::ThenCondition do
8
+
9
+ before do
10
+ @condition = Restfulie::Client::Mikyung::ThenCondition.new("launch a rocket")
11
+ @resource = Object.new
12
+ @goal = BasicGoal.new
13
+ @mikyung = Object.new
14
+ @goal.then_rules = []
15
+ @goal.then_rules << ["send an email", ""]
16
+ end
17
+
18
+ it "should do nothing if there is no matching rule" do
19
+ @condition.execute(@resource, @goal, @mikyung).should == nil
20
+ end
21
+
22
+ it "should invoke with resource if it receives one parameter" do
23
+ @goal.then_rules << ["launch a rocket", lambda { |resource| true }]
24
+ @condition.execute(@resource, @goal, @mikyung).should be_true
25
+ end
26
+
27
+ it "should invoke with two params if it receives two parameters" do
28
+ @goal.then_rules << ["launch a rocket", lambda { |resource, params| true }]
29
+ @condition.execute(@resource, @goal, @mikyung).should be_true
30
+ end
31
+
32
+ it "should invoke with all params if it receives three parameters" do
33
+ @goal.then_rules << ["launch a rocket", lambda { |resource, params, mikyung| true }]
34
+ @condition.execute(@resource, @goal, @mikyung).should be_true
35
+ end
36
+
37
+ end
38
+
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Mikyung::WhenCondition do
4
+
5
+ before do
6
+ @rule = [""]
7
+ @params = Object.new
8
+ @condition = Restfulie::Client::Mikyung::WhenCondition.new(nil, @rule, @params)
9
+ @resource = Object.new
10
+ @goal = Object.new
11
+ @mikyung = Object.new
12
+ end
13
+
14
+ it "should execute for every result concatenated" do
15
+ obj = Object.new
16
+ def obj.description
17
+ "will execute something special"
18
+ end
19
+ @condition.results_on obj
20
+
21
+ result = Object.new
22
+ obj.should_receive(:execute).with(@resource, @goal, @mikyung).and_return(result)
23
+
24
+ @condition.execute(@resource, @goal, @mikyung).should == result
25
+ end
26
+
27
+ it "should not run if its rule without params does not match" do
28
+ @rule << lambda { |without| false }
29
+ @condition.should_run_for(@resource, @goal).should be_false
30
+ end
31
+
32
+ it "should not run if its rule with params does not match" do
33
+ @rule << lam(false)
34
+ @condition.should_run_for(@resource, @goal).should be_false
35
+ end
36
+
37
+ def lam(what)
38
+ lambda { |without, regex| what }
39
+ end
40
+
41
+ it "should run if its rule says so" do
42
+ @rule << lam(true)
43
+ @condition.should_run_for(@resource, @goal).should be_true
44
+ end
45
+
46
+ it "should run if its rule and extras says so" do
47
+ @rule << lam(true)
48
+ @condition.and Restfulie::Client::Mikyung::WhenCondition.new(nil, ["", lam(true)], @params)
49
+ @condition.should_run_for(@resource, @goal).should be_true
50
+ end
51
+
52
+ it "should not run if its rule says yes but extras no" do
53
+ @rule << lam(true)
54
+ @condition.and Restfulie::Client::Mikyung::WhenCondition.new(nil, ["", lam(false)], @params)
55
+ @condition.should_run_for(@resource, @goal).should be_false
56
+ end
57
+
58
+ end
59
+
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe Restfulie::Client::Mikyung do
4
+
5
+ context "when trying to achieve a goal" do
6
+
7
+ before do
8
+ @goal = Object.new
9
+ @start = Object.new
10
+ @walker = Object.new
11
+ @client = Restfulie::Mikyung.new.achieve(@goal).at(@start).walks_with(@walker)
12
+ end
13
+
14
+ it "should allow access to its goal" do
15
+ @client.goal.should == @goal
16
+ end
17
+
18
+ it "should allow access to its start point" do
19
+ @client.start.should == @start
20
+ end
21
+
22
+ it "should allow access to its steady state walker" do
23
+ @client.walker.should == @walker
24
+ end
25
+
26
+ it "should not walk if goal starts completed" do
27
+ @goal.should_receive(:completed?).with(@start).and_return(true)
28
+ @restfulie = mock Restfulie::Client::Mikyung
29
+ @restfulie.should_receive(:get).and_return(@start)
30
+ @goal.class.should_receive(:get_restfulie).and_return(@restfulie)
31
+ @goal.should_receive(:steps).and_return(nil)
32
+ @goal.should_receive(:scenario).and_return(nil)
33
+ @client.run
34
+ end
35
+
36
+ it "should walk until its completed" do
37
+ @goal.should_receive(:completed?).with(@start).and_return(false)
38
+ second = Object.new
39
+ @walker.should_receive(:move).with(@goal, @start, @client).and_return(second)
40
+ @goal.should_receive(:completed?).with(second).and_return(true)
41
+ @restfulie = mock Restfulie::Client::Mikyung
42
+ @restfulie.should_receive(:get).and_return(@start)
43
+ @goal.class.should_receive(:get_restfulie).and_return(@restfulie)
44
+ @goal.should_receive(:steps).and_return(nil)
45
+ @goal.should_receive(:scenario).and_return(nil)
46
+ @client.run
47
+ end
48
+
49
+ end
50
+
51
+ context "starting with an URI" do
52
+
53
+ it "should start invoking a restfulie get if the entry point is an uri" do
54
+ start = "http://www.caelumobjects.com"
55
+ restfulie = mock Restfulie::Client::Mikyung
56
+ Restfulie.should_receive(:at).with(start).and_return(restfulie)
57
+
58
+ resource = Object.new
59
+ restfulie.should_receive(:get).and_return(resource)
60
+
61
+ client = Object.new
62
+ walker = Object.new
63
+ goal = Object.new
64
+ goal.should_receive(:completed?).with(resource).and_return(true)
65
+ goal.should_receive(:steps).and_return(nil)
66
+ goal.should_receive(:scenario).and_return(nil)
67
+ Restfulie::Mikyung.new.achieve(goal).at(start).run
68
+ end
69
+
70
+ end
71
+
72
+ end