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,18 +0,0 @@
1
- require 'test_helper'
2
-
3
- class AutoloadMacroTest < ActiveSupport::TestCase # :nodoc:
4
- context "The macro auto-loader" do
5
- should "load macros from the plugins" do
6
- assert self.class.respond_to?('plugin_macro')
7
- end
8
-
9
- should "load macros from the gems" do
10
- assert self.class.respond_to?('gem_macro')
11
- end
12
-
13
- should "load custom macros from ROOT/test/shoulda_macros" do
14
- assert self.class.respond_to?('custom_macro')
15
- end
16
- end
17
- end
18
-
@@ -1,372 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ContextTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- def self.context_macro(&blk)
6
- context "with a subcontext made by a macro" do
7
- setup { @context_macro = :foo }
8
-
9
- merge_block &blk
10
- end
11
- end
12
-
13
- # def self.context_macro(&blk)
14
- # context "with a subcontext made by a macro" do
15
- # setup { @context_macro = :foo }
16
- # yield # <- this doesn't work.
17
- # end
18
- # end
19
-
20
- context "context with setup block" do
21
- setup do
22
- @blah = "blah"
23
- end
24
-
25
- should "run the setup block" do
26
- assert_equal "blah", @blah
27
- end
28
-
29
- should "have name set right" do
30
- assert_match(/^test: context with setup block/, self.to_s)
31
- end
32
-
33
- context "and a subcontext" do
34
- setup do
35
- @blah = "#{@blah} twice"
36
- end
37
-
38
- should "be named correctly" do
39
- assert_match(/^test: context with setup block and a subcontext should be named correctly/, self.to_s)
40
- end
41
-
42
- should "run the setup blocks in order" do
43
- assert_equal @blah, "blah twice"
44
- end
45
- end
46
-
47
- context_macro do
48
- should "have name set right" do
49
- assert_match(/^test: context with setup block with a subcontext made by a macro should have name set right/, self.to_s)
50
- end
51
-
52
- should "run the setup block of that context macro" do
53
- assert_equal :foo, @context_macro
54
- end
55
-
56
- should "run the setup block of the main context" do
57
- assert_equal "blah", @blah
58
- end
59
- end
60
-
61
- end
62
-
63
- context "another context with setup block" do
64
- setup do
65
- @blah = "foo"
66
- end
67
-
68
- should "have @blah == 'foo'" do
69
- assert_equal "foo", @blah
70
- end
71
-
72
- should "have name set right" do
73
- assert_match(/^test: another context with setup block/, self.to_s)
74
- end
75
- end
76
-
77
- context "context with method definition" do
78
- setup do
79
- def hello; "hi"; end
80
- end
81
-
82
- should "be able to read that method" do
83
- assert_equal "hi", hello
84
- end
85
-
86
- should "have name set right" do
87
- assert_match(/^test: context with method definition/, self.to_s)
88
- end
89
- end
90
-
91
- context "another context" do
92
- should "not define @blah" do
93
- assert_nil @blah
94
- end
95
- end
96
-
97
- context "context with multiple setups and/or teardowns" do
98
-
99
- cleanup_count = 0
100
-
101
- 2.times do |i|
102
- setup { cleanup_count += 1 }
103
- teardown { cleanup_count -= 1 }
104
- end
105
-
106
- 2.times do |i|
107
- should "call all setups and all teardowns (check ##{i + 1})" do
108
- assert_equal 2, cleanup_count
109
- end
110
- end
111
-
112
- context "subcontexts" do
113
-
114
- 2.times do |i|
115
- setup { cleanup_count += 1 }
116
- teardown { cleanup_count -= 1 }
117
- end
118
-
119
- 2.times do |i|
120
- should "also call all setups and all teardowns in parent and subcontext (check ##{i + 1})" do
121
- assert_equal 4, cleanup_count
122
- end
123
- end
124
-
125
- end
126
-
127
- end
128
-
129
- should_eventually "pass, since it's unimplemented" do
130
- flunk "what?"
131
- end
132
-
133
- should_eventually "not require a block when using should_eventually"
134
- should "pass without a block, as that causes it to piggyback to should_eventually"
135
-
136
- context "context for testing should piggybacking" do
137
- should "call should_eventually as we are not passing a block"
138
- end
139
-
140
- context "context" do
141
- context "with nested subcontexts" do
142
- should_eventually "only print this statement once for a should_eventually"
143
- end
144
- end
145
-
146
- class ::SomeModel; end
147
-
148
- context "given a test named after a class" do
149
- setup do
150
- self.class.stubs(:name).returns("SomeModelTest")
151
- end
152
-
153
- should "determine the described type" do
154
- assert_equal SomeModel, self.class.described_type
155
- end
156
-
157
- should "return a new instance of the described type as the subject if none exists" do
158
- assert_kind_of SomeModel, subject
159
- end
160
-
161
- context "with an explicit subject block" do
162
- setup { @expected = SomeModel.new }
163
- subject { @expected }
164
- should "return the result of the block as the subject" do
165
- assert_equal @expected, subject
166
- end
167
-
168
- context "nested context block without a subject block" do
169
- should "return the result of the parent context's subject block" do
170
- assert_equal @expected, subject
171
- end
172
- end
173
- end
174
- end
175
- end
176
-
177
- class ShouldMatcherTest < Test::Unit::TestCase
178
- class FakeMatcher
179
- attr_reader :subject
180
- attr_accessor :fail
181
-
182
- def description
183
- "do something"
184
- end
185
-
186
- def matches?(subject)
187
- @subject = subject
188
- !@fail
189
- end
190
-
191
- def failure_message
192
- "a failure message"
193
- end
194
-
195
- def negative_failure_message
196
- "not a failure message"
197
- end
198
- end
199
-
200
- def run_test
201
- @test_suite.run(@test_result) { |event, name |}
202
- end
203
-
204
- def setup
205
- @matcher = FakeMatcher.new
206
- @test_result = Test::Unit::TestResult.new
207
- class << @test_result
208
- def failure_messages
209
- @failures.map { |failure| failure.message }
210
- end
211
- end
212
- end
213
-
214
- def create_test_suite(&definition)
215
- test_class = Class.new(Test::Unit::TestCase, &definition)
216
- test_class.suite
217
- end
218
-
219
- def assert_failed_with(message, test_result)
220
- assert_equal 1, test_result.failure_count
221
- assert_equal [message], test_result.failure_messages
222
- end
223
-
224
- def assert_passed(test_result)
225
- assert_equal 0, test_result.failure_count
226
- end
227
-
228
- def assert_test_named(expected_name, test_suite)
229
- name = test_suite.tests.map { |test| test.method_name }.first
230
- assert name.include?(expected_name), "Expected #{name} to include #{expected_name}"
231
- end
232
-
233
- def self.should_use_positive_matcher
234
- should "generate a test using the matcher's description" do
235
- assert_test_named "should #{@matcher.description}", @test_suite
236
- end
237
-
238
- should "pass with a passing matcher" do
239
- @matcher.fail = false
240
- run_test
241
- assert_passed @test_result
242
- end
243
-
244
- should "fail with a failing matcher" do
245
- @matcher.fail = true
246
- run_test
247
- assert_failed_with @matcher.failure_message, @test_result
248
- end
249
-
250
- should "provide the subject" do
251
- @matcher.fail = false
252
- run_test
253
- assert_equal 'a subject', @matcher.subject
254
- end
255
- end
256
-
257
- def self.should_use_negative_matcher
258
- should "generate a test using the matcher's description" do
259
- assert_test_named "should not #{@matcher.description}", @test_suite
260
- end
261
-
262
- should "pass with a failing matcher" do
263
- @matcher.fail = true
264
- run_test
265
- assert_passed @test_result
266
- end
267
-
268
- should "fail with a passing matcher" do
269
- @matcher.fail = false
270
- run_test
271
- assert_failed_with @matcher.negative_failure_message, @test_result
272
- end
273
-
274
- should "provide the subject" do
275
- @matcher.fail = false
276
- run_test
277
- assert_equal 'a subject', @matcher.subject
278
- end
279
- end
280
-
281
- context "a should block with a matcher" do
282
- setup do
283
- matcher = @matcher
284
- @test_suite = create_test_suite do
285
- subject { 'a subject' }
286
- should matcher
287
- end
288
- end
289
-
290
- should_use_positive_matcher
291
- end
292
-
293
- context "a should block with a matcher within a context" do
294
- setup do
295
- matcher = @matcher
296
- @test_suite = create_test_suite do
297
- context "in context" do
298
- subject { 'a subject' }
299
- should matcher
300
- end
301
- end
302
- end
303
-
304
- should_use_positive_matcher
305
- end
306
-
307
- context "a should_not block with a matcher" do
308
- setup do
309
- matcher = @matcher
310
- @test_suite = create_test_suite do
311
- subject { 'a subject' }
312
- should_not matcher
313
- end
314
- end
315
-
316
- should_use_negative_matcher
317
- end
318
-
319
- context "a should_not block with a matcher within a context" do
320
- setup do
321
- matcher = @matcher
322
- @test_suite = create_test_suite do
323
- context "in context" do
324
- subject { 'a subject' }
325
- should_not matcher
326
- end
327
- end
328
- end
329
-
330
- should_use_negative_matcher
331
- end
332
- end
333
-
334
- class Subject; end
335
-
336
- class SubjectTest < ActiveSupport::TestCase
337
-
338
- def setup
339
- @expected = Subject.new
340
- end
341
-
342
- subject { @expected }
343
-
344
- should "return a specified subject" do
345
- assert_equal @expected, subject
346
- end
347
- end
348
-
349
- class SubjectLazinessTest < ActiveSupport::TestCase
350
- subject { Subject.new }
351
-
352
- should "only build the subject once" do
353
- assert_equal subject, subject
354
- end
355
- end
356
-
357
- class SomeController < ActionController::Base
358
- end
359
-
360
- class ControllerSubjectTest < ActionController::TestCase
361
- tests SomeController
362
-
363
- should "use the controller as the subject outside a context" do
364
- assert_equal @controller, subject
365
- end
366
-
367
- context "in a context" do
368
- should "use the controller as the subject" do
369
- assert_equal @controller, subject
370
- end
371
- end
372
- end
@@ -1,63 +0,0 @@
1
- require 'test/unit'
2
-
3
- class ConvertToShouldSyntaxTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- BEFORE_FIXTURE = <<-EOS
6
- class DummyTest < ActiveSupport::TestCase
7
-
8
- should "Not change this_word_with_underscores" do
9
- end
10
-
11
- def test_should_be_working
12
- assert true
13
- end
14
-
15
- def test_some_cool_stuff
16
- assert true
17
- end
18
-
19
- def non_test_method
20
- end
21
-
22
- end
23
- EOS
24
-
25
- AFTER_FIXTURE = <<-EOS
26
- class DummyTest < ActiveSupport::TestCase
27
-
28
- should "Not change this_word_with_underscores" do
29
- end
30
-
31
- should "be working" do
32
- assert true
33
- end
34
-
35
- should "RENAME ME: test some cool stuff" do
36
- assert true
37
- end
38
-
39
- def non_test_method
40
- end
41
-
42
- end
43
- EOS
44
-
45
- FIXTURE_PATH = "./convert_to_should_syntax_fixture.dat"
46
-
47
- RUBY = ENV['RUBY'] || 'ruby'
48
-
49
- def test_convert_to_should_syntax
50
- File.open(FIXTURE_PATH, "w") {|f| f.write(BEFORE_FIXTURE)}
51
- cmd = "#{RUBY} #{File.join(File.dirname(__FILE__), '../../bin/convert_to_should_syntax')} #{FIXTURE_PATH}"
52
- output = `#{cmd}`
53
- File.unlink($1) if output.match(/has been stored in '([^']+)/)
54
- assert_match(/has been converted/, output)
55
- result = IO.read(FIXTURE_PATH)
56
- assert_equal result, AFTER_FIXTURE
57
- end
58
-
59
- def teardown
60
- File.unlink(FIXTURE_PATH)
61
- end
62
-
63
- end