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,317 +0,0 @@
1
- require 'test_helper'
2
- require 'action_mailer'
3
- require 'mocha'
4
-
5
- class HelpersTest < ActiveSupport::TestCase # :nodoc:
6
-
7
- context "given delivered emails" do
8
- setup do
9
- email1 = stub(:subject => "one", :to => ["none1@email.com"])
10
- email2 = stub(:subject => "two", :to => ["none2@email.com"])
11
- ActionMailer::Base.stubs(:deliveries).returns([email1, email2])
12
- end
13
-
14
- should "have sent an email" do
15
- assert_sent_email
16
-
17
- assert_raises(Test::Unit::AssertionFailedError) do
18
- assert_did_not_send_email
19
- end
20
- end
21
-
22
- should "find email one" do
23
- assert_sent_email do |e|
24
- e.subject =~ /one/
25
- end
26
- end
27
-
28
- should "not find an email that doesn't exist" do
29
- assert_raises(Test::Unit::AssertionFailedError) do
30
- assert_sent_email do |e|
31
- e.subject =~ /whatever/
32
- end
33
- end
34
- end
35
- end
36
-
37
- context "when there are no emails" do
38
- setup do
39
- ActionMailer::Base.stubs(:deliveries).returns([])
40
- end
41
-
42
- should "not have sent an email" do
43
- assert_did_not_send_email
44
-
45
- assert_raises(Test::Unit::AssertionFailedError) do
46
- assert_sent_email
47
- end
48
- end
49
- end
50
-
51
- context "an array of values" do
52
- setup do
53
- @a = ['abc', 'def', 3]
54
- end
55
-
56
- [/b/, 'abc', 3].each do |x|
57
- should "contain #{x.inspect}" do
58
- assert_raises(Test::Unit::AssertionFailedError) do
59
- assert_does_not_contain @a, x
60
- end
61
- assert_contains @a, x
62
- end
63
- end
64
-
65
- should "not contain 'wtf'" do
66
- assert_raises(Test::Unit::AssertionFailedError) {assert_contains @a, 'wtf'}
67
- assert_does_not_contain @a, 'wtf'
68
- end
69
-
70
- should "be the same as another array, ordered differently" do
71
- assert_same_elements(@a, [3, "def", "abc"])
72
- assert_raises(Test::Unit::AssertionFailedError) do
73
- assert_same_elements(@a, [3, 3, "def", "abc"])
74
- end
75
- assert_raises(Test::Unit::AssertionFailedError) do
76
- assert_same_elements([@a, "abc"].flatten, [3, 3, "def", "abc"])
77
- end
78
- end
79
- end
80
-
81
- context "an array of values" do
82
- setup do
83
- @a = [1, 2, "(3)"]
84
- end
85
-
86
- context "after adding another value" do
87
- setup do
88
- @a.push(4)
89
- end
90
-
91
- should_change("the number of elements", :by => 1) { @a.length }
92
- should_change("the number of elements", :from => 3) { @a.length }
93
- should_change("the number of elements", :to => 4) { @a.length }
94
- should_change("the first element", :by => 0) { @a[0] }
95
- should_not_change("the first element") { @a[0] }
96
- end
97
-
98
- context "after replacing it with an array of strings" do
99
- setup do
100
- @a = %w(a b c d e f)
101
- end
102
-
103
- should_change("the number of elements", :by => 3) { @a.length }
104
- should_change("the number of elements", :from => 3, :to => 6, :by => 3) { @a.length }
105
- should_change("the first element") { @a[0] }
106
- should_change("the second element", :from => 2, :to => "b") { @a[1] }
107
- should_change("the third element", :from => /\d/, :to => /\w/) { @a[2] }
108
- should_change("the last element", :to => String) { @a[3] }
109
- end
110
- end
111
-
112
- context "assert_good_value" do
113
- should "validate a good email address" do
114
- assert_good_value User.new, :email, "good@example.com"
115
- end
116
-
117
- should "validate a good SSN with a custom message" do
118
- assert_good_value User.new, :ssn, "xxxxxxxxx", /length/
119
- end
120
-
121
- should "fail to validate a bad email address" do
122
- assert_raises Test::Unit::AssertionFailedError do
123
- assert_good_value User.new, :email, "bad"
124
- end
125
- end
126
-
127
- should "fail to validate a bad SSN that is too short" do
128
- assert_raises Test::Unit::AssertionFailedError do
129
- assert_good_value User.new, :ssn, "x", /length/
130
- end
131
- end
132
-
133
- should "accept a class as the first argument" do
134
- assert_good_value User, :email, "good@example.com"
135
- end
136
- end
137
-
138
- context "assert_bad_value" do
139
- should "invalidate a bad email address" do
140
- assert_bad_value User.new, :email, "bad"
141
- end
142
-
143
- should "invalidate a bad SSN with a custom message" do
144
- assert_bad_value User.new, :ssn, "x", /length/
145
- end
146
-
147
- should "fail to invalidate a good email address" do
148
- assert_raises Test::Unit::AssertionFailedError do
149
- assert_bad_value User.new, :email, "good@example.com"
150
- end
151
- end
152
-
153
- should "fail to invalidate a good SSN" do
154
- assert_raises Test::Unit::AssertionFailedError do
155
- assert_bad_value User.new, :ssn, "xxxxxxxxx", /length/
156
- end
157
- end
158
-
159
- should "accept a class as the first argument" do
160
- assert_bad_value User, :email, "bad"
161
- end
162
- end
163
-
164
- context "a matching matcher" do
165
- setup do
166
- @matcher = stub('matcher', :matches? => true,
167
- :failure_message => 'bad failure message',
168
- :negative_failure_message => 'big time failure')
169
- end
170
-
171
- should "pass when given to assert_accepts with no message expectation" do
172
- assert_accepts @matcher, 'target'
173
- end
174
-
175
- should "pass when given to assert_accepts with a matching message" do
176
- assert_accepts @matcher, 'target', :message => /big time/
177
- end
178
-
179
- should "fail when given to assert_accepts with non-matching message" do
180
- assert_raise Test::Unit::AssertionFailedError do
181
- assert_accepts @matcher, 'target', :message => /small time/
182
- end
183
- end
184
-
185
- context "when given to assert_rejects" do
186
- setup do
187
- begin
188
- assert_rejects @matcher, 'target'
189
- rescue Test::Unit::AssertionFailedError => @error
190
- end
191
- end
192
-
193
- should "fail" do
194
- assert_not_nil @error
195
- end
196
-
197
- should "use the error message from the matcher" do
198
- assert_equal 'big time failure', @error.message
199
- end
200
- end
201
- end
202
-
203
- context "a non-matching matcher" do
204
- setup do
205
- @matcher = stub('matcher', :matches? => false,
206
- :failure_message => 'big time failure',
207
- :negative_failure_message => 'bad failure message')
208
- end
209
-
210
- should "pass when given to assert_rejects with no message expectation" do
211
- assert_rejects @matcher, 'target'
212
- end
213
-
214
- should "pass when given to assert_rejects with a matching message" do
215
- assert_rejects @matcher, 'target', :message => /big time/
216
- end
217
-
218
- should "fail when given to assert_rejects with a non-matching message" do
219
- assert_raise Test::Unit::AssertionFailedError do
220
- assert_rejects @matcher, 'target', :message => /small time/
221
- end
222
- end
223
-
224
- context "when given to assert_accepts" do
225
- setup do
226
- begin
227
- assert_accepts @matcher, 'target'
228
- rescue Test::Unit::AssertionFailedError => @error
229
- end
230
- end
231
-
232
- should "fail" do
233
- assert_not_nil @error
234
- end
235
-
236
- should "use the error message from the matcher" do
237
- assert_equal 'big time failure', @error.message
238
- end
239
- end
240
- end
241
-
242
- should "assign context to a support matching on assert_accepts" do
243
- matcher = stub('matcher', :matches? => true)
244
- matcher.expects(:in_context).with(self)
245
- assert_accepts matcher, nil
246
- end
247
-
248
- should "assign context to a support matching on assert_rejects" do
249
- matcher = stub('matcher', :matches? => false)
250
- matcher.expects(:in_context).with(self)
251
- assert_rejects matcher, nil
252
- end
253
-
254
- context "given one treat exists and one post exists" do
255
- setup do
256
- Treat.create!
257
- Post.create!(:title => 'title', :body => 'body', :user_id => 1)
258
- end
259
-
260
- teardown do
261
- Treat.delete_all
262
- Post.delete_all
263
- end
264
-
265
- context "creating a treat" do
266
- setup do
267
- Treat.create!
268
- end
269
-
270
- should_create :treat
271
- should_fail do
272
- should_create :post
273
- end
274
- end
275
-
276
- context "creating a treat and a post" do
277
- setup do
278
- Treat.create!
279
- Post.create!(:title => 'title 2', :body => 'body', :user_id => 1)
280
- end
281
-
282
- should_create :treat
283
- should_create :post
284
- end
285
-
286
- context "destroying a treat" do
287
- setup do
288
- Treat.first.destroy
289
- end
290
-
291
- should_destroy :treat
292
- should_fail do
293
- should_destroy :post
294
- end
295
- end
296
-
297
- context "destroying a treat and a post" do
298
- setup do
299
- Treat.first.destroy
300
- Post.first.destroy
301
- end
302
-
303
- should_destroy :treat
304
- should_destroy :post
305
- end
306
-
307
- context "doing nothing" do
308
- should_fail do
309
- should_create :treat
310
- end
311
-
312
- should_fail do
313
- should_destroy :treat
314
- end
315
- end
316
- end
317
- end
@@ -1,32 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PrivateHelpersTest < ActiveSupport::TestCase # :nodoc:
4
- include Shoulda::Private
5
- context "get_options!" do
6
- should "remove opts from args" do
7
- args = [:a, :b, {}]
8
- get_options!(args)
9
- assert_equal [:a, :b], args
10
- end
11
-
12
- should "return wanted opts in order" do
13
- args = [{:one => 1, :two => 2}]
14
- one, two = get_options!(args, :one, :two)
15
- assert_equal 1, one
16
- assert_equal 2, two
17
- end
18
-
19
- should "raise ArgumentError if given unwanted option" do
20
- args = [{:one => 1, :two => 2}]
21
- assert_raises ArgumentError do
22
- get_options!(args, :one)
23
- end
24
- end
25
-
26
- should "return single wanted option" do
27
- args = [:a, :b, {:class => Object}]
28
- klass = get_options!(args,:class)
29
- assert_equal Object, klass
30
- end
31
- end
32
- end
@@ -1,271 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ShouldTest < ActiveSupport::TestCase # :nodoc:
4
- should "be able to define a should statement outside of a context" do
5
- assert true
6
- end
7
-
8
- should "see the name of my class as ShouldTest" do
9
- assert_equal "ShouldTest", self.class.name
10
- end
11
-
12
- def self.should_see_class_methods
13
- should "be able to see class methods" do
14
- assert true
15
- end
16
- end
17
-
18
- def self.should_be_able_to_setup_a_should_eventually_in_a_class_method
19
- should "be able to setup a should eventually in a class method"
20
- end
21
-
22
- def self.should_see_a_context_block_like_a_Test_Unit_class
23
- should "see a context block as a Test::Unit class" do
24
- assert_equal "ShouldTest", self.class.name
25
- end
26
- end
27
-
28
- def self.should_see_blah
29
- should "see @blah through a macro" do
30
- assert @blah
31
- end
32
- end
33
-
34
- def self.should_not_see_blah
35
- should "not see @blah through a macro" do
36
- assert_nil @blah
37
- end
38
- end
39
-
40
- def self.should_be_able_to_make_context_macros(prefix = nil)
41
- context "a macro" do
42
- should "have the tests named correctly" do
43
- assert_match(/^test: #{prefix}a macro should have the tests named correctly/, self.to_s)
44
- end
45
- end
46
- end
47
-
48
- context "Context" do
49
-
50
- should_see_class_methods
51
- should_see_a_context_block_like_a_Test_Unit_class
52
- should_be_able_to_make_context_macros("Context ")
53
- should_be_able_to_setup_a_should_eventually_in_a_class_method
54
-
55
- should "not define @blah" do
56
- assert ! self.instance_variables.include?("@blah")
57
- end
58
-
59
- should_not_see_blah
60
-
61
- should "be able to define a should statement" do
62
- assert true
63
- end
64
-
65
- should "see the name of my class as ShouldTest" do
66
- assert_equal "ShouldTest", self.class.name
67
- end
68
-
69
- context "with a subcontext" do
70
- should_be_able_to_make_context_macros("Context with a subcontext ")
71
- end
72
- end
73
-
74
- context "Context with setup block" do
75
- setup do
76
- @blah = "blah"
77
- end
78
-
79
- should "have @blah == 'blah'" do
80
- assert_equal "blah", @blah
81
- end
82
- should_see_blah
83
-
84
- should "have name set right" do
85
- assert_match(/^test: Context with setup block/, self.to_s)
86
- end
87
-
88
- context "and a subcontext" do
89
- setup do
90
- @blah = "#{@blah} twice"
91
- end
92
-
93
- should "be named correctly" do
94
- assert_match(/^test: Context with setup block and a subcontext should be named correctly/, self.to_s)
95
- end
96
-
97
- should "run the setup methods in order" do
98
- assert_equal @blah, "blah twice"
99
- end
100
- should_see_blah
101
- end
102
- end
103
-
104
- context "Another context with setup block" do
105
- setup do
106
- @blah = "foo"
107
- end
108
-
109
- should "have @blah == 'foo'" do
110
- assert_equal "foo", @blah
111
- end
112
-
113
- should "have name set right" do
114
- assert_match(/^test: Another context with setup block/, self.to_s)
115
- end
116
- should_see_blah
117
- end
118
-
119
- should_eventually "pass, since it's a should_eventually" do
120
- flunk "what?"
121
- end
122
-
123
- # Context creation and naming
124
-
125
- def test_should_create_a_new_context
126
- assert_nothing_raised do
127
- Shoulda::Context.new("context name", self) do; end
128
- end
129
- end
130
-
131
- def test_should_create_a_nested_context
132
- assert_nothing_raised do
133
- parent = Shoulda::Context.new("Parent", self) do; end
134
- child = Shoulda::Context.new("Child", parent) do; end
135
- end
136
- end
137
-
138
- def test_should_name_a_contexts_correctly
139
- parent = Shoulda::Context.new("Parent", self) do; end
140
- child = Shoulda::Context.new("Child", parent) do; end
141
- grandchild = Shoulda::Context.new("GrandChild", child) do; end
142
-
143
- assert_equal "Parent", parent.full_name
144
- assert_equal "Parent Child", child.full_name
145
- assert_equal "Parent Child GrandChild", grandchild.full_name
146
- end
147
-
148
- # Should statements
149
-
150
- def test_should_have_should_hashes_when_given_should_statements
151
- context = Shoulda::Context.new("name", self) do
152
- should "be good" do; end
153
- should "another" do; end
154
- end
155
-
156
- names = context.shoulds.map {|s| s[:name]}
157
- assert_equal ["another", "be good"], names.sort
158
- end
159
-
160
- # setup and teardown
161
-
162
- def test_should_capture_setup_and_teardown_blocks
163
- context = Shoulda::Context.new("name", self) do
164
- setup do; "setup"; end
165
- teardown do; "teardown"; end
166
- end
167
-
168
- assert_equal "setup", context.setup_blocks.first.call
169
- assert_equal "teardown", context.teardown_blocks.first.call
170
- end
171
-
172
- # building
173
-
174
- def test_should_create_shoulda_test_for_each_should_on_build
175
- context = Shoulda::Context.new("name", self) do
176
- should "one" do; end
177
- should "two" do; end
178
- end
179
- context.expects(:create_test_from_should_hash).with(has_entry(:name => "one"))
180
- context.expects(:create_test_from_should_hash).with(has_entry(:name => "two"))
181
- context.build
182
- end
183
-
184
- def test_should_create_test_methods_on_build
185
- tu_class = ActiveSupport::TestCase
186
- context = Shoulda::Context.new("A Context", tu_class) do
187
- should "define the test" do; end
188
- end
189
-
190
- tu_class.expects(:define_method).with(:"test: A Context should define the test. ")
191
- context.build
192
- end
193
-
194
- def test_should_create_test_methods_on_build_when_subcontext
195
- tu_class = ActiveSupport::TestCase
196
- context = Shoulda::Context.new("A Context", tu_class) do
197
- context "with a child" do
198
- should "define the test" do; end
199
- end
200
- end
201
-
202
- tu_class.expects(:define_method).with(:"test: A Context with a child should define the test. ")
203
- context.build
204
- end
205
-
206
- # Test::Unit integration
207
-
208
- def test_should_create_a_new_context_and_build_it_on_Test_Unit_context
209
- c = mock("context")
210
- c.expects(:build)
211
- Shoulda::Context.expects(:new).with("foo", kind_of(Class)).returns(c)
212
- self.class.context "foo" do; end
213
- end
214
-
215
- def test_should_create_a_one_off_context_and_build_it_on_Test_Unit_should
216
- s = mock("test")
217
- Shoulda::Context.any_instance.expects(:should).with("rock", {}).returns(s)
218
- Shoulda::Context.any_instance.expects(:build)
219
- self.class.should "rock" do; end
220
- end
221
-
222
- def test_should_create_a_one_off_context_and_build_it_on_Test_Unit_should_eventually
223
- s = mock("test")
224
- Shoulda::Context.any_instance.expects(:should_eventually).with("rock").returns(s)
225
- Shoulda::Context.any_instance.expects(:build)
226
- self.class.should_eventually "rock" do; end
227
- end
228
-
229
- should "run a :before proc", :before => lambda { @value = "before" } do
230
- assert_equal "before", @value
231
- end
232
-
233
- context "A :before proc" do
234
- setup do
235
- assert_equal "before", @value
236
- @value = "setup"
237
- end
238
-
239
- should "run before the current setup", :before => lambda { @value = "before" } do
240
- assert_equal "setup", @value
241
- end
242
- end
243
-
244
- context "a before statement" do
245
- setup do
246
- assert_equal "before", @value
247
- @value = "setup"
248
- end
249
-
250
- before_should "run before the current setup" do
251
- @value = "before"
252
- end
253
- end
254
-
255
- context "A context" do
256
- setup do
257
- @value = "outer"
258
- end
259
-
260
- context "with a subcontext and a :before proc" do
261
- before = lambda do
262
- assert "outer", @value
263
- @value = "before"
264
- end
265
- should "run after the parent setup", :before => before do
266
- assert_equal "before", @value
267
- end
268
- end
269
- end
270
-
271
- end