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,154 +0,0 @@
1
- = Shoulda - Making tests easy on the fingers and eyes
2
-
3
- Shoulda makes it easy to write elegant, understandable, and maintainable tests. Shoulda consists of matchers, test helpers, and assertions. It's fully compatible with your existing tests in Test::Unit or RSpec, and requires no retooling to use.
4
-
5
- Matchers:: Test::Unit- and RSpec-compatible one-liners that test common Rails functionality.
6
- These tests would otherwise be much longer, more complex, and error-prone.
7
- Helpers:: #context and #should give you RSpec like test blocks in Test::Unit.
8
- In addition, you get nested contexts and a much more readable syntax.
9
- Assertions:: Many common Rails testing idioms have been distilled into a set of useful assertions.
10
-
11
- = Usage
12
-
13
- === ActiveRecord Tests (Shoulda::ActiveRecord::Matchers)
14
-
15
- Test your ActiveRecord associations and validations with these powerful matchers:
16
-
17
- class PostTest < Test::Unit::TestCase
18
- should belong_to(:user)
19
- should have_many(:tags).through(:taggings)
20
-
21
- should validate_uniqueness_of(:title)
22
- should validate_presence_of(:body).with_message(/wtf/)
23
- should validate_presence_of(:title)
24
- should validate_numericality_of(:user_id)
25
- end
26
-
27
- class UserTest < Test::Unit::TestCase
28
- should have_many(:posts)
29
-
30
- should_not allow_value("blah").for(:email)
31
- should_not allow_value("b lah").for(:email)
32
- should allow_value("a@b.com").for(:email)
33
- should allow_value("asdf@asdf.com").for(:email)
34
- should ensure_inclusion_of(:email).in_range(1..100)
35
- should ensure_inclusion_of(:age).in_range(1..100)
36
- should_not allow_mass_assignment_of(:password)
37
- end
38
-
39
- Makes TDD so much easier.
40
-
41
- === Controller Tests (Shoulda::Controller::Matchers)
42
-
43
- Matchers to test the most common controller patterns...
44
-
45
- class PostsControllerTest < ActionController::TestCase
46
- context "on GET to :show for first record" do
47
- setup do
48
- get :show, :id => 1
49
- end
50
-
51
- should assign_to(:user)
52
- should respond_with(:success)
53
- should render_template(:show)
54
- should_not set_the_flash
55
-
56
- should "do something else really cool" do
57
- assert_equal 1, assigns(:user).id
58
- end
59
- end
60
- end
61
-
62
- === Context Helpers (Shoulda::Context)
63
-
64
- Stop killing your fingers with all of those underscores... Name your tests with plain sentences!
65
-
66
- class UserTest < Test::Unit::TestCase
67
- context "A User instance" do
68
- setup do
69
- @user = User.find(:first)
70
- end
71
-
72
- should "return its full name" do
73
- assert_equal 'John Doe', @user.full_name
74
- end
75
-
76
- context "with a profile" do
77
- setup do
78
- @user.profile = Profile.find(:first)
79
- end
80
-
81
- should "return true when sent #has_profile?" do
82
- assert @user.has_profile?
83
- end
84
- end
85
- end
86
- end
87
-
88
- Produces the following test methods:
89
-
90
- "test: A User instance should return its full name."
91
- "test: A User instance with a profile should return true when sent #has_profile?."
92
-
93
- So readable!
94
-
95
- === Helpful Assertions (Shoulda::Assertions)
96
-
97
- More to come here, but have fun with what's there.
98
-
99
- assert_same_elements([:a, :b, :c], [:c, :a, :b])
100
- assert_contains(['a', '1'], /\d/)
101
- assert_contains(['a', '1'], 'a')
102
-
103
- = Rails Installation (Test::Unit)
104
-
105
- Specify the gem dependency in your config/environment.rb file:
106
-
107
- Rails::Initializer.run do |config|
108
- config.gem "shoulda", :lib => "shoulda"
109
- end
110
-
111
- Then:
112
-
113
- $ rake gems:install
114
- $ rake gems:unpack
115
-
116
- = Rails Installation (RSpec)
117
-
118
- If you're using Shoulda with RSpec, we recommend that you add config.gem lines
119
- for RSpec and Shoulda in your config/environment/test.rb file, but do not ask
120
- Rails to load the RSpec and Shoulda libraries:
121
-
122
- config.gem 'rspec', :lib => false
123
- config.gem 'rspec-rails', :lib => false
124
- config.gem 'shoulda', :lib => false
125
-
126
- Then require shoulda from your spec/spec_helper.rb file, before Spec::Runner is
127
- configured:
128
-
129
- # requires for RSpec
130
- require 'shoulda'
131
- Spec::Runner.configure do |config|
132
- # ...
133
-
134
- You should not need to require anything besides the top-level shoulda library.
135
-
136
- = Rails 3 Installation (RSpec)
137
-
138
- With Rails 3 and Bundler, requiring Shoulda is as easy as adding it to your Gemfile:
139
-
140
- group :test do
141
- gem "shoulda"
142
- gem "rspec-rails", "2.0.0.beta.12"
143
- end
144
-
145
- Shoulda will automatically include matchers into the appropriate example
146
- groups.
147
-
148
- = Credits
149
-
150
- Shoulda is maintained and funded by {thougthbot}[http://thoughtbot.com/community]
151
-
152
- = License
153
-
154
- Shoulda is Copyright © 2006-2010 Tammer Saleh, Thoughtbot. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- TMP = Dir::tmpdir
6
-
7
- def usage(msg = nil)
8
- puts "Error: #{msg}" if msg
9
- puts if msg
10
- puts "Usage: #{File.basename(__FILE__)} normal_test_file.rb"
11
- puts
12
- puts "Will convert an existing test file with names like "
13
- puts
14
- puts " def test_should_do_stuff"
15
- puts " ..."
16
- puts " end"
17
- puts
18
- puts "to one using the new syntax: "
19
- puts
20
- puts " should \"be super cool\" do"
21
- puts " ..."
22
- puts " end"
23
- puts
24
- puts "A copy of the old file will be left under #{TMP} in case\nthis script just seriously screws up"
25
- puts
26
- exit (msg ? 2 : 0)
27
- end
28
-
29
- usage("Wrong number of arguments.") unless ARGV.size == 1
30
- usage("Temp directory '#{TMP}' is not valid. Set TMPDIR environment variable to a writeable directory.") unless File.directory?(TMP) && File.writable?(TMP)
31
-
32
- file = ARGV.shift
33
- tmpfile = File.join(TMP, File.basename(file))
34
- usage("File '#{file}' doesn't exist") unless File.exists?(file)
35
-
36
- FileUtils.cp(file, tmpfile)
37
- contents = File.read(tmpfile)
38
- contents.gsub!(/def test_should_(\S+)/) {|line| "should \"#{$1.tr('_', ' ')}\" do"}
39
- contents.gsub!(/def test_(\S+)/) {|line| "should \"RENAME ME: test #{$1.tr('_', ' ')}\" do"}
40
- File.open(file, 'w') { |f| f.write(contents) }
41
-
42
- puts "File '#{file}' has been converted to 'should' syntax. Old version has been stored in '#{tmpfile}'"
@@ -1,9 +0,0 @@
1
- require 'shoulda/version'
2
-
3
- if defined?(RSpec)
4
- require 'shoulda/integrations/rspec2'
5
- elsif defined?(Spec)
6
- require 'shoulda/integrations/rspec'
7
- else
8
- require 'shoulda/integrations/test_unit'
9
- end
@@ -1,34 +0,0 @@
1
- require 'shoulda'
2
- require 'shoulda/action_controller/matchers'
3
- require 'shoulda/action_controller/macros'
4
-
5
- module Test # :nodoc: all
6
- module Unit
7
- class TestCase
8
- include Shoulda::ActionController::Matchers
9
- extend Shoulda::ActionController::Macros
10
- end
11
- end
12
- end
13
-
14
- require 'shoulda/active_record/assertions'
15
- require 'shoulda/action_mailer/assertions'
16
-
17
- module ActionController #:nodoc: all
18
- module Integration
19
- class Session
20
- include Shoulda::Assertions
21
- include Shoulda::Helpers
22
- include Shoulda::ActiveRecord::Assertions
23
- include Shoulda::ActionMailer::Assertions
24
- end
25
- end
26
- end
27
-
28
- if defined?(ActionController::TestCase)
29
- class ActionController::TestCase
30
- def subject
31
- @controller
32
- end
33
- end
34
- end
@@ -1,221 +0,0 @@
1
- module Shoulda # :nodoc:
2
- module ActionController # :nodoc:
3
- # = Macro test helpers for your controllers
4
- #
5
- # By using the macro helpers you can quickly and easily create concise and easy to read test suites.
6
- #
7
- # This code segment:
8
- # context "on GET to :show for first record" do
9
- # setup do
10
- # get :show, :id => 1
11
- # end
12
- #
13
- # should_assign_to :user
14
- # should_respond_with :success
15
- # should_render_template :show
16
- # should_not_set_the_flash
17
- #
18
- # should "do something else really cool" do
19
- # assert_equal 1, assigns(:user).id
20
- # end
21
- # end
22
- #
23
- # Would produce 5 tests for the +show+ action
24
- module Macros
25
- include Matchers
26
-
27
- # Deprecated: use ActionController::Matchers#set_the_flash instead.
28
- #
29
- # Macro that creates a test asserting that the flash contains the given
30
- # value. Expects a +String+ or +Regexp+.
31
- #
32
- # Example:
33
- #
34
- # should_set_the_flash_to "Thank you for placing this order."
35
- # should_set_the_flash_to /created/i
36
- def should_set_the_flash_to(val)
37
- ::ActiveSupport::Deprecation.warn("use: should set_the_flash")
38
- should set_the_flash.to(val)
39
- end
40
-
41
- # Deprecated: use ActionController::Matchers#set_the_flash instead.
42
- #
43
- # Macro that creates a test asserting that the flash is empty.
44
- def should_not_set_the_flash
45
- ::ActiveSupport::Deprecation.warn("use: should_not set_the_flash")
46
- should_not set_the_flash
47
- end
48
-
49
- # Deprecated: use ActionController::Matchers#filter_param instead.
50
- #
51
- # Macro that creates a test asserting that filter_parameter_logging
52
- # is set for the specified keys
53
- #
54
- # Example:
55
- #
56
- # should_filter_params :password, :ssn
57
- def should_filter_params(*keys)
58
- ::ActiveSupport::Deprecation.warn("use: should filter_param")
59
- keys.each do |key|
60
- should filter_param(key)
61
- end
62
- end
63
-
64
- # Deprecated: use ActionController::Matchers#assign_to instead.
65
- #
66
- # Macro that creates a test asserting that the controller assigned to
67
- # each of the named instance variable(s).
68
- #
69
- # Options:
70
- # * <tt>:class</tt> - The expected class of the instance variable being checked.
71
- #
72
- # If a block is passed, the assigned variable is expected to be equal to
73
- # the return value of that block.
74
- #
75
- # Example:
76
- #
77
- # should_assign_to :user, :posts
78
- # should_assign_to :user, :class => User
79
- # should_assign_to(:user) { @user }
80
- def should_assign_to(*names, &block)
81
- ::ActiveSupport::Deprecation.warn("use: should assign_to")
82
- klass = get_options!(names, :class)
83
- names.each do |name|
84
- matcher = assign_to(name).with_kind_of(klass)
85
- matcher = matcher.with(&block) if block
86
- should matcher
87
- end
88
- end
89
-
90
- # Deprecated: use ActionController::Matchers#assign_to instead.
91
- #
92
- # Macro that creates a test asserting that the controller did not assign to
93
- # any of the named instance variable(s).
94
- #
95
- # Example:
96
- #
97
- # should_not_assign_to :user, :posts
98
- def should_not_assign_to(*names)
99
- ::ActiveSupport::Deprecation.warn("use: should_not assign_to")
100
- names.each do |name|
101
- should_not assign_to(name)
102
- end
103
- end
104
-
105
- # Deprecated: use ActionController::Matchers#respond_with instead.
106
- #
107
- # Macro that creates a test asserting that the controller responded with a 'response' status code.
108
- # Example:
109
- #
110
- # should_respond_with :success
111
- def should_respond_with(response)
112
- ::ActiveSupport::Deprecation.warn("use: should respond_with")
113
- should respond_with(response)
114
- end
115
-
116
- # Deprecated: use ActionController::Matchers#respond_with_content_type instead.
117
- #
118
- # Macro that creates a test asserting that the response content type was 'content_type'.
119
- # Example:
120
- #
121
- # should_respond_with_content_type 'application/rss+xml'
122
- # should_respond_with_content_type :rss
123
- # should_respond_with_content_type /rss/
124
- def should_respond_with_content_type(content_type)
125
- ::ActiveSupport::Deprecation.warn("use: should respond_with_content_type")
126
- should respond_with_content_type(content_type)
127
- end
128
-
129
- # Deprecated: use ActionController::Matchers#set_session instead.
130
- #
131
- # Macro that creates a test asserting that a value returned from the
132
- # session is correct. Expects the session key as a parameter, and a block
133
- # that returns the expected value.
134
- #
135
- # Example:
136
- #
137
- # should_set_session(:user_id) { @user.id }
138
- # should_set_session(:message) { "Free stuff" }
139
- def should_set_session(key, &block)
140
- ::ActiveSupport::Deprecation.warn("use: should set_session")
141
- matcher = set_session(key)
142
- matcher = matcher.to(&block) if block
143
- should matcher
144
- end
145
-
146
- # Deprecated: use ActionController::Matchers#render_template instead.
147
- #
148
- # Macro that creates a test asserting that the controller rendered the given template.
149
- # Example:
150
- #
151
- # should_render_template :new
152
- def should_render_template(template)
153
- ::ActiveSupport::Deprecation.warn("use: should render_template")
154
- should render_template(template)
155
- end
156
-
157
- # Deprecated: use ActionController::Matchers#render_with_layout instead.
158
- #
159
- # Macro that creates a test asserting that the controller rendered with the given layout.
160
- # Example:
161
- #
162
- # should_render_with_layout 'special'
163
- def should_render_with_layout(expected_layout = 'application')
164
- ::ActiveSupport::Deprecation.warn("use: should render_with_layout")
165
- should render_with_layout(expected_layout)
166
- end
167
-
168
- # Deprecated: use ActionController::Matchers#render_with_layout instead.
169
- #
170
- # Macro that creates a test asserting that the controller rendered without a layout.
171
- # Same as @should_render_with_layout false@
172
- def should_render_without_layout
173
- ::ActiveSupport::Deprecation.warn("use: should_not render_with_layout")
174
- should_not render_with_layout
175
- end
176
-
177
- # Deprecated: use ActionController::Matchers#redirect_to instead.
178
- #
179
- # Macro that creates a test asserting that the controller returned a
180
- # redirect to the given path. The passed description will be used when
181
- # generating a test name. Expects a block that returns the expected path
182
- # for the redirect.
183
- #
184
- # Example:
185
- #
186
- # should_redirect_to("the user's profile") { user_url(@user) }
187
- def should_redirect_to(description, &block)
188
- ::ActiveSupport::Deprecation.warn("use: should redirect_to")
189
- should redirect_to(description, &block)
190
- end
191
-
192
- # Deprecated: use ActionController::Matchers#route instead.
193
- #
194
- # Macro that creates a routing test. It tries to use the given HTTP
195
- # +method+ on the given +path+, and asserts that it routes to the
196
- # given +options+.
197
- #
198
- # If you don't specify a :controller, it will try to guess the controller
199
- # based on the current test.
200
- #
201
- # +to_param+ is called on the +options+ given.
202
- #
203
- # Examples:
204
- #
205
- # should_route :get, "/posts", :controller => :posts, :action => :index
206
- # should_route :get, "/posts/new", :action => :new
207
- # should_route :post, "/posts", :action => :create
208
- # should_route :get, "/posts/1", :action => :show, :id => 1
209
- # should_route :edit, "/posts/1", :action => :show, :id => 1
210
- # should_route :put, "/posts/1", :action => :update, :id => 1
211
- # should_route :delete, "/posts/1", :action => :destroy, :id => 1
212
- # should_route :get, "/users/1/posts/1",
213
- # :action => :show, :id => 1, :user_id => 1
214
- #
215
- def should_route(method, path, options)
216
- ::ActiveSupport::Deprecation.warn("use: should route")
217
- should route(method, path).to(options)
218
- end
219
- end
220
- end
221
- end