nileshtrivedi-lp_resource_builder 0.5.1

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 (240) hide show
  1. data/LICENSE +22 -0
  2. data/README.rdoc +326 -0
  3. data/Rakefile +35 -0
  4. data/generators/scaffold_resource/USAGE +29 -0
  5. data/generators/scaffold_resource/scaffold_resource_generator.rb +183 -0
  6. data/generators/scaffold_resource/templates/controller.rb +69 -0
  7. data/generators/scaffold_resource/templates/fixtures.yml +10 -0
  8. data/generators/scaffold_resource/templates/functional_test.rb +57 -0
  9. data/generators/scaffold_resource/templates/helper.rb +22 -0
  10. data/generators/scaffold_resource/templates/migration.rb +15 -0
  11. data/generators/scaffold_resource/templates/model.rb +60 -0
  12. data/generators/scaffold_resource/templates/old_migration.rb +13 -0
  13. data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
  14. data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
  15. data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
  16. data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
  17. data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
  18. data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
  19. data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
  20. data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
  21. data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
  22. data/generators/scaffold_resource/templates/unit_test.rb +7 -0
  23. data/generators/scaffold_resource/templates/view__form.erb +6 -0
  24. data/generators/scaffold_resource/templates/view__form.haml +5 -0
  25. data/generators/scaffold_resource/templates/view_edit.erb +2 -0
  26. data/generators/scaffold_resource/templates/view_edit.haml +11 -0
  27. data/generators/scaffold_resource/templates/view_index.erb +2 -0
  28. data/generators/scaffold_resource/templates/view_index.haml +19 -0
  29. data/generators/scaffold_resource/templates/view_new.erb +2 -0
  30. data/generators/scaffold_resource/templates/view_new.haml +9 -0
  31. data/generators/scaffold_resource/templates/view_partial_edit.html.erb +18 -0
  32. data/generators/scaffold_resource/templates/view_partial_index.html.erb +28 -0
  33. data/generators/scaffold_resource/templates/view_partial_new.html.erb +13 -0
  34. data/generators/scaffold_resource/templates/view_partial_show.html.erb +9 -0
  35. data/generators/scaffold_resource/templates/view_show.erb +2 -0
  36. data/generators/scaffold_resource/templates/view_show.haml +9 -0
  37. data/init.rb +1 -0
  38. data/lib/resource_controller/accessors.rb +77 -0
  39. data/lib/resource_controller/action_options.rb +40 -0
  40. data/lib/resource_controller/actions.rb +75 -0
  41. data/lib/resource_controller/base.rb +15 -0
  42. data/lib/resource_controller/class_methods.rb +24 -0
  43. data/lib/resource_controller/controller.rb +69 -0
  44. data/lib/resource_controller/failable_action_options.rb +25 -0
  45. data/lib/resource_controller/helpers/current_objects.rb +69 -0
  46. data/lib/resource_controller/helpers/internal.rb +76 -0
  47. data/lib/resource_controller/helpers/nested.rb +63 -0
  48. data/lib/resource_controller/helpers/singleton_customizations.rb +60 -0
  49. data/lib/resource_controller/helpers/urls.rb +128 -0
  50. data/lib/resource_controller/helpers.rb +28 -0
  51. data/lib/resource_controller/response_collector.rb +27 -0
  52. data/lib/resource_controller/singleton.rb +15 -0
  53. data/lib/resource_controller/version.rb +9 -0
  54. data/lib/resource_controller.rb +20 -0
  55. data/lib/urligence.rb +50 -0
  56. data/rails/init.rb +6 -0
  57. data/test/Rakefile +10 -0
  58. data/test/app/controllers/accounts_controller.rb +6 -0
  59. data/test/app/controllers/application.rb +7 -0
  60. data/test/app/controllers/cms/options_controller.rb +3 -0
  61. data/test/app/controllers/cms/products_controller.rb +3 -0
  62. data/test/app/controllers/comments_controller.rb +3 -0
  63. data/test/app/controllers/images_controller.rb +4 -0
  64. data/test/app/controllers/options_controller.rb +8 -0
  65. data/test/app/controllers/people_controller.rb +9 -0
  66. data/test/app/controllers/photos_controller.rb +11 -0
  67. data/test/app/controllers/posts_controller.rb +10 -0
  68. data/test/app/controllers/projects_controller.rb +3 -0
  69. data/test/app/controllers/somethings_controller.rb +3 -0
  70. data/test/app/controllers/tags_controller.rb +13 -0
  71. data/test/app/controllers/users_controller.rb +12 -0
  72. data/test/app/helpers/accounts_helper.rb +2 -0
  73. data/test/app/helpers/application_helper.rb +3 -0
  74. data/test/app/helpers/cms/products_helper.rb +2 -0
  75. data/test/app/helpers/comments_helper.rb +2 -0
  76. data/test/app/helpers/images_helper.rb +2 -0
  77. data/test/app/helpers/options_helper.rb +2 -0
  78. data/test/app/helpers/people_helper.rb +2 -0
  79. data/test/app/helpers/photos_helper.rb +2 -0
  80. data/test/app/helpers/posts_helper.rb +2 -0
  81. data/test/app/helpers/projects_helper.rb +2 -0
  82. data/test/app/helpers/somethings_helper.rb +2 -0
  83. data/test/app/helpers/tags_helper.rb +2 -0
  84. data/test/app/helpers/users_helper.rb +2 -0
  85. data/test/app/models/account.rb +4 -0
  86. data/test/app/models/comment.rb +3 -0
  87. data/test/app/models/image.rb +3 -0
  88. data/test/app/models/option.rb +3 -0
  89. data/test/app/models/photo.rb +4 -0
  90. data/test/app/models/post.rb +3 -0
  91. data/test/app/models/product.rb +3 -0
  92. data/test/app/models/project.rb +2 -0
  93. data/test/app/models/something.rb +2 -0
  94. data/test/app/models/tag.rb +3 -0
  95. data/test/app/models/user.rb +3 -0
  96. data/test/app/views/accounts/_form.html.erb +4 -0
  97. data/test/app/views/accounts/edit.html.erb +14 -0
  98. data/test/app/views/accounts/new.html.erb +12 -0
  99. data/test/app/views/accounts/show.html.erb +5 -0
  100. data/test/app/views/cms/options/edit.rhtml +17 -0
  101. data/test/app/views/cms/options/index.rhtml +20 -0
  102. data/test/app/views/cms/options/new.rhtml +16 -0
  103. data/test/app/views/cms/options/show.rhtml +8 -0
  104. data/test/app/views/cms/products/edit.rhtml +17 -0
  105. data/test/app/views/cms/products/index.rhtml +20 -0
  106. data/test/app/views/cms/products/new.rhtml +16 -0
  107. data/test/app/views/cms/products/show.rhtml +8 -0
  108. data/test/app/views/comments/edit.rhtml +27 -0
  109. data/test/app/views/comments/index.rhtml +24 -0
  110. data/test/app/views/comments/new.rhtml +26 -0
  111. data/test/app/views/comments/show.rhtml +18 -0
  112. data/test/app/views/images/_form.html.erb +4 -0
  113. data/test/app/views/images/edit.html.erb +14 -0
  114. data/test/app/views/images/new.html.erb +12 -0
  115. data/test/app/views/layouts/application.rhtml +17 -0
  116. data/test/app/views/layouts/comments.rhtml +17 -0
  117. data/test/app/views/layouts/options.rhtml +17 -0
  118. data/test/app/views/layouts/people.rhtml +17 -0
  119. data/test/app/views/layouts/photos.rhtml +17 -0
  120. data/test/app/views/layouts/projects.rhtml +17 -0
  121. data/test/app/views/layouts/somethings.rhtml +17 -0
  122. data/test/app/views/layouts/tags.rhtml +17 -0
  123. data/test/app/views/options/_form.html.erb +8 -0
  124. data/test/app/views/options/edit.html.erb +16 -0
  125. data/test/app/views/options/index.html.erb +21 -0
  126. data/test/app/views/options/new.html.erb +12 -0
  127. data/test/app/views/options/show.html.erb +10 -0
  128. data/test/app/views/people/edit.rhtml +17 -0
  129. data/test/app/views/people/index.rhtml +20 -0
  130. data/test/app/views/people/new.rhtml +16 -0
  131. data/test/app/views/people/show.rhtml +8 -0
  132. data/test/app/views/photos/edit.rhtml +17 -0
  133. data/test/app/views/photos/index.rhtml +20 -0
  134. data/test/app/views/photos/new.rhtml +16 -0
  135. data/test/app/views/photos/show.rhtml +8 -0
  136. data/test/app/views/posts/edit.rhtml +22 -0
  137. data/test/app/views/posts/index.rhtml +22 -0
  138. data/test/app/views/posts/new.rhtml +21 -0
  139. data/test/app/views/posts/show.rhtml +13 -0
  140. data/test/app/views/projects/edit.rhtml +17 -0
  141. data/test/app/views/projects/index.rhtml +20 -0
  142. data/test/app/views/projects/new.rhtml +16 -0
  143. data/test/app/views/projects/show.rhtml +8 -0
  144. data/test/app/views/somethings/edit.rhtml +17 -0
  145. data/test/app/views/somethings/index.rhtml +20 -0
  146. data/test/app/views/somethings/new.rhtml +16 -0
  147. data/test/app/views/somethings/show.rhtml +8 -0
  148. data/test/app/views/tags/edit.rhtml +17 -0
  149. data/test/app/views/tags/index.rhtml +20 -0
  150. data/test/app/views/tags/index.rjs +0 -0
  151. data/test/app/views/tags/new.rhtml +16 -0
  152. data/test/app/views/tags/show.rhtml +8 -0
  153. data/test/app/views/users/edit.rhtml +17 -0
  154. data/test/app/views/users/index.rhtml +20 -0
  155. data/test/app/views/users/new.rhtml +16 -0
  156. data/test/app/views/users/show.rhtml +8 -0
  157. data/test/config/boot.rb +109 -0
  158. data/test/config/database.yml +13 -0
  159. data/test/config/environment.rb +64 -0
  160. data/test/config/environments/development.rb +21 -0
  161. data/test/config/environments/test.rb +19 -0
  162. data/test/config/routes.rb +58 -0
  163. data/test/db/migrate/001_create_posts.rb +12 -0
  164. data/test/db/migrate/002_create_products.rb +11 -0
  165. data/test/db/migrate/003_create_comments.rb +13 -0
  166. data/test/db/migrate/004_create_options.rb +13 -0
  167. data/test/db/migrate/005_create_photos.rb +11 -0
  168. data/test/db/migrate/006_create_tags.rb +17 -0
  169. data/test/db/migrate/007_create_somethings.rb +11 -0
  170. data/test/db/migrate/008_create_accounts.rb +11 -0
  171. data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  172. data/test/db/migrate/010_create_projects.rb +11 -0
  173. data/test/db/migrate/011_create_images.rb +12 -0
  174. data/test/db/migrate/012_create_users.rb +11 -0
  175. data/test/db/schema.rb +72 -0
  176. data/test/script/console +3 -0
  177. data/test/script/destroy +3 -0
  178. data/test/script/generate +3 -0
  179. data/test/script/server +3 -0
  180. data/test/test/fixtures/accounts.yml +7 -0
  181. data/test/test/fixtures/comments.yml +11 -0
  182. data/test/test/fixtures/images.yml +6 -0
  183. data/test/test/fixtures/options.yml +9 -0
  184. data/test/test/fixtures/photos.yml +9 -0
  185. data/test/test/fixtures/photos_tags.yml +3 -0
  186. data/test/test/fixtures/posts.yml +9 -0
  187. data/test/test/fixtures/products.yml +7 -0
  188. data/test/test/fixtures/projects.yml +7 -0
  189. data/test/test/fixtures/somethings.yml +7 -0
  190. data/test/test/fixtures/tags.yml +7 -0
  191. data/test/test/fixtures/users.yml +5 -0
  192. data/test/test/functional/cms/options_controller_test.rb +23 -0
  193. data/test/test/functional/cms/products_controller_test.rb +23 -0
  194. data/test/test/functional/comments_controller_test.rb +26 -0
  195. data/test/test/functional/images_controller_test.rb +37 -0
  196. data/test/test/functional/people_controller_test.rb +34 -0
  197. data/test/test/functional/photos_controller_test.rb +130 -0
  198. data/test/test/functional/posts_controller_test.rb +34 -0
  199. data/test/test/functional/projects_controller_test.rb +18 -0
  200. data/test/test/functional/somethings_controller_test.rb +28 -0
  201. data/test/test/functional/tags_controller_test.rb +64 -0
  202. data/test/test/functional/users_controller_test.rb +24 -0
  203. data/test/test/test_helper.rb +12 -0
  204. data/test/test/unit/accessors_test.rb +110 -0
  205. data/test/test/unit/account_test.rb +7 -0
  206. data/test/test/unit/action_options_test.rb +109 -0
  207. data/test/test/unit/base_test.rb +11 -0
  208. data/test/test/unit/comment_test.rb +10 -0
  209. data/test/test/unit/failable_action_options_test.rb +77 -0
  210. data/test/test/unit/helpers/current_objects_test.rb +133 -0
  211. data/test/test/unit/helpers/internal_test.rb +106 -0
  212. data/test/test/unit/helpers/nested_test.rb +86 -0
  213. data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  214. data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  215. data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  216. data/test/test/unit/helpers/urls_test.rb +75 -0
  217. data/test/test/unit/helpers_test.rb +25 -0
  218. data/test/test/unit/image_test.rb +7 -0
  219. data/test/test/unit/option_test.rb +10 -0
  220. data/test/test/unit/photo_test.rb +10 -0
  221. data/test/test/unit/post_test.rb +10 -0
  222. data/test/test/unit/project_test.rb +10 -0
  223. data/test/test/unit/response_collector_test.rb +49 -0
  224. data/test/test/unit/something_test.rb +10 -0
  225. data/test/test/unit/tag_test.rb +10 -0
  226. data/test/test/unit/urligence_test.rb +203 -0
  227. data/test/vendor/plugins/shoulda/Rakefile +32 -0
  228. data/test/vendor/plugins/shoulda/bin/convert_to_should_syntax +40 -0
  229. data/test/vendor/plugins/shoulda/init.rb +3 -0
  230. data/test/vendor/plugins/shoulda/lib/shoulda/active_record_helpers.rb +580 -0
  231. data/test/vendor/plugins/shoulda/lib/shoulda/color.rb +77 -0
  232. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/controller_tests.rb +467 -0
  233. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/html.rb +201 -0
  234. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/xml.rb +170 -0
  235. data/test/vendor/plugins/shoulda/lib/shoulda/gem/proc_extensions.rb +14 -0
  236. data/test/vendor/plugins/shoulda/lib/shoulda/gem/shoulda.rb +239 -0
  237. data/test/vendor/plugins/shoulda/lib/shoulda/general.rb +118 -0
  238. data/test/vendor/plugins/shoulda/lib/shoulda/private_helpers.rb +22 -0
  239. data/test/vendor/plugins/shoulda/lib/shoulda.rb +43 -0
  240. metadata +342 -0
@@ -0,0 +1,203 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+ require 'urligence'
3
+
4
+ class PhotosController
5
+ include Urligence
6
+ end
7
+
8
+ class UrligenceTest < Test::Unit::TestCase
9
+ def setup
10
+ @controller = PhotosController.new
11
+ @tag = stub(:class => stub(:name => "Tag"), :to_param => 'awesomestuff')
12
+ @photo = stub(:class => stub(:name => "Photo"), :to_param => 1)
13
+ end
14
+
15
+ context "with one object" do
16
+ setup do
17
+ setup_mocks "/photos/#{@photo.to_param}", :photo, @photo
18
+ end
19
+
20
+ context "urligence" do
21
+ should "return the correct path" do
22
+ assert_equal @expected_path, @controller.urligence(@photo, :path)
23
+ end
24
+ end
25
+
26
+ context "smart_url" do
27
+ should "return the correct url" do
28
+ assert_equal @expected_url, @controller.smart_url(@photo)
29
+ end
30
+ end
31
+
32
+ context "smart_path" do
33
+ should "return the correct path" do
34
+ assert_equal @expected_path, @controller.smart_path(@photo)
35
+ end
36
+ end
37
+ end
38
+
39
+ context "with two objects" do
40
+ setup do
41
+ setup_mocks "/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :tag_photo, @tag, @photo
42
+ end
43
+
44
+ should "return the correct path" do
45
+ assert_equal @expected_path, @controller.urligence(@tag, @photo, :path)
46
+ end
47
+ end
48
+
49
+ context "with a namespace as first param" do
50
+ setup do
51
+ setup_mocks "/admin/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :admin_tag_photo, @tag, @photo
52
+ end
53
+
54
+ should "return the correct path" do
55
+ assert_equal @expected_path, @controller.urligence(:admin, @tag, @photo, :path)
56
+ end
57
+ end
58
+
59
+ context "with many nil options anywhere in the arguments" do
60
+ setup do
61
+ setup_mocks "/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :tag_photo, @tag, @photo
62
+ end
63
+
64
+ should "return the correct path" do
65
+ assert_equal @expected_path, @controller.urligence(nil, nil, nil, @tag, nil, @photo, nil, :path)
66
+ end
67
+ end
68
+
69
+ context "with a symbol as the last parameter" do
70
+ setup do
71
+ setup_mocks "/tags/#{@tag.to_param}/photos", :tag_photos, @tag
72
+ end
73
+
74
+ should "use that as the last fragment of the url" do
75
+ assert_equal @expected_path, @controller.urligence(@tag, :photos, :path)
76
+ end
77
+ end
78
+
79
+ context "with a symbol as the only parameter" do
80
+ setup do
81
+ setup_mocks "/photos", :photos
82
+ end
83
+
84
+ should "use that as the only url fragment" do
85
+ assert_equal @expected_path, @controller.urligence(nil, :photos, :path)
86
+ end
87
+ end
88
+
89
+ context "with a namespace, and a plural symbol" do
90
+ setup do
91
+ setup_mocks "/admin/products", :admin_products
92
+ end
93
+
94
+ should "call the correct url handler" do
95
+ assert_equal @expected_path, @controller.urligence(:admin, :products, :path)
96
+ end
97
+ end
98
+
99
+ context "with only symbols" do
100
+ setup do
101
+ setup_mocks '/admin/products/new', :new_admin_products
102
+ end
103
+
104
+ should "return the correct path" do
105
+ assert_equal @expected_path, @controller.urligence(:new, :admin, :products, :path)
106
+ end
107
+ end
108
+
109
+ context "with array parameters for specifying the names of routes that don't match the class name of the object" do
110
+ setup do
111
+ setup_mocks '/something_tags/1', :something_tag, @tag
112
+ end
113
+
114
+ context "urligence" do
115
+ should "use the name of the symbol as the url fragment" do
116
+ assert_equal @expected_path, @controller.urligence([:something_tag, @tag], :path)
117
+ end
118
+ end
119
+
120
+ context "smart_url" do
121
+ should "return the correct path" do
122
+ assert_equal @expected_url, @controller.smart_url([:something_tag, @tag])
123
+ end
124
+ end
125
+
126
+ context "smart_path" do
127
+ should "return the correct path" do
128
+ assert_equal @expected_path, @controller.smart_path([:something_tag, @tag])
129
+ end
130
+ end
131
+ end
132
+
133
+ context "with array parameters and a namespace" do
134
+ setup do
135
+ setup_mocks '/admin/something_tags/1', :admin_something_tag, @tag
136
+ end
137
+
138
+ should "return the correct url" do
139
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], :path)
140
+ end
141
+ end
142
+
143
+ context "with array parameters, a namespace, and an ending symbol" do
144
+ setup do
145
+ setup_mocks '/admin/something_tags/1/photos', :admin_something_tag_photos, @tag
146
+ end
147
+
148
+ should "return the correct url" do
149
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], :photos, :path)
150
+ end
151
+ end
152
+
153
+ context "with array parameters, a symbol namespace, and normal model parameters" do
154
+ setup do
155
+ setup_mocks '/admin/something_tags/1/photos/1', :admin_something_tag_photo, @tag, @photo
156
+ end
157
+
158
+ should "return the correct url" do
159
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], @photo, :path)
160
+ end
161
+ end
162
+
163
+ context "hash_for" do
164
+ context "url" do
165
+ setup do
166
+ @controller.stubs(:hash_for_photo_tag_url).with(:id => @tag.to_param, :photo_id => @photo.to_param).returns("something")
167
+ end
168
+
169
+ should "return the correct hash" do
170
+ assert_equal "something", @controller.hash_for_smart_url(@photo, @tag)
171
+ end
172
+ end
173
+
174
+ context "path" do
175
+ setup do
176
+ @photo_tag = stub(:class => stub(:name => "PhotoTag"), :to_param => 'awesomestuff')
177
+ @controller.stubs(:hash_for_photo_tag_path).with(:id => @tag.to_param, :photo_id => @photo.to_param).returns("something")
178
+ end
179
+
180
+ should "return the correct hash" do
181
+ assert_equal "something", @controller.hash_for_smart_path(@photo, [:tag, @photo_tag])
182
+ end
183
+ end
184
+
185
+ context "collection path" do
186
+ setup do
187
+ @controller.stubs(:hash_for_photos_path).with({}).returns('something')
188
+ end
189
+
190
+ should "call the correct methods" do
191
+ assert_equal 'something', @controller.hash_for_smart_path(:photos)
192
+ end
193
+ end
194
+ end
195
+
196
+ private
197
+ def setup_mocks(expected_path, method, *params)
198
+ @expected_path = expected_path
199
+ @controller.stubs("#{method}_path".to_sym).with(*params).returns(@expected_path)
200
+ @controller.stubs("#{method}_url".to_sym).with(*params).returns(@expected_url = "http://localhost#{@expected_path}")
201
+ @controller.stubs("hash_for_#{method}_url".to_sym).with(*params).returns(@expected_hash = @expected_url)
202
+ end
203
+ end
@@ -0,0 +1,32 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ # Test::Unit::UI::VERBOSE
6
+
7
+ Rake::TestTask.new do |t|
8
+ t.libs << 'lib'
9
+ t.pattern = 'test/{unit,functional,other}/**/*_test.rb'
10
+ t.verbose = false
11
+ end
12
+
13
+ Rake::RDocTask.new { |rdoc|
14
+ rdoc.rdoc_dir = 'doc'
15
+ rdoc.title = "Shoulda -- Making tests easy on the fingers and eyes"
16
+ rdoc.options << '--line-numbers' << '--inline-source'
17
+ rdoc.template = "#{ENV['template']}.rb" if ENV['template']
18
+ rdoc.rdoc_files.include('README', 'lib/**/*.rb')
19
+ }
20
+
21
+ desc 'Update documentation on website'
22
+ task :sync_docs => 'rdoc' do
23
+ `rsync -ave ssh doc/ dev@dev.thoughtbot.com:/home/dev/www/dev.thoughtbot.com/shoulda`
24
+ end
25
+
26
+ desc 'Default: run tests.'
27
+ task :default => ['test']
28
+
29
+ Dir['tasks/*.rake'].each do |f|
30
+ load f
31
+ end
32
+
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+
4
+ def usage(msg = nil)
5
+ puts "Error: #{msg}" if msg
6
+ puts if msg
7
+ puts "Usage: #{File.basename(__FILE__)} normal_test_file.rb"
8
+ puts
9
+ puts "Will convert an existing test file with names like "
10
+ puts
11
+ puts " def test_should_do_stuff"
12
+ puts " ..."
13
+ puts " end"
14
+ puts
15
+ puts "to one using the new syntax: "
16
+ puts
17
+ puts " should \"be super cool\" do"
18
+ puts " ..."
19
+ puts " end"
20
+ puts
21
+ puts "A copy of the old file will be left under /tmp/ in case this script just seriously screws up"
22
+ puts
23
+ exit (msg ? 2 : 0)
24
+ end
25
+
26
+ usage("Wrong number of arguments.") unless ARGV.size == 1
27
+ usage("This system doesn't have a /tmp directory. wtf?") unless File.directory?('/tmp')
28
+
29
+ file = ARGV.shift
30
+ tmpfile = "/tmp/#{File.basename(file)}"
31
+ usage("File '#{file}' doesn't exist") unless File.exists?(file)
32
+
33
+ FileUtils.cp(file, tmpfile)
34
+ contents = File.read(tmpfile)
35
+ contents.gsub!(/def test_should_(.*)\s*$/, 'should "\1" do')
36
+ contents.gsub!(/def test_(.*)\s*$/, 'should "RENAME ME: test \1" do')
37
+ contents.gsub!(/should ".*" do$/) {|line| line.tr!('_', ' ')}
38
+ File.open(file, 'w') { |f| f.write(contents) }
39
+
40
+ puts "File '#{file}' has been converted to 'should' syntax. Old version has been stored in '#{tmpfile}'"
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'shoulda'