shoulda 2.11.3 → 3.0.0.beta1

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 (262) hide show
  1. data/Gemfile +9 -0
  2. data/Gemfile.lock +108 -0
  3. data/README.md +95 -0
  4. data/Rakefile +6 -50
  5. data/lib/shoulda/version.rb +1 -1
  6. metadata +50 -269
  7. data/README.rdoc +0 -154
  8. data/bin/convert_to_should_syntax +0 -42
  9. data/lib/shoulda.rb +0 -9
  10. data/lib/shoulda/action_controller.rb +0 -34
  11. data/lib/shoulda/action_controller/macros.rb +0 -221
  12. data/lib/shoulda/action_controller/matchers.rb +0 -39
  13. data/lib/shoulda/action_controller/matchers/assign_to_matcher.rb +0 -112
  14. data/lib/shoulda/action_controller/matchers/filter_param_matcher.rb +0 -74
  15. data/lib/shoulda/action_controller/matchers/redirect_to_matcher.rb +0 -62
  16. data/lib/shoulda/action_controller/matchers/render_template_matcher.rb +0 -54
  17. data/lib/shoulda/action_controller/matchers/render_with_layout_matcher.rb +0 -99
  18. data/lib/shoulda/action_controller/matchers/respond_with_content_type_matcher.rb +0 -74
  19. data/lib/shoulda/action_controller/matchers/respond_with_matcher.rb +0 -85
  20. data/lib/shoulda/action_controller/matchers/route_matcher.rb +0 -93
  21. data/lib/shoulda/action_controller/matchers/set_session_matcher.rb +0 -98
  22. data/lib/shoulda/action_controller/matchers/set_the_flash_matcher.rb +0 -100
  23. data/lib/shoulda/action_mailer.rb +0 -13
  24. data/lib/shoulda/action_mailer/assertions.rb +0 -42
  25. data/lib/shoulda/action_mailer/matchers.rb +0 -22
  26. data/lib/shoulda/action_mailer/matchers/have_sent_email.rb +0 -110
  27. data/lib/shoulda/active_record.rb +0 -16
  28. data/lib/shoulda/active_record/assertions.rb +0 -69
  29. data/lib/shoulda/active_record/helpers.rb +0 -32
  30. data/lib/shoulda/active_record/macros.rb +0 -457
  31. data/lib/shoulda/active_record/matchers.rb +0 -42
  32. data/lib/shoulda/active_record/matchers/allow_mass_assignment_of_matcher.rb +0 -83
  33. data/lib/shoulda/active_record/matchers/allow_value_matcher.rb +0 -110
  34. data/lib/shoulda/active_record/matchers/association_matcher.rb +0 -226
  35. data/lib/shoulda/active_record/matchers/ensure_inclusion_of_matcher.rb +0 -87
  36. data/lib/shoulda/active_record/matchers/ensure_length_of_matcher.rb +0 -141
  37. data/lib/shoulda/active_record/matchers/have_db_column_matcher.rb +0 -169
  38. data/lib/shoulda/active_record/matchers/have_db_index_matcher.rb +0 -112
  39. data/lib/shoulda/active_record/matchers/have_readonly_attribute_matcher.rb +0 -59
  40. data/lib/shoulda/active_record/matchers/validate_acceptance_of_matcher.rb +0 -41
  41. data/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb +0 -65
  42. data/lib/shoulda/active_record/matchers/validate_numericality_of_matcher.rb +0 -39
  43. data/lib/shoulda/active_record/matchers/validate_presence_of_matcher.rb +0 -60
  44. data/lib/shoulda/active_record/matchers/validate_uniqueness_of_matcher.rb +0 -148
  45. data/lib/shoulda/active_record/matchers/validation_matcher.rb +0 -56
  46. data/lib/shoulda/assertions.rb +0 -79
  47. data/lib/shoulda/autoload_macros.rb +0 -46
  48. data/lib/shoulda/context.rb +0 -433
  49. data/lib/shoulda/helpers.rb +0 -8
  50. data/lib/shoulda/integrations/rspec.rb +0 -13
  51. data/lib/shoulda/integrations/rspec2.rb +0 -22
  52. data/lib/shoulda/integrations/test_unit.rb +0 -22
  53. data/lib/shoulda/macros.rb +0 -161
  54. data/lib/shoulda/private_helpers.rb +0 -13
  55. data/lib/shoulda/proc_extensions.rb +0 -14
  56. data/lib/shoulda/rails.rb +0 -8
  57. data/lib/shoulda/tasks.rb +0 -3
  58. data/lib/shoulda/tasks/list_tests.rake +0 -29
  59. data/lib/shoulda/tasks/yaml_to_shoulda.rake +0 -28
  60. data/rails/init.rb +0 -8
  61. data/test/README +0 -36
  62. data/test/fail_macros.rb +0 -55
  63. data/test/fixtures/addresses.yml +0 -3
  64. data/test/fixtures/friendships.yml +0 -0
  65. data/test/fixtures/posts.yml +0 -5
  66. data/test/fixtures/products.yml +0 -0
  67. data/test/fixtures/taggings.yml +0 -0
  68. data/test/fixtures/tags.yml +0 -9
  69. data/test/fixtures/users.yml +0 -6
  70. data/test/functional/posts_controller_test.rb +0 -121
  71. data/test/functional/users_controller_test.rb +0 -19
  72. data/test/matchers/action_mailer/have_sent_email_test.rb +0 -70
  73. data/test/matchers/active_record/allow_mass_assignment_of_matcher_test.rb +0 -74
  74. data/test/matchers/active_record/allow_value_matcher_test.rb +0 -64
  75. data/test/matchers/active_record/association_matcher_test.rb +0 -263
  76. data/test/matchers/active_record/ensure_inclusion_of_matcher_test.rb +0 -81
  77. data/test/matchers/active_record/ensure_length_of_matcher_test.rb +0 -158
  78. data/test/matchers/active_record/have_db_column_matcher_test.rb +0 -169
  79. data/test/matchers/active_record/have_db_index_matcher_test.rb +0 -91
  80. data/test/matchers/active_record/have_readonly_attributes_matcher_test.rb +0 -29
  81. data/test/matchers/active_record/validate_acceptance_of_matcher_test.rb +0 -44
  82. data/test/matchers/active_record/validate_format_of_matcher_test.rb +0 -39
  83. data/test/matchers/active_record/validate_numericality_of_matcher_test.rb +0 -52
  84. data/test/matchers/active_record/validate_presence_of_matcher_test.rb +0 -86
  85. data/test/matchers/active_record/validate_uniqueness_of_matcher_test.rb +0 -147
  86. data/test/matchers/controller/assign_to_matcher_test.rb +0 -45
  87. data/test/matchers/controller/filter_param_matcher_test.rb +0 -40
  88. data/test/matchers/controller/redirect_to_matcher_test.rb +0 -37
  89. data/test/matchers/controller/render_template_matcher_test.rb +0 -37
  90. data/test/matchers/controller/render_with_layout_matcher_test.rb +0 -47
  91. data/test/matchers/controller/respond_with_content_type_matcher_test.rb +0 -32
  92. data/test/matchers/controller/respond_with_matcher_test.rb +0 -96
  93. data/test/matchers/controller/route_matcher_test.rb +0 -75
  94. data/test/matchers/controller/set_session_matcher_test.rb +0 -48
  95. data/test/matchers/controller/set_the_flash_matcher.rb +0 -95
  96. data/test/other/autoload_macro_test.rb +0 -18
  97. data/test/other/context_test.rb +0 -372
  98. data/test/other/convert_to_should_syntax_test.rb +0 -63
  99. data/test/other/helpers_test.rb +0 -317
  100. data/test/other/private_helpers_test.rb +0 -32
  101. data/test/other/should_test.rb +0 -271
  102. data/test/rails2_model_builder.rb +0 -130
  103. data/test/rails2_root/app/controllers/application_controller.rb +0 -22
  104. data/test/rails2_root/app/controllers/posts_controller.rb +0 -87
  105. data/test/rails2_root/app/controllers/users_controller.rb +0 -84
  106. data/test/rails2_root/app/helpers/application_helper.rb +0 -3
  107. data/test/rails2_root/app/helpers/posts_helper.rb +0 -2
  108. data/test/rails2_root/app/helpers/users_helper.rb +0 -2
  109. data/test/rails2_root/app/models/address.rb +0 -7
  110. data/test/rails2_root/app/models/flea.rb +0 -11
  111. data/test/rails2_root/app/models/friendship.rb +0 -4
  112. data/test/rails2_root/app/models/notifier.rb +0 -8
  113. data/test/rails2_root/app/models/pets/cat.rb +0 -7
  114. data/test/rails2_root/app/models/pets/dog.rb +0 -10
  115. data/test/rails2_root/app/models/post.rb +0 -12
  116. data/test/rails2_root/app/models/product.rb +0 -12
  117. data/test/rails2_root/app/models/profile.rb +0 -2
  118. data/test/rails2_root/app/models/registration.rb +0 -2
  119. data/test/rails2_root/app/models/tag.rb +0 -8
  120. data/test/rails2_root/app/models/tagging.rb +0 -4
  121. data/test/rails2_root/app/models/treat.rb +0 -3
  122. data/test/rails2_root/app/models/user.rb +0 -32
  123. data/test/rails2_root/app/views/layouts/posts.rhtml +0 -19
  124. data/test/rails2_root/app/views/layouts/users.rhtml +0 -17
  125. data/test/rails2_root/app/views/layouts/wide.html.erb +0 -1
  126. data/test/rails2_root/app/views/notifier/the_email.html.erb +0 -1
  127. data/test/rails2_root/app/views/posts/edit.rhtml +0 -27
  128. data/test/rails2_root/app/views/posts/index.rhtml +0 -25
  129. data/test/rails2_root/app/views/posts/new.rhtml +0 -26
  130. data/test/rails2_root/app/views/posts/show.rhtml +0 -18
  131. data/test/rails2_root/app/views/users/edit.rhtml +0 -22
  132. data/test/rails2_root/app/views/users/index.rhtml +0 -22
  133. data/test/rails2_root/app/views/users/new.rhtml +0 -21
  134. data/test/rails2_root/app/views/users/show.rhtml +0 -13
  135. data/test/rails2_root/config/boot.rb +0 -110
  136. data/test/rails2_root/config/database.yml +0 -4
  137. data/test/rails2_root/config/environment.rb +0 -17
  138. data/test/rails2_root/config/environments/test.rb +0 -23
  139. data/test/rails2_root/config/initializers/new_rails_defaults.rb +0 -15
  140. data/test/rails2_root/config/initializers/shoulda.rb +0 -8
  141. data/test/rails2_root/config/routes.rb +0 -6
  142. data/test/rails2_root/db/migrate/001_create_users.rb +0 -19
  143. data/test/rails2_root/db/migrate/002_create_posts.rb +0 -13
  144. data/test/rails2_root/db/migrate/003_create_taggings.rb +0 -12
  145. data/test/rails2_root/db/migrate/004_create_tags.rb +0 -11
  146. data/test/rails2_root/db/migrate/005_create_dogs.rb +0 -12
  147. data/test/rails2_root/db/migrate/006_create_addresses.rb +0 -14
  148. data/test/rails2_root/db/migrate/007_create_fleas.rb +0 -11
  149. data/test/rails2_root/db/migrate/008_create_dogs_fleas.rb +0 -12
  150. data/test/rails2_root/db/migrate/009_create_products.rb +0 -17
  151. data/test/rails2_root/db/migrate/010_create_friendships.rb +0 -14
  152. data/test/rails2_root/db/migrate/011_create_treats.rb +0 -12
  153. data/test/rails2_root/db/migrate/20090506203502_create_profiles.rb +0 -12
  154. data/test/rails2_root/db/migrate/20090506203536_create_registrations.rb +0 -14
  155. data/test/rails2_root/db/migrate/20090513104502_create_cats.rb +0 -12
  156. data/test/rails2_root/db/schema.rb +0 -0
  157. data/test/rails2_root/log/test.log +0 -50381
  158. data/test/rails2_root/public/404.html +0 -30
  159. data/test/rails2_root/public/422.html +0 -30
  160. data/test/rails2_root/public/500.html +0 -30
  161. data/test/rails2_root/script/console +0 -3
  162. data/test/rails2_root/script/generate +0 -3
  163. data/test/rails2_root/test/shoulda_macros/custom_macro.rb +0 -6
  164. data/test/rails2_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros/gem_macro.rb +0 -6
  165. data/test/rails2_root/vendor/plugins/plugin_with_macro/shoulda_macros/plugin_macro.rb +0 -6
  166. data/test/rails2_test_helper.rb +0 -6
  167. data/test/rails3_model_builder.rb +0 -118
  168. data/test/rails3_root/Gemfile +0 -28
  169. data/test/rails3_root/README +0 -244
  170. data/test/rails3_root/Rakefile +0 -10
  171. data/test/rails3_root/app/controllers/application_controller.rb +0 -22
  172. data/test/rails3_root/app/controllers/posts_controller.rb +0 -87
  173. data/test/rails3_root/app/controllers/users_controller.rb +0 -82
  174. data/test/rails3_root/app/helpers/application_helper.rb +0 -2
  175. data/test/rails3_root/app/models/address.rb +0 -7
  176. data/test/rails3_root/app/models/flea.rb +0 -11
  177. data/test/rails3_root/app/models/friendship.rb +0 -4
  178. data/test/rails3_root/app/models/notifier.rb +0 -8
  179. data/test/rails3_root/app/models/pets/cat.rb +0 -7
  180. data/test/rails3_root/app/models/pets/dog.rb +0 -10
  181. data/test/rails3_root/app/models/post.rb +0 -12
  182. data/test/rails3_root/app/models/product.rb +0 -12
  183. data/test/rails3_root/app/models/profile.rb +0 -2
  184. data/test/rails3_root/app/models/registration.rb +0 -2
  185. data/test/rails3_root/app/models/tag.rb +0 -8
  186. data/test/rails3_root/app/models/tagging.rb +0 -4
  187. data/test/rails3_root/app/models/treat.rb +0 -3
  188. data/test/rails3_root/app/models/user.rb +0 -32
  189. data/test/rails3_root/app/views/layouts/application.html.erb +0 -14
  190. data/test/rails3_root/app/views/layouts/posts.rhtml +0 -19
  191. data/test/rails3_root/app/views/layouts/users.rhtml +0 -17
  192. data/test/rails3_root/app/views/layouts/wide.html.erb +0 -1
  193. data/test/rails3_root/app/views/notifier/the_email.html.erb +0 -1
  194. data/test/rails3_root/app/views/posts/edit.rhtml +0 -27
  195. data/test/rails3_root/app/views/posts/index.rhtml +0 -25
  196. data/test/rails3_root/app/views/posts/new.rhtml +0 -24
  197. data/test/rails3_root/app/views/posts/show.rhtml +0 -18
  198. data/test/rails3_root/app/views/users/edit.rhtml +0 -22
  199. data/test/rails3_root/app/views/users/index.rhtml +0 -22
  200. data/test/rails3_root/app/views/users/new.rhtml +0 -21
  201. data/test/rails3_root/app/views/users/show.rhtml +0 -13
  202. data/test/rails3_root/config.ru +0 -4
  203. data/test/rails3_root/config/application.rb +0 -46
  204. data/test/rails3_root/config/boot.rb +0 -6
  205. data/test/rails3_root/config/database.yml +0 -22
  206. data/test/rails3_root/config/environment.rb +0 -5
  207. data/test/rails3_root/config/environments/development.rb +0 -19
  208. data/test/rails3_root/config/environments/production.rb +0 -42
  209. data/test/rails3_root/config/environments/test.rb +0 -32
  210. data/test/rails3_root/config/initializers/backtrace_silencers.rb +0 -7
  211. data/test/rails3_root/config/initializers/inflections.rb +0 -10
  212. data/test/rails3_root/config/initializers/mime_types.rb +0 -5
  213. data/test/rails3_root/config/initializers/secret_token.rb +0 -7
  214. data/test/rails3_root/config/initializers/session_store.rb +0 -8
  215. data/test/rails3_root/config/locales/en.yml +0 -5
  216. data/test/rails3_root/config/routes.rb +0 -4
  217. data/test/rails3_root/db/migrate/001_create_users.rb +0 -19
  218. data/test/rails3_root/db/migrate/002_create_posts.rb +0 -13
  219. data/test/rails3_root/db/migrate/003_create_taggings.rb +0 -12
  220. data/test/rails3_root/db/migrate/004_create_tags.rb +0 -11
  221. data/test/rails3_root/db/migrate/005_create_dogs.rb +0 -12
  222. data/test/rails3_root/db/migrate/006_create_addresses.rb +0 -14
  223. data/test/rails3_root/db/migrate/007_create_fleas.rb +0 -11
  224. data/test/rails3_root/db/migrate/008_create_dogs_fleas.rb +0 -12
  225. data/test/rails3_root/db/migrate/009_create_products.rb +0 -17
  226. data/test/rails3_root/db/migrate/010_create_friendships.rb +0 -14
  227. data/test/rails3_root/db/migrate/011_create_treats.rb +0 -12
  228. data/test/rails3_root/db/migrate/20090506203502_create_profiles.rb +0 -12
  229. data/test/rails3_root/db/migrate/20090506203536_create_registrations.rb +0 -14
  230. data/test/rails3_root/db/migrate/20090513104502_create_cats.rb +0 -12
  231. data/test/rails3_root/db/seeds.rb +0 -7
  232. data/test/rails3_root/db/test.sqlite3 +0 -0
  233. data/test/rails3_root/log/test.log +0 -10834
  234. data/test/rails3_root/public/404.html +0 -26
  235. data/test/rails3_root/public/422.html +0 -26
  236. data/test/rails3_root/public/500.html +0 -26
  237. data/test/rails3_root/public/favicon.ico +0 -0
  238. data/test/rails3_root/public/images/rails.png +0 -0
  239. data/test/rails3_root/public/index.html +0 -279
  240. data/test/rails3_root/public/javascripts/application.js +0 -2
  241. data/test/rails3_root/public/javascripts/controls.js +0 -965
  242. data/test/rails3_root/public/javascripts/dragdrop.js +0 -974
  243. data/test/rails3_root/public/javascripts/effects.js +0 -1123
  244. data/test/rails3_root/public/javascripts/prototype.js +0 -4874
  245. data/test/rails3_root/public/javascripts/rails.js +0 -118
  246. data/test/rails3_root/public/robots.txt +0 -5
  247. data/test/rails3_root/script/rails +0 -9
  248. data/test/rails3_root/test/performance/browsing_test.rb +0 -9
  249. data/test/rails3_root/test/test_helper.rb +0 -13
  250. data/test/rails3_test_helper.rb +0 -6
  251. data/test/rspec_test.rb +0 -207
  252. data/test/test_helper.rb +0 -36
  253. data/test/unit/address_test.rb +0 -10
  254. data/test/unit/cat_test.rb +0 -7
  255. data/test/unit/dog_test.rb +0 -9
  256. data/test/unit/flea_test.rb +0 -14
  257. data/test/unit/friendship_test.rb +0 -6
  258. data/test/unit/post_test.rb +0 -15
  259. data/test/unit/product_test.rb +0 -23
  260. data/test/unit/tag_test.rb +0 -11
  261. data/test/unit/tagging_test.rb +0 -6
  262. data/test/unit/user_test.rb +0 -46
@@ -1,5 +0,0 @@
1
- first:
2
- id: 1
3
- title: My Cute Kitten!
4
- body: This is totally a cute kitten
5
- user_id: 1
File without changes
File without changes
@@ -1,9 +0,0 @@
1
- first:
2
- id: 1
3
- name: Stuff
4
- second:
5
- id: 2
6
- name: Rails
7
- third:
8
- id: 3
9
- name: Nothing
@@ -1,6 +0,0 @@
1
- first:
2
- id: 1
3
- name: Some dude
4
- age: 2
5
- email: none@none.com
6
- ssn: 123456789
@@ -1,121 +0,0 @@
1
- require 'test_helper'
2
- require 'posts_controller'
3
-
4
- # Re-raise errors caught by the controller.
5
- class PostsController; def rescue_action(e) raise e end; end
6
-
7
- class PostsControllerTest < ActionController::TestCase
8
- fixtures :all
9
-
10
- def setup
11
- @controller = PostsController.new
12
- @request = ActionController::TestRequest.new
13
- @response = ActionController::TestResponse.new
14
- @post = Post.find(:first)
15
- end
16
-
17
- # autodetects the :controller
18
- should_route :get, '/posts', :action => :index
19
- # explicitly specify :controller
20
- should_route :post, '/posts', :controller => :posts, :action => :create
21
- # non-string parameter
22
- should_route :get, '/posts/1', :action => :show, :id => 1
23
- # string-parameter
24
- should_route :put, '/posts/1', :action => :update, :id => "1"
25
- should_route :delete, '/posts/1', :action => :destroy, :id => 1
26
- should_route :get, '/posts/new', :action => :new
27
-
28
- # Test the nested routes
29
- should_route :get, '/users/5/posts', :action => :index, :user_id => 5
30
- should_route :post, '/users/5/posts', :action => :create, :user_id => 5
31
- should_route :get, '/users/5/posts/1', :action => :show, :id => 1, :user_id => 5
32
- should_route :delete, '/users/5/posts/1', :action => :destroy, :id => 1, :user_id => 5
33
- should_route :get, '/users/5/posts/new', :action => :new, :user_id => 5
34
- should_route :put, '/users/5/posts/1', :action => :update, :id => 1, :user_id => 5
35
-
36
- context "Logged in" do
37
- setup do
38
- @request.session[:logged_in] = true
39
- end
40
-
41
- context "viewing posts for a user" do
42
- setup do
43
- get :index, :user_id => users(:first)
44
- end
45
- should_respond_with :success
46
- should_assign_to :user, :class => User
47
- should_render_template :index
48
- should_assign_to(:user) { users(:first) }
49
- should_fail do
50
- should_assign_to :user, :class => Post
51
- end
52
- should_fail do
53
- should_assign_to(:user) { posts(:first) }
54
- end
55
- should_assign_to :posts
56
- should_not_assign_to :foo, :bar
57
- end
58
-
59
- context "viewing posts for a user with rss format" do
60
- setup do
61
- get :index, :user_id => users(:first), :format => 'rss'
62
- @user = users(:first)
63
- end
64
- should_respond_with :success
65
- should_respond_with_content_type 'application/rss+xml'
66
- context "with a symbol" do
67
- should_respond_with_content_type :rss
68
- end
69
- context "with a regexp" do
70
- should_respond_with_content_type /rss/
71
- end
72
- should_set_session(:mischief) { nil }
73
- should_set_session(:special) { '$2 off your next purchase' }
74
- should_set_session(:special_user_id) { @user.id }
75
- should_set_session(:false_var) { false }
76
- should_fail do
77
- should_set_session(:special_user_id) { 'value' }
78
- end
79
- should_assign_to :user, :posts
80
- should_not_assign_to :foo, :bar
81
- end
82
-
83
- context "viewing a post on GET to #show" do
84
- setup { get :show, :user_id => users(:first), :id => posts(:first) }
85
- should_render_with_layout 'wide'
86
- context "with a symbol" do # to avoid redefining a test
87
- should_render_with_layout :wide
88
- end
89
- should_assign_to :false_flag
90
- should_fail do
91
- should_set_the_flash_to /.*/
92
- end
93
- end
94
-
95
- context "on GET to #new" do
96
- setup { get :new, :user_id => users(:first) }
97
- should_render_without_layout
98
- should_not_set_the_flash
99
- end
100
-
101
- context "on POST to #create" do
102
- setup do
103
- post :create, :user_id => users(:first),
104
- :post => { :title => "first post",
105
- :body => 'blah blah blah' }
106
- end
107
-
108
- should_redirect_to('the created post') { user_post_url(users(:first),
109
- assigns(:post)) }
110
- should_fail do
111
- should_redirect_to('elsewhere') { user_posts_url(users(:first)) }
112
- end
113
-
114
- should_set_the_flash_to /success/
115
- should_fail do
116
- should_not_set_the_flash
117
- end
118
- end
119
- end
120
-
121
- end
@@ -1,19 +0,0 @@
1
- require 'test_helper'
2
- require 'users_controller'
3
-
4
- # Re-raise errors caught by the controller.
5
- class UsersController; def rescue_action(e) raise e end; end
6
-
7
- class UsersControllerTest < ActionController::TestCase
8
- fixtures :all
9
-
10
- def setup
11
- @controller = UsersController.new
12
- @request = ActionController::TestRequest.new
13
- @response = ActionController::TestResponse.new
14
- @user = User.find(:first)
15
- end
16
-
17
- should_filter_params :ssn
18
-
19
- end
@@ -1,70 +0,0 @@
1
- require 'test_helper'
2
-
3
- class HaveSentEmailTest < ActiveSupport::TestCase # :nodoc:
4
- def add_mail_to_deliveries
5
- if defined?(AbstractController::Rendering)
6
- ::ActionMailer::Base.deliveries << Mailer.the_email
7
- else
8
- ::ActionMailer::Base.deliveries << Mailer.create_the_email
9
- end
10
- end
11
-
12
- context "an email" do
13
- setup do
14
- define_mailer :mailer, [:the_email] do
15
- def the_email
16
- if defined?(AbstractController::Rendering)
17
- mail :from => "do-not-reply@example.com",
18
- :to => "myself@me.com",
19
- :subject => "This is spam",
20
- :body => "Every email is spam."
21
- else
22
- from "do-not-reply@example.com"
23
- recipients "myself@me.com"
24
- subject "This is spam"
25
- body "Every email is spam."
26
- end
27
- end
28
- end
29
- add_mail_to_deliveries
30
- end
31
-
32
- teardown { ::ActionMailer::Base.deliveries.clear }
33
-
34
- should "accept based on the subject" do
35
- assert_accepts have_sent_email.with_subject(/is spam$/), nil
36
- assert_rejects have_sent_email.with_subject(/totally safe/), nil,
37
- :message => /Expected sent email with subject/
38
- end
39
-
40
- should "accept based on the sender" do
41
- assert_accepts have_sent_email.from('do-not-reply@example.com'), nil
42
- assert_rejects have_sent_email.from('you@example.com'), nil,
43
- :message => /Expected sent email from/
44
- end
45
-
46
- should "accept based on the body" do
47
- assert_accepts have_sent_email.with_body(/is spam\./), nil
48
- assert_rejects have_sent_email.with_body(/totally safe/), nil,
49
- :message => /Expected sent email with body/
50
- end
51
-
52
- should "accept based on the recipient" do
53
- assert_accepts have_sent_email.to('myself@me.com'), nil
54
- assert_rejects have_sent_email.to('you@example.com'), nil,
55
- :message => /Expected sent email to/
56
- end
57
-
58
- should "list all deliveries within failure message" do
59
- add_mail_to_deliveries
60
-
61
- assert_rejects have_sent_email.to('you@example.com'), nil,
62
- :message => /Deliveries:\n"This is spam" to \["myself@me\.com"\]\n"This is spam" to \["myself@me\.com"\]/
63
- end
64
-
65
- should "chain" do
66
- assert_accepts have_sent_email.with_subject(/spam/).from('do-not-reply@example.com').with_body(/spam/).to('myself@me.com'), nil
67
- assert_rejects have_sent_email.with_subject(/ham/).from('you@example.com').with_body(/ham/).to('them@example.com'), nil
68
- end
69
- end
70
- end
@@ -1,74 +0,0 @@
1
- require 'test_helper'
2
-
3
- class AllowMassAssignmentOfMatcherTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- context "an attribute that is blacklisted from mass-assignment" do
6
- setup do
7
- define_model :example, :attr => :string do
8
- attr_protected :attr
9
- end
10
- @model = Example.new
11
- end
12
-
13
- should "reject being mass-assignable" do
14
- assert_rejects allow_mass_assignment_of(:attr), @model
15
- end
16
- end
17
-
18
- context "an attribute that is not whitelisted for mass-assignment" do
19
- setup do
20
- define_model :example, :attr => :string, :other => :string do
21
- attr_accessible :other
22
- end
23
- @model = Example.new
24
- end
25
-
26
- should "reject being mass-assignable" do
27
- assert_rejects allow_mass_assignment_of(:attr), @model
28
- end
29
- end
30
-
31
- context "an attribute that is whitelisted for mass-assignment" do
32
- setup do
33
- define_model :example, :attr => :string do
34
- attr_accessible :attr
35
- end
36
- @model = Example.new
37
- end
38
-
39
- should "accept being mass-assignable" do
40
- assert_accepts allow_mass_assignment_of(:attr), @model
41
- end
42
- end
43
-
44
- context "an attribute not included in the mass-assignment blacklist" do
45
- setup do
46
- define_model :example, :attr => :string, :other => :string do
47
- attr_protected :other
48
- end
49
- @model = Example.new
50
- end
51
-
52
- should "accept being mass-assignable" do
53
- assert_accepts allow_mass_assignment_of(:attr), @model
54
- end
55
- end
56
-
57
- context "an attribute on a class with no protected attributes" do
58
- setup do
59
- define_model :example, :attr => :string
60
- @model = Example.new
61
- end
62
-
63
- should "accept being mass-assignable" do
64
- assert_accepts allow_mass_assignment_of(:attr), @model
65
- end
66
-
67
- should "assign a negative failure message" do
68
- matcher = allow_mass_assignment_of(:attr)
69
- matcher.matches?(@model)
70
- assert_not_nil matcher.negative_failure_message
71
- end
72
- end
73
-
74
- end
@@ -1,64 +0,0 @@
1
- require 'test_helper'
2
-
3
- class AllowValueMatcherTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- context "an attribute with a format validation" do
6
- setup do
7
- define_model :example, :attr => :string do
8
- validates_format_of :attr, :with => /abc/
9
- end
10
- @model = Example.new
11
- end
12
-
13
- should "allow a good value" do
14
- assert_accepts allow_value("abcde").for(:attr), @model
15
- end
16
-
17
- should "not allow a bad value" do
18
- assert_rejects allow_value("xyz").for(:attr), @model
19
- end
20
- end
21
-
22
- context "an attribute with a format validation and a custom message" do
23
- setup do
24
- define_model :example, :attr => :string do
25
- validates_format_of :attr, :with => /abc/, :message => 'bad value'
26
- end
27
- @model = Example.new
28
- end
29
-
30
- should "allow a good value" do
31
- assert_accepts allow_value('abcde').for(:attr).with_message(/bad/),
32
- @model
33
- end
34
-
35
- should "not allow a bad value" do
36
- assert_rejects allow_value('xyz').for(:attr).with_message(/bad/),
37
- @model
38
- end
39
- end
40
-
41
- context "an attribute with several validations" do
42
- setup do
43
- define_model :example, :attr => :string do
44
- validates_presence_of :attr
45
- validates_length_of :attr, :within => 1..5
46
- validates_numericality_of :attr, :greater_than_or_equal_to => 1,
47
- :less_than_or_equal_to => 50000
48
- end
49
- @model = Example.new
50
- end
51
-
52
- should "allow a good value" do
53
- assert_accepts allow_value("12345").for(:attr), @model
54
- end
55
-
56
- bad_values = [nil, "", "abc", "0", "50001", "123456"]
57
- bad_values.each do |value|
58
- should "not allow a bad value (#{value.inspect})" do
59
- assert_rejects allow_value(value).for(:attr), @model
60
- end
61
- end
62
- end
63
-
64
- end
@@ -1,263 +0,0 @@
1
- require 'test_helper'
2
-
3
- class AssociationMatcherTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- context "belong_to" do
6
- setup do
7
- @matcher = belong_to(:parent)
8
- end
9
-
10
- should "accept a good association with the default foreign key" do
11
- define_model :parent
12
- define_model :child, :parent_id => :integer do
13
- belongs_to :parent
14
- end
15
- assert_accepts @matcher, Child.new
16
- end
17
-
18
- should "reject a nonexistent association" do
19
- define_model :child
20
- assert_rejects @matcher, Child.new
21
- end
22
-
23
- should "reject an association of the wrong type" do
24
- define_model :parent, :child_id => :integer
25
- child_class = define_model :child do
26
- has_one :parent
27
- end
28
- assert_rejects @matcher, Child.new
29
- end
30
-
31
- should "reject an association that has a nonexistent foreign key" do
32
- define_model :parent
33
- define_model :child do
34
- belongs_to :parent
35
- end
36
- assert_rejects @matcher, Child.new
37
- end
38
-
39
- should "accept an association with an existing custom foreign key" do
40
- define_model :parent
41
- define_model :child, :guardian_id => :integer do
42
- belongs_to :parent, :foreign_key => 'guardian_id'
43
- end
44
- assert_accepts @matcher, Child.new
45
- end
46
-
47
- should "accept a polymorphic association" do
48
- define_model :child, :parent_type => :string,
49
- :parent_id => :integer do
50
- belongs_to :parent, :polymorphic => true
51
- end
52
- assert_accepts @matcher, Child.new
53
- end
54
-
55
- should "accept an association with a valid :dependent option" do
56
- define_model :parent
57
- define_model :child, :parent_id => :integer do
58
- belongs_to :parent, :dependent => :destroy
59
- end
60
- assert_accepts @matcher.dependent(:destroy), Child.new
61
- end
62
-
63
- should "reject an association with a bad :dependent option" do
64
- define_model :parent
65
- define_model :child, :parent_id => :integer do
66
- belongs_to :parent
67
- end
68
- assert_rejects @matcher.dependent(:destroy), Child.new
69
- end
70
- end
71
-
72
- context "have_many" do
73
- setup do
74
- @matcher = have_many(:children)
75
- end
76
-
77
- should "accept a valid association without any options" do
78
- define_model :child, :parent_id => :integer
79
- define_model :parent do
80
- has_many :children
81
- end
82
- assert_accepts @matcher, Parent.new
83
- end
84
-
85
- should "accept a valid association with a :through option" do
86
- define_model :child
87
- define_model :conception, :child_id => :integer,
88
- :parent_id => :integer do
89
- belongs_to :child
90
- end
91
- define_model :parent do
92
- has_many :conceptions
93
- has_many :children, :through => :conceptions
94
- end
95
- assert_accepts @matcher, Parent.new
96
- end
97
-
98
- should "accept a valid association with an :as option" do
99
- define_model :child, :guardian_type => :string,
100
- :guardian_id => :integer
101
- define_model :parent do
102
- has_many :children, :as => :guardian
103
- end
104
- assert_accepts @matcher, Parent.new
105
- end
106
-
107
- should "reject an association that has a nonexistent foreign key" do
108
- define_model :child
109
- define_model :parent do
110
- has_many :children
111
- end
112
- assert_rejects @matcher, Parent.new
113
- end
114
-
115
- should "reject an association with a bad :as option" do
116
- define_model :child, :caretaker_type => :string,
117
- :caretaker_id => :integer
118
- define_model :parent do
119
- has_many :children, :as => :guardian
120
- end
121
- assert_rejects @matcher, Parent.new
122
- end
123
-
124
- should "reject an association that has a bad :through option" do
125
- define_model :child, :parent_id => :integer
126
- define_model :parent do
127
- has_many :children
128
- end
129
- assert_rejects @matcher.through(:conceptions),
130
- Parent.new,
131
- :message => /does not have any relationship to conceptions/
132
- end
133
-
134
- should "reject an association that has the wrong :through option" do
135
- define_model :child
136
- define_model :conception, :child_id => :integer,
137
- :parent_id => :integer do
138
- belongs_to :child
139
- end
140
- define_model :parent do
141
- has_many :conceptions
142
- has_many :relationships
143
- has_many :children, :through => :conceptions
144
- end
145
- assert_rejects @matcher.through(:relationships),
146
- Parent.new,
147
- :message => /through relationships, but got it through conceptions/
148
- end
149
-
150
- should "accept an association with a valid :dependent option" do
151
- define_model :child, :parent_id => :integer
152
- define_model :parent do
153
- has_many :children, :dependent => :destroy
154
- end
155
- assert_accepts @matcher.dependent(:destroy), Parent.new
156
- end
157
-
158
- should "reject an association with a bad :dependent option" do
159
- define_model :child, :parent_id => :integer
160
- define_model :parent do
161
- has_many :children
162
- end
163
- assert_rejects @matcher.dependent(:destroy), Parent.new
164
- end
165
- end
166
-
167
- context "have_one" do
168
- setup do
169
- @matcher = have_one(:detail)
170
- end
171
-
172
- should "accept a valid association without any options" do
173
- define_model :detail, :person_id => :integer
174
- define_model :person do
175
- has_one :detail
176
- end
177
- assert_accepts @matcher, Person.new
178
- end
179
-
180
- should "accept a valid association with an :as option" do
181
- define_model :detail, :detailable_id => :integer,
182
- :detailable_type => :string
183
- define_model :person do
184
- has_one :detail, :as => :detailable
185
- end
186
- assert_accepts @matcher, Person.new
187
- end
188
-
189
- should "reject an association that has a nonexistent foreign key" do
190
- define_model :detail
191
- define_model :person do
192
- has_one :detail
193
- end
194
- assert_rejects @matcher, Person.new
195
- end
196
-
197
- should "reject an association with a bad :as option" do
198
- define_model :detail, :detailable_id => :integer,
199
- :detailable_type => :string
200
- define_model :person do
201
- has_one :detail, :as => :describable
202
- end
203
- assert_rejects @matcher, Person.new
204
- end
205
-
206
- should "accept an association with a valid :dependent option" do
207
- define_model :detail, :person_id => :integer
208
- define_model :person do
209
- has_one :detail, :dependent => :destroy
210
- end
211
- assert_accepts @matcher.dependent(:destroy), Person.new
212
- end
213
-
214
- should "reject an association with a bad :dependent option" do
215
- define_model :detail, :person_id => :integer
216
- define_model :person do
217
- has_one :detail
218
- end
219
- assert_rejects @matcher.dependent(:destroy), Person.new
220
- end
221
- end
222
-
223
- context "have_and_belong_to_many" do
224
- setup do
225
- @matcher = have_and_belong_to_many(:relatives)
226
- end
227
-
228
- should "accept a valid association" do
229
- define_model :relatives
230
- define_model :person do
231
- has_and_belongs_to_many :relatives
232
- end
233
- define_model :people_relative, :person_id => :integer,
234
- :relative_id => :integer
235
- assert_accepts @matcher, Person.new
236
- end
237
-
238
- should "reject a nonexistent association" do
239
- define_model :relatives
240
- define_model :person
241
- define_model :people_relative, :person_id => :integer,
242
- :relative_id => :integer
243
- assert_rejects @matcher, Person.new
244
- end
245
-
246
- should "reject an association with a nonexistent join table" do
247
- define_model :relatives
248
- define_model :person do
249
- has_and_belongs_to_many :relatives
250
- end
251
- assert_rejects @matcher, Person.new
252
- end
253
-
254
- should "reject an association of the wrong type" do
255
- define_model :relatives, :person_id => :integer
256
- define_model :person do
257
- has_many :relatives
258
- end
259
- assert_rejects @matcher, Person.new
260
- end
261
- end
262
-
263
- end