thoughtbot-clearance 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. data/Rakefile +99 -0
  2. data/TODO.textile +21 -0
  3. data/generators/clearance/templates/app/views/sessions/new.html.erb +17 -0
  4. data/generators/clearance/templates/app/views/user_mailer/change_password.html.erb +6 -0
  5. data/generators/clearance/templates/app/views/user_mailer/confirmation.html.erb +1 -0
  6. data/generators/clearance/templates/app/views/users/_form.html.erb +7 -0
  7. data/generators/clearance/templates/app/views/users/edit.html.erb +4 -0
  8. data/generators/clearance/templates/app/views/users/new.html.erb +4 -0
  9. data/generators/clearance/templates/test/functional/confirmations_controller_test.rb +5 -0
  10. data/generators/clearance/templates/test/functional/passwords_controller_test.rb +5 -0
  11. data/generators/clearance/templates/test/functional/sessions_controller_test.rb +5 -0
  12. data/lib/clearance/test/functionals/users_controller_test.rb +60 -0
  13. data/lib/clearance/version.rb +7 -0
  14. data/lib/clearance.rb +1 -0
  15. data/test/rails_root/Capfile +3 -0
  16. data/test/rails_root/Rakefile +10 -0
  17. data/test/rails_root/app/controllers/application.rb +5 -0
  18. data/test/rails_root/app/controllers/confirmations_controller.rb +3 -0
  19. data/test/rails_root/app/controllers/passwords_controller.rb +3 -0
  20. data/test/rails_root/app/controllers/sessions_controller.rb +3 -0
  21. data/test/rails_root/app/controllers/users_controller.rb +3 -0
  22. data/test/rails_root/app/helpers/application_helper.rb +5 -0
  23. data/test/rails_root/app/helpers/confirmations_helper.rb +2 -0
  24. data/test/rails_root/app/helpers/passwords_helper.rb +2 -0
  25. data/test/rails_root/app/models/user.rb +3 -0
  26. data/test/rails_root/app/models/user_mailer.rb +7 -0
  27. data/test/rails_root/app/views/confirmations/new.html.erb +4 -0
  28. data/test/rails_root/app/views/layouts/_flashes.erb +5 -0
  29. data/test/rails_root/app/views/layouts/application.html.erb +14 -0
  30. data/test/rails_root/app/views/passwords/edit.html.erb +28 -0
  31. data/test/rails_root/app/views/passwords/new.html.erb +13 -0
  32. data/test/rails_root/app/views/sessions/new.html.erb +17 -0
  33. data/test/rails_root/app/views/user_mailer/change_password.html.erb +6 -0
  34. data/test/rails_root/app/views/user_mailer/confirmation.html.erb +1 -0
  35. data/test/rails_root/app/views/users/_form.html.erb +7 -0
  36. data/test/rails_root/app/views/users/edit.html.erb +4 -0
  37. data/test/rails_root/app/views/users/new.html.erb +4 -0
  38. data/test/rails_root/config/boot.rb +109 -0
  39. data/test/rails_root/config/database.yml +13 -0
  40. data/test/rails_root/config/environment.rb +17 -0
  41. data/test/rails_root/config/environments/development.rb +20 -0
  42. data/test/rails_root/config/environments/test.rb +24 -0
  43. data/test/rails_root/config/initializers/clearance.rb +8 -0
  44. data/test/rails_root/config/initializers/inflections.rb +10 -0
  45. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  46. data/test/rails_root/config/initializers/requires.rb +13 -0
  47. data/test/rails_root/config/initializers/time_formats.rb +4 -0
  48. data/test/rails_root/config/routes.rb +19 -0
  49. data/test/rails_root/db/migrate/001_create_users.rb +18 -0
  50. data/test/rails_root/doc/README_FOR_APP +2 -0
  51. data/test/rails_root/doc/README_FOR_TEMPLATE +15 -0
  52. data/test/rails_root/lib/tasks/bootstrap.rake +16 -0
  53. data/test/rails_root/lib/tasks/capistrano.rake +96 -0
  54. data/test/rails_root/lib/tasks/git_tasks.rake +129 -0
  55. data/test/rails_root/public/404.html +30 -0
  56. data/test/rails_root/public/422.html +30 -0
  57. data/test/rails_root/public/500.html +30 -0
  58. data/test/rails_root/public/dispatch.rb +10 -0
  59. data/test/rails_root/public/favicon.ico +0 -0
  60. data/test/rails_root/public/images/rails.png +0 -0
  61. data/test/rails_root/public/javascripts/application.js +2 -0
  62. data/test/rails_root/public/javascripts/builder.js +136 -0
  63. data/test/rails_root/public/javascripts/controls.js +963 -0
  64. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  65. data/test/rails_root/public/javascripts/effects.js +1120 -0
  66. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  67. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  68. data/test/rails_root/public/javascripts/slider.js +277 -0
  69. data/test/rails_root/public/javascripts/sound.js +60 -0
  70. data/test/rails_root/public/robots.txt +1 -0
  71. data/test/rails_root/script/about +3 -0
  72. data/test/rails_root/script/breakpointer +3 -0
  73. data/test/rails_root/script/console +3 -0
  74. data/test/rails_root/script/create_project.rb +52 -0
  75. data/test/rails_root/script/dbconsole +3 -0
  76. data/test/rails_root/script/destroy +3 -0
  77. data/test/rails_root/script/generate +3 -0
  78. data/test/rails_root/script/performance/benchmarker +3 -0
  79. data/test/rails_root/script/performance/profiler +3 -0
  80. data/test/rails_root/script/performance/request +3 -0
  81. data/test/rails_root/script/plugin +3 -0
  82. data/test/rails_root/script/process/inspector +3 -0
  83. data/test/rails_root/script/process/reaper +3 -0
  84. data/test/rails_root/script/process/spawner +3 -0
  85. data/test/rails_root/script/runner +3 -0
  86. data/test/rails_root/script/server +3 -0
  87. data/test/rails_root/test/factories.rb +9 -0
  88. data/test/rails_root/test/functional/confirmations_controller_test.rb +5 -0
  89. data/test/rails_root/test/functional/passwords_controller_test.rb +5 -0
  90. data/test/rails_root/test/functional/sessions_controller_test.rb +5 -0
  91. data/test/rails_root/test/functional/users_controller_test.rb +5 -0
  92. data/test/rails_root/test/test_helper.rb +27 -0
  93. data/test/rails_root/test/unit/user_mailer_test.rb +6 -0
  94. data/test/rails_root/test/unit/user_test.rb +5 -0
  95. data/test/rails_root/vendor/gems/mocha-0.9.1/COPYING +3 -0
  96. data/test/rails_root/vendor/gems/mocha-0.9.1/MIT-LICENSE +7 -0
  97. data/test/rails_root/vendor/gems/mocha-0.9.1/README +35 -0
  98. data/test/rails_root/vendor/gems/mocha-0.9.1/RELEASE +246 -0
  99. data/test/rails_root/vendor/gems/mocha-0.9.1/Rakefile +188 -0
  100. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/misc.rb +44 -0
  101. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/mocha.rb +26 -0
  102. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/stubba.rb +65 -0
  103. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/any_instance_method.rb +54 -0
  104. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/backtrace_filter.rb +17 -0
  105. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/cardinality.rb +95 -0
  106. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/central.rb +27 -0
  107. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/change_state_side_effect.rb +19 -0
  108. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/class_method.rb +86 -0
  109. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/configuration.rb +60 -0
  110. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/deprecation.rb +22 -0
  111. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/exception_raiser.rb +17 -0
  112. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation.rb +445 -0
  113. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation_error.rb +15 -0
  114. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation_list.rb +50 -0
  115. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/in_state_ordering_constraint.rb +19 -0
  116. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/inspect.rb +39 -0
  117. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/instance_method.rb +16 -0
  118. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/is_a.rb +9 -0
  119. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/logger.rb +15 -0
  120. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/metaclass.rb +7 -0
  121. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/method_matcher.rb +21 -0
  122. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/mock.rb +196 -0
  123. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/mockery.rb +181 -0
  124. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/module_method.rb +16 -0
  125. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/multiple_yields.rb +20 -0
  126. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/names.rb +53 -0
  127. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/no_yields.rb +11 -0
  128. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/object.rb +134 -0
  129. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/all_of.rb +42 -0
  130. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/any_of.rb +47 -0
  131. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
  132. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/anything.rb +33 -0
  133. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/base.rb +15 -0
  134. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/equals.rb +42 -0
  135. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_entries.rb +45 -0
  136. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_entry.rb +56 -0
  137. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_key.rb +42 -0
  138. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_value.rb +42 -0
  139. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/includes.rb +40 -0
  140. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/instance_of.rb +42 -0
  141. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/is_a.rb +42 -0
  142. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/kind_of.rb +42 -0
  143. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/not.rb +42 -0
  144. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/object.rb +9 -0
  145. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/optionally.rb +55 -0
  146. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/regexp_matches.rb +43 -0
  147. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  148. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  149. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers.rb +26 -0
  150. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameters_matcher.rb +37 -0
  151. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/pretty_parameters.rb +28 -0
  152. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/return_values.rb +31 -0
  153. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/sequence.rb +42 -0
  154. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/single_return_value.rb +17 -0
  155. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/single_yield.rb +18 -0
  156. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/standalone.rb +166 -0
  157. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/state_machine.rb +91 -0
  158. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/stubbing_error.rb +16 -0
  159. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/test_case_adapter.rb +103 -0
  160. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/unexpected_invocation.rb +18 -0
  161. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/yield_parameters.rb +31 -0
  162. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha.rb +20 -0
  163. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha_standalone.rb +2 -0
  164. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/stubba.rb +4 -0
  165. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/acceptance_test_helper.rb +38 -0
  166. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_18914_test.rb +43 -0
  167. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_21465_test.rb +34 -0
  168. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_21563_test.rb +25 -0
  169. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/expected_invocation_count_test.rb +196 -0
  170. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/failure_messages_test.rb +64 -0
  171. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocha_example_test.rb +98 -0
  172. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocha_test_result_test.rb +84 -0
  173. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mock_test.rb +100 -0
  174. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mock_with_initializer_block_test.rb +51 -0
  175. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
  176. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/optional_parameters_test.rb +70 -0
  177. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/parameter_matcher_test.rb +179 -0
  178. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/partial_mocks_test.rb +47 -0
  179. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/return_value_test.rb +52 -0
  180. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/sequence_test.rb +186 -0
  181. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/standalone_test.rb +139 -0
  182. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/states_test.rb +70 -0
  183. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_any_instance_method_test.rb +195 -0
  184. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_class_method_test.rb +203 -0
  185. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_everything_test.rb +56 -0
  186. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_instance_method_test.rb +165 -0
  187. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_module_method_test.rb +163 -0
  188. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_test.rb +52 -0
  189. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_example_test.rb +102 -0
  190. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_test.rb +15 -0
  191. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_test_result_test.rb +66 -0
  192. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  193. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  194. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  195. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_class_method_test.rb +155 -0
  196. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_instance_method_test.rb +145 -0
  197. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  198. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_class_method_test.rb +161 -0
  199. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_instance_method_test.rb +141 -0
  200. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  201. data/test/rails_root/vendor/gems/mocha-0.9.1/test/active_record_test_case.rb +36 -0
  202. data/test/rails_root/vendor/gems/mocha-0.9.1/test/deprecation_disabler.rb +15 -0
  203. data/test/rails_root/vendor/gems/mocha-0.9.1/test/execution_point.rb +36 -0
  204. data/test/rails_root/vendor/gems/mocha-0.9.1/test/method_definer.rb +18 -0
  205. data/test/rails_root/vendor/gems/mocha-0.9.1/test/simple_counter.rb +13 -0
  206. data/test/rails_root/vendor/gems/mocha-0.9.1/test/test_helper.rb +11 -0
  207. data/test/rails_root/vendor/gems/mocha-0.9.1/test/test_runner.rb +33 -0
  208. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/any_instance_method_test.rb +126 -0
  209. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/array_inspect_test.rb +16 -0
  210. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/backtrace_filter_test.rb +19 -0
  211. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/cardinality_test.rb +56 -0
  212. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/central_test.rb +65 -0
  213. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/change_state_side_effect_test.rb +41 -0
  214. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/class_method_test.rb +237 -0
  215. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/date_time_inspect_test.rb +21 -0
  216. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/exception_raiser_test.rb +42 -0
  217. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/expectation_list_test.rb +57 -0
  218. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/expectation_test.rb +459 -0
  219. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/hash_inspect_test.rb +16 -0
  220. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/in_state_ordering_constraint_test.rb +43 -0
  221. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/metaclass_test.rb +22 -0
  222. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/method_matcher_test.rb +23 -0
  223. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/mock_test.rb +290 -0
  224. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/mockery_test.rb +149 -0
  225. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/multiple_yields_test.rb +18 -0
  226. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/no_yields_test.rb +18 -0
  227. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/object_inspect_test.rb +37 -0
  228. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/object_test.rb +82 -0
  229. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/all_of_test.rb +26 -0
  230. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/any_of_test.rb +26 -0
  231. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/anything_test.rb +21 -0
  232. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/equals_test.rb +25 -0
  233. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_entries_test.rb +51 -0
  234. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_entry_test.rb +62 -0
  235. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_key_test.rb +36 -0
  236. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_value_test.rb +37 -0
  237. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/includes_test.rb +25 -0
  238. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  239. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/is_a_test.rb +25 -0
  240. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  241. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/not_test.rb +26 -0
  242. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/regexp_matches_test.rb +25 -0
  243. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  244. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/stub_matcher.rb +27 -0
  245. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  246. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameters_matcher_test.rb +121 -0
  247. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/return_values_test.rb +63 -0
  248. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/sequence_test.rb +104 -0
  249. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/single_return_value_test.rb +14 -0
  250. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/single_yield_test.rb +18 -0
  251. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/state_machine_test.rb +98 -0
  252. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/string_inspect_test.rb +11 -0
  253. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/yield_parameters_test.rb +93 -0
  254. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/CONTRIBUTION_GUIDELINES.rdoc +12 -0
  255. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/MIT-LICENSE +22 -0
  256. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/README.rdoc +132 -0
  257. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/Rakefile +72 -0
  258. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/bin/convert_to_should_syntax +42 -0
  259. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/action_mailer/assertions.rb +39 -0
  260. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/action_mailer.rb +10 -0
  261. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record/assertions.rb +85 -0
  262. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record/macros.rb +715 -0
  263. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record.rb +12 -0
  264. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/assertions.rb +45 -0
  265. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/context.rb +306 -0
  266. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/formats/html.rb +201 -0
  267. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/formats/xml.rb +170 -0
  268. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb +64 -0
  269. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/macros.rb +316 -0
  270. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/resource_options.rb +236 -0
  271. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller.rb +30 -0
  272. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/helpers.rb +10 -0
  273. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/macros.rb +74 -0
  274. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/private_helpers.rb +22 -0
  275. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/proc_extensions.rb +14 -0
  276. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/rails.rb +19 -0
  277. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks/list_tests.rake +24 -0
  278. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks/yaml_to_shoulda.rake +28 -0
  279. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks.rb +3 -0
  280. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda.rb +17 -0
  281. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/rails/init.rb +1 -0
  282. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/README +36 -0
  283. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fail_macros.rb +34 -0
  284. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/addresses.yml +3 -0
  285. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/friendships.yml +0 -0
  286. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/posts.yml +5 -0
  287. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/products.yml +0 -0
  288. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/taggings.yml +0 -0
  289. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/tags.yml +9 -0
  290. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/users.yml +6 -0
  291. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/functional/posts_controller_test.rb +104 -0
  292. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/functional/users_controller_test.rb +38 -0
  293. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/context_test.rb +145 -0
  294. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/convert_to_should_syntax_test.rb +63 -0
  295. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/helpers_test.rb +183 -0
  296. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/private_helpers_test.rb +34 -0
  297. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/should_test.rb +266 -0
  298. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/application.rb +25 -0
  299. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/posts_controller.rb +85 -0
  300. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/users_controller.rb +84 -0
  301. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/application_helper.rb +3 -0
  302. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/posts_helper.rb +2 -0
  303. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/users_helper.rb +2 -0
  304. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/address.rb +7 -0
  305. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/dog.rb +5 -0
  306. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/flea.rb +3 -0
  307. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/friendship.rb +4 -0
  308. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/post.rb +12 -0
  309. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/product.rb +12 -0
  310. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/tag.rb +8 -0
  311. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/tagging.rb +4 -0
  312. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/user.rb +28 -0
  313. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/posts.rhtml +17 -0
  314. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/users.rhtml +17 -0
  315. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/wide.html.erb +1 -0
  316. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/edit.rhtml +27 -0
  317. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/index.rhtml +25 -0
  318. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/new.rhtml +26 -0
  319. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/show.rhtml +18 -0
  320. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/edit.rhtml +22 -0
  321. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/index.rhtml +22 -0
  322. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/new.rhtml +21 -0
  323. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/show.rhtml +13 -0
  324. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/boot.rb +109 -0
  325. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/database.yml +4 -0
  326. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/environment.rb +14 -0
  327. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/environments/sqlite3.rb +0 -0
  328. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/initializers/new_rails_defaults.rb +15 -0
  329. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/initializers/shoulda.rb +8 -0
  330. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/routes.rb +6 -0
  331. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/001_create_users.rb +18 -0
  332. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/002_create_posts.rb +13 -0
  333. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/003_create_taggings.rb +12 -0
  334. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/004_create_tags.rb +11 -0
  335. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/005_create_dogs.rb +12 -0
  336. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/006_create_addresses.rb +14 -0
  337. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/007_create_fleas.rb +11 -0
  338. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/008_create_dogs_fleas.rb +12 -0
  339. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/009_create_products.rb +17 -0
  340. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/010_create_friendships.rb +14 -0
  341. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/schema.rb +0 -0
  342. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/log/sqlite3.log +1 -0
  343. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/404.html +30 -0
  344. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/422.html +30 -0
  345. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/500.html +30 -0
  346. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/script/console +3 -0
  347. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/script/generate +3 -0
  348. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/test_helper.rb +33 -0
  349. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/address_test.rb +10 -0
  350. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/dog_test.rb +7 -0
  351. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/flea_test.rb +6 -0
  352. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/friendship_test.rb +6 -0
  353. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/post_test.rb +15 -0
  354. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/product_test.rb +27 -0
  355. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/tag_test.rb +14 -0
  356. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/tagging_test.rb +6 -0
  357. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/user_test.rb +52 -0
  358. data/test/rails_root/vendor/plugins/factory_girl_on_rails/MIT-LICENSE +20 -0
  359. data/test/rails_root/vendor/plugins/factory_girl_on_rails/README +34 -0
  360. data/test/rails_root/vendor/plugins/factory_girl_on_rails/init.rb +9 -0
  361. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/USAGE +18 -0
  362. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/factory_generator.rb +17 -0
  363. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/templates/factory.rb +5 -0
  364. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/templates/fixtures.yml +19 -0
  365. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/templates/migration.rb +16 -0
  366. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/templates/model.rb +2 -0
  367. data/test/rails_root/vendor/plugins/factory_girl_on_rails/rails_generators/factory/templates/unit_test.rb +7 -0
  368. metadata +486 -14
  369. data/clearance.gemspec +0 -50
@@ -0,0 +1,246 @@
1
+ = 0.9.1 (r349)
2
+
3
+ * Fixed bug #21465 - expects & stubs should support method names as strings (as well as symbols) or fail fast. Convert all expectation method names to a symbol in case they were supplied as a string.
4
+ * By removing Mock#unexpected_method_called we reduce the number of methods vulnerable to the problem that surfaced in bug #21563.
5
+ * Fix bug #21563 - stubbing 'verified?' method is unsafe. Instance method names on the Mock class should be more obscure.
6
+ * Performance improvement. StubbaExampleTest goes twice as fast on my local machine.
7
+ * Added primitive performance test to default rake task.
8
+ * Fix format of case statements which don't work in Ruby 1.9 and make others consistent.
9
+ * There is no point in running (potentially expensive) checks if configuration is set to allow such checks to fail. This is a relatively quick fix in response to Chris McGrath's performance problems.
10
+ * Fix for bug #21161 - 'uninitialized constant Deprecation in stubba.rb'.
11
+ * It's more readable to talk about 'once' and 'twice' rather than '1 time' and '2 times'.
12
+ * Fix bug #20883 - never should raise when called to prevent follow up errors. Fail fast when there are no matching invokable expectations and handle the stub_everything case sensibly. This might not be entirely backwards compatible, but I think the benefits outweigh the risks. The most likely change is that a test that was already failing will now fail faster, which doesn't seem so awful.
13
+
14
+ = 0.9.0 (r316)
15
+
16
+ * Configurable warnings or errors
17
+ * when a method on a non-public method is stubbed
18
+ * when a method on a non-existent method is stubbed
19
+ * when a method on a non-mock object is stubbed
20
+ * when a method is stubbed unnecessarily (i.e. the stubbed method is not called during the test)
21
+
22
+ * Improved error messages
23
+ * User-friendly list of unsatisfied expectations, satisfied expectations and state machines.
24
+ * Improved readability of cardinality description.
25
+ * Display sensible failure message for any_instance expectations e.g. "#<AnyInstance:Foo>.bar - expected calls: 1, actual calls: 0"
26
+
27
+ * Parameter matchers
28
+ * New to this release
29
+ * optionally (allows matching of optional parameters if available)
30
+ * yaml_equivalent (allows matching of YAML that represents the specified object)
31
+ * responds_with (tests the quack not the duck)
32
+ * Nesting of parameter matchers is now supported.
33
+
34
+ * Optional block passed into mock initializer is evaluated in the context of the new mock instance and can be used as a shortcut to set up expectations.
35
+
36
+ * Added JMock-style sequences for constraining the order of expected invocations. See Standalone#sequence and Expectation#in_sequence.
37
+
38
+ * Added JMock-style states for constraining the order of expected invocations. See Standalone#states, Expectation#then, Expectation#when and StateMachine.
39
+
40
+ * Compatibility with versions of Ruby
41
+ * Compatibility with Ruby v1.9. All test errors and warnings fixed.
42
+ * Nasty fix so that TestCaseAdaptor works consistently with earlier versions of Test::Unit as well as more recent versions.
43
+ * Added platform to gem specification to avoid bug in rubygems 0.9.5 - see http://www.dcmanges.com/blog/rubygems-0-9-5-platform-bug and http://rubygems.org/read/chapter/20#platform.
44
+ * Make ExpectationRaiser deal with subclasses of Interrupt which seem to need a message supplied in the raise statement in Ruby 1.8.6 (but not 1.8.4 or 1.9). Not sure this is really Mocha's responsibility.
45
+
46
+ * Added deprecation warning in stubba.rb which is no longer needed and will be removed.
47
+
48
+ * Supply positioning information to evals to improve any error messages. See http://ola-bini.blogspot.com/2008/01/ruby-antipattern-using-eval-without.html
49
+
50
+ * Bug fixes
51
+ * 18914 in revision 296 - http://rubyforge.org/tracker/index.php?func=detail&aid=18914&group_id=1917&atid=7477
52
+ * 18917 in revision 295 - http://rubyforge.org/tracker/index.php?func=detail&aid=18917&group_id=1917&atid=7477
53
+ * 18336 in revision 287 - http://rubyforge.org/tracker/index.php?func=detail&aid=18336&group_id=1917&atid=7477
54
+ * 17835 in revision 255 - http://rubyforge.org/tracker/index.php?func=detail&aid=17835&group_id=1917&atid=7477
55
+ * 17412 in revision 242 - http://rubyforge.org/tracker/index.php?func=detail&aid=17412&group_id=1917&atid=7477
56
+ * 15977 in revision 198 - http://rubyforge.org/tracker/index.php?func=detail&aid=15977&group_id=1917&atid=7477
57
+ * 11885 in revision 156 - http://rubyforge.org/tracker/index.php?func=detail&aid=11885&group_id=1917&atid=7477
58
+
59
+ = 0.5.5 (r167)
60
+
61
+ - Renamed Matches parameter matcher to RegexpMatches for clarity.
62
+ - Added noframes tag to rdoc index to assist Google.
63
+
64
+ = 0.5.4 (r166)
65
+
66
+ - Added matches parameter matcher for matching regular expressions.
67
+
68
+ = 0.5.3 (r165)
69
+
70
+ - Attempt to fix packaging problems by switching to newer version (1.15.1) of gnutar and setting COPY_EXTENDED_ATTRIBUTES_DISABLE environment variable.
71
+ - Removed unused ExpectationSequenceError exception.
72
+ - Added instance_of and kind_of parameter matchers.
73
+ - Added Google Webmaster meta tag to rdoc template header.
74
+ - Put Google Webmaster meta tag in the right header i.e. the one for the index page.
75
+
76
+ = 0.5.2 (r159)
77
+
78
+ - Fix bug 11885 - "never doesn't work with stub_everything" submitted by Alexander Lang. In fixing this bug, also fixed undiscoverd bug where expected & actual invocation counts were being incorrectly reported which seems to have been introduced when fixes were added for invocation dispatch (see MockedMethodDispatchAcceptanceTest).
79
+ - Previously when an expectation did not allow more invocations, it was treated as not matching. Now we prefer matching expectations which allow more invocations, but still match expectations which cannot allow more invocations. I think this may be overcomplicating things, but let's see how it goes.
80
+
81
+ = 0.5.1 (r149)
82
+
83
+ - Fixed bug #11583 "Mocha 0.5.0 throwing unexpected warnings". Also switched on ruby warning for all rake test tasks. Fixed majority of warnings, but some left to fix.
84
+
85
+ = 0.5.0 (r147)
86
+
87
+ - Parameter Matchers - I’ve added a few Hamcrest-style parameter matchers which are designed to be used inside Expectation#with. The following matchers are currently available: anything(), includes(), has_key(), has_value(), has_entry(), all_of() & any_of(). More to follow soon. The idea is eventually to get rid of the nasty parameter_block option on Expectation#with.
88
+
89
+ object = mock()
90
+ object.expects(:method).with(has_key('key_1'))
91
+ object.method('key_1' => 1, 'key_2' => 2)
92
+ # no verification error raised
93
+
94
+ object = mock()
95
+ object.expects(:method).with(has_key('key_1'))
96
+ object.method('key_2' => 2)
97
+ # verification error raised, because method was not called with Hash containing key: 'key_1'
98
+
99
+ - Values Returned and Exceptions Raised on Consecutive Invocations - Allow multiple calls to Expectation#returns and Expectation#raises to build up a sequence of responses to invocations on the mock. Added syntactic sugar method Expectation#then to allow more readable expectations.
100
+
101
+ object = mock()
102
+ object.stubs(:method).returns(1, 2).then.raises(Exception).then.returns(4)
103
+ object.method # => 1
104
+ object.method # => 2
105
+ object.method # => raises exception of class Exception
106
+ object.method # => 4
107
+
108
+ - Yields on Consecutive Invocations - Allow multiple calls to yields on single expectation to allow yield parameters to be specified for consecutive invocations.
109
+
110
+ object = mock()
111
+ object.stubs(:method).yields(1, 2).then.yields(3)
112
+ object.method { |*values| p values } # => [1, 2]
113
+ object.method { |*values| p values } # => [3]
114
+
115
+ - Multiple Yields on Single Invocation - Added Expectation#multiple_yields to allow a mocked or stubbed method to yield multiple times for a single invocation.
116
+
117
+ object = mock()
118
+ object.stubs(:method).multiple_yields([1, 2], [3])
119
+ object.method { |*values| p values } # => [1, 2] # => [3]
120
+
121
+ - Invocation Dispatch - Expectations were already being matched in reverse order i.e. the most recently defined one was being found first. This is still the case, but we now stop matching an expectation when its maximum number of expected invocations is reached. c.f. JMock v1. A stub will never stop matching by default. Hopefully this means we can soon get rid of the need to pass a Proc to Expectation#returns.
122
+
123
+ object = mock()
124
+ object.stubs(:method).returns(2)
125
+ object.expects(:method).once.returns(1)
126
+ object.method # => 1
127
+ object.method # => 2
128
+ object.method # => 2
129
+ # no verification error raised
130
+
131
+ # The following should still work...
132
+
133
+ Time.stubs(:now).returns(Time.parse('Mon Jan 01 00:00:00 UTC 2007'))
134
+ Time.now # => Mon Jan 01 00:00:00 UTC 2007
135
+ Time.stubs(:now).returns(Time.parse('Thu Feb 01 00:00:00 UTC 2007'))
136
+ Time.now # => Thu Feb 01 00:00:00 UTC 2007
137
+
138
+ - Deprecate passing an instance of Proc to Expectation#returns.
139
+ - Explicitly include all Rakefile dependencies in project.
140
+ - Fixed old Stubba example.
141
+ - Fix so that it is possible for a stubbed method to raise an Interrupt exception without a message in Ruby 1.8.6
142
+ - Added responds_like and quacks_like.
143
+ - Capture standard object methods before Mocha adds any.
144
+ - Added Expectation#once method to make interface less surprising.
145
+ - Use Rake::TestTask to run tests. Created three separate tasks to run unit, integration & acceptance tests. Split inspect_test into one file per TestCase. Deleted superfluous all_tests file.
146
+ - Fiddled with mocha_inspect and tests to give more sensible results on x86 platform.
147
+ - Fixed bug #7834 "infinite_range.rb makes incorrect assumption about to_f" logged by James Moore.
148
+
149
+ = 0.4.0 (r92)
150
+
151
+ - Allow naming of mocks (patch from Chris Roos).
152
+ - Specify multiple return values for consecutive calls.
153
+ - Improved consistency of expectation error messages.
154
+ - Allow mocking of Object instance methods e.g. kind_of?, type.
155
+ - Provide aliased versions of #expects and #stubs to allow mocking of these methods.
156
+ - Added at_least, at_most, at_most_once methods to expectation.
157
+ - Allow expects and stubs to take a hash of method and return values.
158
+ - Eliminate warning: "instance variable @yield not initialized" (patch from Xavier Shay).
159
+ - Restore instance methods on partial mocks (patch from Chris Roos).
160
+ - Allow stubbing of a method with non-word characters in its name (patch from Paul Battley).
161
+ - Removed coupling to Test::Unit.
162
+ - Allow specified exception instance to be raised (patch from Chris Roos).
163
+ - Make mock object_id appear in hex like normal Ruby inspect (patch from Paul Battley).
164
+ - Fix path to object.rb in rdoc rake task (patch from Tomas Pospisek).
165
+ - Reverse order in which expectations are matched, so that last expectation is matched first. This allows e.g. a call to #stubs to be effectively overridden by a call to #expects (patch from Tobias Lutke).
166
+ - Stubba & SmartTestCase modules incorporated into Mocha module so only need to require 'mocha' - no longer need to require 'stubba'.
167
+ - AutoMocha removed.
168
+
169
+ = 0.3.3
170
+
171
+ - Quick bug fix to restore instance methods on partial mocks (for Kevin Clark).
172
+
173
+ = 0.3.2
174
+
175
+ - Examples added.
176
+
177
+ = 0.3.1
178
+
179
+ - Dual licensing with MIT license added.
180
+
181
+ = 0.3.0
182
+
183
+ * Rails plugin.
184
+ * Auto-verify for expectations on concrete classes.
185
+ * Include each expectation verification in the test result assertion count.
186
+ * Filter out noise from assertion backtraces.
187
+ * Point assertion backtrace to line where failing expectation was created.
188
+ * New yields method for expectations.
189
+ * Create stubs which stub all method calls.
190
+ * Mocks now respond_to? expected methods.
191
+
192
+ = 0.2.1
193
+
194
+ * Rename MochaAcceptanceTest::Rover#move method to avoid conflict with Rake (in Ruby 1.8.4 only?)
195
+
196
+ = 0.2.0
197
+
198
+ * Small change to SetupAndTeardown#teardown_stubs suggested by Luke Redpath (http://www.lukeredpath.co.uk) to allow use of Stubba with RSpec (http://rspec.rubyforge.org).
199
+ * Reorganized directory structure and extracted addition of setup and teardown methods into SmartTestCase mini-library.
200
+ * Addition of auto-verify for Mocha (but not Stubba). This means there is more significance in the choice of expects or stubs in that any expects on a mock will automatically get verified.
201
+
202
+ So instead of...
203
+
204
+ wotsit = Mocha.new
205
+ wotsit.expects(:thingummy).with(5).returns(10)
206
+ doobrey = Doobrey.new(wotsit)
207
+ doobrey.hoojamaflip
208
+ wotsit.verify
209
+
210
+ you need to do...
211
+
212
+ wotsit = mock()
213
+ wotsit.expects(:thingummy).with(5).returns(10)
214
+ doobrey = Doobrey.new(wotsit)
215
+ doobrey.hoojamaflip
216
+ # no need to verify
217
+
218
+ There are also shortcuts as follows...
219
+
220
+ instead of...
221
+
222
+ wotsit = Mocha.new
223
+ wotsit.expects(:thingummy).returns(10)
224
+ wotsit.expects(:summat).returns(25)
225
+
226
+ you can have...
227
+
228
+ wotsit = mock(:thingummy => 5, :summat => 25)
229
+
230
+ and instead of...
231
+
232
+ wotsit = Mocha.new
233
+ wotsit.stubs(:thingummy).returns(10)
234
+ wotsit.stubs(:summat).returns(25)
235
+
236
+ you can have...
237
+
238
+ wotsit = stub(:thingummy => 5, :summat => 25)
239
+
240
+ = 0.1.2
241
+
242
+ * Minor tweaks
243
+
244
+ = 0.1.1
245
+
246
+ * Initial release.
@@ -0,0 +1,188 @@
1
+ require 'rubygems'
2
+ require 'rake/rdoctask'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/testtask'
5
+ require 'rake/contrib/sshpublisher'
6
+
7
+ module Mocha
8
+ VERSION = "0.9.1"
9
+ end
10
+
11
+ desc "Run all tests"
12
+ task 'default' => ['test:units', 'test:acceptance', 'test:performance']
13
+
14
+ namespace 'test' do
15
+
16
+ unit_tests = FileList['test/unit/**/*_test.rb']
17
+ acceptance_tests = FileList['test/acceptance/*_test.rb']
18
+
19
+ desc "Run unit tests"
20
+ Rake::TestTask.new('units') do |t|
21
+ t.libs << 'test'
22
+ t.test_files = unit_tests
23
+ t.verbose = true
24
+ t.warning = true
25
+ end
26
+
27
+ desc "Run acceptance tests"
28
+ Rake::TestTask.new('acceptance') do |t|
29
+ t.libs << 'test'
30
+ t.test_files = acceptance_tests
31
+ t.verbose = true
32
+ t.warning = true
33
+ end
34
+
35
+ # require 'rcov/rcovtask'
36
+ # Rcov::RcovTask.new('coverage') do |t|
37
+ # t.libs << 'test'
38
+ # t.test_files = unit_tests + acceptance_tests
39
+ # t.verbose = true
40
+ # t.warning = true
41
+ # t.rcov_opts << '--sort coverage'
42
+ # t.rcov_opts << '--xref'
43
+ # end
44
+
45
+ desc "Run performance tests"
46
+ task 'performance' do
47
+ require 'test/acceptance/stubba_example_test'
48
+ require 'test/acceptance/mocha_example_test'
49
+ iterations = 1000
50
+ puts "\nBenchmarking with #{iterations} iterations..."
51
+ [MochaExampleTest, StubbaExampleTest].each do |test_case|
52
+ puts "#{test_case}: #{benchmark_test_case(test_case, iterations)} seconds."
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ def benchmark_test_case(klass, iterations)
59
+ require 'test/unit/ui/console/testrunner'
60
+ require 'benchmark'
61
+ time = Benchmark.realtime { iterations.times { Test::Unit::UI::Console::TestRunner.run(klass, Test::Unit::UI::SILENT) } }
62
+ end
63
+
64
+ desc 'Generate RDoc'
65
+ Rake::RDocTask.new('rdoc') do |task|
66
+ task.main = 'README'
67
+ task.title = "Mocha #{Mocha::VERSION}"
68
+ task.rdoc_dir = 'doc'
69
+ task.template = File.expand_path(File.join(File.dirname(__FILE__), "templates", "html_with_google_analytics"))
70
+ task.rdoc_files.include(
71
+ 'README',
72
+ 'RELEASE',
73
+ 'COPYING',
74
+ 'MIT-LICENSE',
75
+ 'agiledox.txt',
76
+ 'lib/mocha/standalone.rb',
77
+ 'lib/mocha/mock.rb',
78
+ 'lib/mocha/expectation.rb',
79
+ 'lib/mocha/object.rb',
80
+ 'lib/mocha/parameter_matchers.rb',
81
+ 'lib/mocha/parameter_matchers',
82
+ 'lib/mocha/state_machine.rb',
83
+ 'lib/mocha/configuration.rb',
84
+ 'lib/mocha/stubbing_error.rb'
85
+ )
86
+ end
87
+ task 'rdoc' => 'examples'
88
+
89
+ desc "Upload RDoc to RubyForge"
90
+ task 'publish_rdoc' => ['rdoc', 'examples'] do
91
+ Rake::SshDirPublisher.new("jamesmead@rubyforge.org", "/var/www/gforge-projects/mocha", "doc").upload
92
+ end
93
+
94
+ desc "Generate agiledox-like documentation for tests"
95
+ file 'agiledox.txt' do
96
+ File.open('agiledox.txt', 'w') do |output|
97
+ tests = FileList['test/**/*_test.rb']
98
+ tests.each do |file|
99
+ m = %r".*/([^/].*)_test.rb".match(file)
100
+ output << m[1]+" should:\n"
101
+ test_definitions = File::readlines(file).select {|line| line =~ /.*def test.*/}
102
+ test_definitions.sort.each do |definition|
103
+ m = %r"test_(should_)?(.*)".match(definition)
104
+ output << " - "+m[2].gsub(/_/," ") << "\n"
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ desc "Convert example ruby files to syntax-highlighted html"
111
+ task 'examples' do
112
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendor", "coderay-0.7.4.215", "lib"))
113
+ require 'coderay'
114
+ mkdir_p 'doc/examples'
115
+ File.open('doc/examples/coderay.css', 'w') do |output|
116
+ output << CodeRay::Encoders[:html]::CSS.new.stylesheet
117
+ end
118
+ ['mocha', 'stubba', 'misc'].each do |filename|
119
+ File.open("doc/examples/#{filename}.html", 'w') do |file|
120
+ file << "<html>"
121
+ file << "<head>"
122
+ file << %q(<link rel="stylesheet" media="screen" href="coderay.css" type="text/css">)
123
+ file << "</head>"
124
+ file << "<body>"
125
+ file << CodeRay.scan_file("examples/#{filename}.rb").html.div
126
+ file << "</body>"
127
+ file << "</html>"
128
+ end
129
+ end
130
+ end
131
+
132
+ Gem::manage_gems
133
+
134
+ specification = Gem::Specification.new do |s|
135
+ s.name = "mocha"
136
+ s.summary = "Mocking and stubbing library"
137
+ s.version = Mocha::VERSION
138
+ s.platform = Gem::Platform::RUBY
139
+ s.author = 'James Mead'
140
+ s.description = <<-EOF
141
+ Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes.
142
+ EOF
143
+ s.email = 'mocha-developer@rubyforge.org'
144
+ s.homepage = 'http://mocha.rubyforge.org'
145
+ s.rubyforge_project = 'mocha'
146
+
147
+ s.has_rdoc = true
148
+ s.extra_rdoc_files = ['README', 'COPYING']
149
+ s.rdoc_options << '--title' << 'Mocha' << '--main' << 'README' << '--line-numbers'
150
+
151
+ s.autorequire = 'mocha'
152
+ s.add_dependency('rake')
153
+ s.files = FileList['{lib,test,examples}/**/*.rb', '[A-Z]*'].exclude('TODO').to_a
154
+ end
155
+
156
+ Rake::GemPackageTask.new(specification) do |package|
157
+ package.need_zip = true
158
+ package.need_tar = true
159
+ end
160
+
161
+ task 'verify_user' do
162
+ raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
163
+ end
164
+
165
+ task 'verify_password' do
166
+ raise "RUBYFORGE_PASSWORD environment variable not set!" unless ENV['RUBYFORGE_PASSWORD']
167
+ end
168
+
169
+ desc "Publish package files on RubyForge."
170
+ task 'publish_packages' => ['verify_user', 'verify_password', 'package'] do
171
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendor", "meta_project-0.4.15", "lib"))
172
+ require 'meta_project'
173
+ require 'rake/contrib/xforge'
174
+ release_files = FileList[
175
+ "pkg/mocha-#{Mocha::VERSION}.gem",
176
+ "pkg/mocha-#{Mocha::VERSION}.tgz",
177
+ "pkg/mocha-#{Mocha::VERSION}.zip"
178
+ ]
179
+
180
+ Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new('mocha')) do |release|
181
+ release.user_name = ENV['RUBYFORGE_USER']
182
+ release.password = ENV['RUBYFORGE_PASSWORD']
183
+ release.files = release_files.to_a
184
+ release.release_name = "Mocha #{Mocha::VERSION}"
185
+ release.release_changes = ''
186
+ release.release_notes = ''
187
+ end
188
+ end
@@ -0,0 +1,44 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'mocha'
4
+
5
+ class MiscExampleTest < Test::Unit::TestCase
6
+
7
+ def test_mocking_a_class_method
8
+ product = Product.new
9
+ Product.expects(:find).with(1).returns(product)
10
+ assert_equal product, Product.find(1)
11
+ end
12
+
13
+ def test_mocking_an_instance_method_on_a_real_object
14
+ product = Product.new
15
+ product.expects(:save).returns(true)
16
+ assert product.save
17
+ end
18
+
19
+ def test_stubbing_instance_methods_on_real_objects
20
+ prices = [stub(:pence => 1000), stub(:pence => 2000)]
21
+ product = Product.new
22
+ product.stubs(:prices).returns(prices)
23
+ assert_equal [1000, 2000], product.prices.collect {|p| p.pence}
24
+ end
25
+
26
+ def test_stubbing_an_instance_method_on_all_instances_of_a_class
27
+ Product.any_instance.stubs(:name).returns('stubbed_name')
28
+ product = Product.new
29
+ assert_equal 'stubbed_name', product.name
30
+ end
31
+
32
+ def test_traditional_mocking
33
+ object = mock()
34
+ object.expects(:expected_method).with(:p1, :p2).returns(:result)
35
+ assert_equal :result, object.expected_method(:p1, :p2)
36
+ end
37
+
38
+ def test_shortcuts
39
+ object = stub(:method1 => :result1, :method2 => :result2)
40
+ assert_equal :result1, object.method1
41
+ assert_equal :result2, object.method2
42
+ end
43
+
44
+ end
@@ -0,0 +1,26 @@
1
+ class Enterprise
2
+
3
+ def initialize(dilithium)
4
+ @dilithium = dilithium
5
+ end
6
+
7
+ def go(warp_factor)
8
+ warp_factor.times { @dilithium.nuke(:anti_matter) }
9
+ end
10
+
11
+ end
12
+
13
+ require 'test/unit'
14
+ require 'rubygems'
15
+ require 'mocha'
16
+
17
+ class EnterpriseTest < Test::Unit::TestCase
18
+
19
+ def test_should_boldly_go
20
+ dilithium = mock()
21
+ dilithium.expects(:nuke).with(:anti_matter).at_least_once # auto-verified at end of test
22
+ enterprise = Enterprise.new(dilithium)
23
+ enterprise.go(2)
24
+ end
25
+
26
+ end
@@ -0,0 +1,65 @@
1
+ class Order
2
+
3
+ attr_accessor :shipped_on
4
+
5
+ def total_cost
6
+ line_items.inject(0) { |total, line_item| total + line_item.price } + shipping_cost
7
+ end
8
+
9
+ def total_weight
10
+ line_items.inject(0) { |total, line_item| total + line_item.weight }
11
+ end
12
+
13
+ def shipping_cost
14
+ total_weight * 5 + 10
15
+ end
16
+
17
+ class << self
18
+
19
+ def find_all
20
+ # Database.connection.execute('select * from orders...
21
+ end
22
+
23
+ def number_shipped_since(date)
24
+ find_all.select { |order| order.shipped_on > date }.length
25
+ end
26
+
27
+ def unshipped_value
28
+ find_all.inject(0) { |total, order| order.shipped_on ? total : total + order.total_cost }
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ require 'test/unit'
36
+ require 'rubygems'
37
+ require 'mocha'
38
+
39
+ class OrderTest < Test::Unit::TestCase
40
+
41
+ # illustrates stubbing instance method
42
+ def test_should_calculate_shipping_cost_based_on_total_weight
43
+ order = Order.new
44
+ order.stubs(:total_weight).returns(10)
45
+ assert_equal 60, order.shipping_cost
46
+ end
47
+
48
+ # illustrates stubbing class method
49
+ def test_should_count_number_of_orders_shipped_after_specified_date
50
+ now = Time.now; week_in_secs = 7 * 24 * 60 * 60
51
+ order_1 = Order.new; order_1.shipped_on = now - 1 * week_in_secs
52
+ order_2 = Order.new; order_2.shipped_on = now - 3 * week_in_secs
53
+ Order.stubs(:find_all).returns([order_1, order_2])
54
+ assert_equal 1, Order.number_shipped_since(now - 2 * week_in_secs)
55
+ end
56
+
57
+ # illustrates stubbing instance method for all instances of a class
58
+ def test_should_calculate_value_of_unshipped_orders
59
+ Order.stubs(:find_all).returns([Order.new, Order.new, Order.new])
60
+ Order.any_instance.stubs(:shipped_on).returns(nil)
61
+ Order.any_instance.stubs(:total_cost).returns(10)
62
+ assert_equal 30, Order.unshipped_value
63
+ end
64
+
65
+ end
@@ -0,0 +1,54 @@
1
+ require 'mocha/class_method'
2
+
3
+ module Mocha
4
+
5
+ class AnyInstanceMethod < ClassMethod
6
+
7
+ def unstub
8
+ remove_new_method
9
+ restore_original_method
10
+ stubbee.any_instance.reset_mocha
11
+ end
12
+
13
+ def mock
14
+ stubbee.any_instance.mocha
15
+ end
16
+
17
+ def hide_original_method
18
+ if method_exists?(method)
19
+ begin
20
+ stubbee.class_eval("alias_method :#{hidden_method}, :#{method}", __FILE__, __LINE__)
21
+ rescue NameError
22
+ # deal with nasties like ActiveRecord::Associations::AssociationProxy
23
+ end
24
+ end
25
+ end
26
+
27
+ def define_new_method
28
+ stubbee.class_eval("def #{method}(*args, &block); self.class.any_instance.mocha.method_missing(:#{method}, *args, &block); end", __FILE__, __LINE__)
29
+ end
30
+
31
+ def remove_new_method
32
+ stubbee.class_eval("remove_method :#{method}", __FILE__, __LINE__)
33
+ end
34
+
35
+ def restore_original_method
36
+ if method_exists?(hidden_method)
37
+ begin
38
+ stubbee.class_eval("alias_method :#{method}, :#{hidden_method}; remove_method :#{hidden_method}", __FILE__, __LINE__)
39
+ rescue NameError
40
+ # deal with nasties like ActiveRecord::Associations::AssociationProxy
41
+ end
42
+ end
43
+ end
44
+
45
+ def method_exists?(method)
46
+ return true if stubbee.public_instance_methods(false).include?(method)
47
+ return true if stubbee.protected_instance_methods(false).include?(method)
48
+ return true if stubbee.private_instance_methods(false).include?(method)
49
+ return false
50
+ end
51
+
52
+ end
53
+
54
+ end
@@ -0,0 +1,17 @@
1
+ module Mocha
2
+
3
+ class BacktraceFilter
4
+
5
+ LIB_DIRECTORY = File.expand_path(File.join(File.dirname(__FILE__), "..")) + File::SEPARATOR
6
+
7
+ def initialize(lib_directory = LIB_DIRECTORY)
8
+ @lib_directory = lib_directory
9
+ end
10
+
11
+ def filtered(backtrace)
12
+ backtrace.reject { |location| Regexp.new(@lib_directory).match(File.expand_path(location)) }
13
+ end
14
+
15
+ end
16
+
17
+ end