muck-shares 0.1.0

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 (275) hide show
  1. data/.gitignore +5 -0
  2. data/MIT-LICENSE +19 -0
  3. data/README.rdoc +30 -0
  4. data/Rakefile +91 -0
  5. data/VERSION +1 -0
  6. data/app/controllers/muck/shares_controller.rb +107 -0
  7. data/app/helpers/muck_shares_helper.rb +23 -0
  8. data/app/views/activity_templates/_share.html.erb +3 -0
  9. data/app/views/shares/_form.html.erb +22 -0
  10. data/app/views/shares/_share.html.erb +9 -0
  11. data/app/views/shares/index.html.erb +2 -0
  12. data/app/views/shares/new.html.erb +5 -0
  13. data/config/muck_shares_routes.rb +8 -0
  14. data/db/migrate/20090803185323_create_shares.rb +16 -0
  15. data/db/migrate/20090804184247_add_comment_count_to_shares.rb +9 -0
  16. data/install.rb +1 -0
  17. data/lib/active_record/acts/muck_share.rb +58 -0
  18. data/lib/active_record/acts/muck_sharer.rb +28 -0
  19. data/lib/muck_shares.rb +6 -0
  20. data/lib/muck_shares/initialize_routes.rb +8 -0
  21. data/lib/muck_shares/tasks.rb +28 -0
  22. data/locales/en.yml +19 -0
  23. data/muck-shares.gemspec +378 -0
  24. data/rails/init.rb +4 -0
  25. data/tasks/muck_shares_tasks.rake +1 -0
  26. data/test/rails_root/.gitignore +8 -0
  27. data/test/rails_root/.rake_tasks +103 -0
  28. data/test/rails_root/Capfile +3 -0
  29. data/test/rails_root/Rakefile +16 -0
  30. data/test/rails_root/app/controllers/application_controller.rb +21 -0
  31. data/test/rails_root/app/controllers/default_controller.rb +7 -0
  32. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  33. data/test/rails_root/app/models/.keep +0 -0
  34. data/test/rails_root/app/models/activity.rb +3 -0
  35. data/test/rails_root/app/models/comment.rb +4 -0
  36. data/test/rails_root/app/models/share.rb +4 -0
  37. data/test/rails_root/app/models/user.rb +14 -0
  38. data/test/rails_root/app/models/user_session.rb +2 -0
  39. data/test/rails_root/app/views/default/index.html.erb +0 -0
  40. data/test/rails_root/app/views/layouts/default.html.erb +26 -0
  41. data/test/rails_root/config/amazon_s3.yml +14 -0
  42. data/test/rails_root/config/boot.rb +109 -0
  43. data/test/rails_root/config/database.yml +23 -0
  44. data/test/rails_root/config/environment.rb +31 -0
  45. data/test/rails_root/config/environments/cucumber.rb +38 -0
  46. data/test/rails_root/config/environments/development.rb +19 -0
  47. data/test/rails_root/config/environments/production.rb +1 -0
  48. data/test/rails_root/config/environments/test.rb +42 -0
  49. data/test/rails_root/config/global_config.yml +77 -0
  50. data/test/rails_root/config/initializers/inflections.rb +10 -0
  51. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  52. data/test/rails_root/config/initializers/requires.rb +13 -0
  53. data/test/rails_root/config/initializers/session_store.rb +8 -0
  54. data/test/rails_root/config/routes.rb +3 -0
  55. data/test/rails_root/db/.keep +0 -0
  56. data/test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb +16 -0
  57. data/test/rails_root/db/migrate/20090402033319_add_muck_activities.rb +36 -0
  58. data/test/rails_root/db/migrate/20090402234137_create_languages.rb +18 -0
  59. data/test/rails_root/db/migrate/20090426041056_create_countries.rb +15 -0
  60. data/test/rails_root/db/migrate/20090426041103_create_states.rb +18 -0
  61. data/test/rails_root/db/migrate/20090602041838_create_users.rb +39 -0
  62. data/test/rails_root/db/migrate/20090608073052_create_friends.rb +16 -0
  63. data/test/rails_root/db/migrate/20090613173314_create_comments.rb +24 -0
  64. data/test/rails_root/db/migrate/20090704220055_create_slugs.rb +18 -0
  65. data/test/rails_root/db/migrate/20090704220120_acts_as_taggable_on_migration.rb +29 -0
  66. data/test/rails_root/db/migrate/20090730154102_allow_null_user.rb +9 -0
  67. data/test/rails_root/db/migrate/20090803185323_create_shares.rb +16 -0
  68. data/test/rails_root/db/migrate/20090804184247_add_comment_count_to_shares.rb +9 -0
  69. data/test/rails_root/features/shares.feature +21 -0
  70. data/test/rails_root/features/step_definitions/common_steps.rb +93 -0
  71. data/test/rails_root/features/step_definitions/share_steps.rb +11 -0
  72. data/test/rails_root/features/step_definitions/webrat_steps.rb +128 -0
  73. data/test/rails_root/features/support/env.rb +49 -0
  74. data/test/rails_root/features/support/paths.rb +33 -0
  75. data/test/rails_root/lib/tasks/cucumber.rake +20 -0
  76. data/test/rails_root/public/.htaccess +40 -0
  77. data/test/rails_root/public/404.html +30 -0
  78. data/test/rails_root/public/422.html +30 -0
  79. data/test/rails_root/public/500.html +30 -0
  80. data/test/rails_root/public/dispatch.rb +10 -0
  81. data/test/rails_root/public/favicon.ico +0 -0
  82. data/test/rails_root/public/images/arrow_left.gif +0 -0
  83. data/test/rails_root/public/images/arrow_right.gif +0 -0
  84. data/test/rails_root/public/images/fancybox/fancy_closebox.png +0 -0
  85. data/test/rails_root/public/images/fancybox/fancy_left.png +0 -0
  86. data/test/rails_root/public/images/fancybox/fancy_progress.png +0 -0
  87. data/test/rails_root/public/images/fancybox/fancy_right.png +0 -0
  88. data/test/rails_root/public/images/fancybox/fancy_shadow_e.png +0 -0
  89. data/test/rails_root/public/images/fancybox/fancy_shadow_n.png +0 -0
  90. data/test/rails_root/public/images/fancybox/fancy_shadow_ne.png +0 -0
  91. data/test/rails_root/public/images/fancybox/fancy_shadow_nw.png +0 -0
  92. data/test/rails_root/public/images/fancybox/fancy_shadow_s.png +0 -0
  93. data/test/rails_root/public/images/fancybox/fancy_shadow_se.png +0 -0
  94. data/test/rails_root/public/images/fancybox/fancy_shadow_sw.png +0 -0
  95. data/test/rails_root/public/images/fancybox/fancy_shadow_w.png +0 -0
  96. data/test/rails_root/public/images/fancybox/fancy_title_left.png +0 -0
  97. data/test/rails_root/public/images/fancybox/fancy_title_main.png +0 -0
  98. data/test/rails_root/public/images/fancybox/fancy_title_right.png +0 -0
  99. data/test/rails_root/public/images/icons/accept.png +0 -0
  100. data/test/rails_root/public/images/icons/add.png +0 -0
  101. data/test/rails_root/public/images/icons/delete.png +0 -0
  102. data/test/rails_root/public/images/icons/vote.png +0 -0
  103. data/test/rails_root/public/images/loading.gif +0 -0
  104. data/test/rails_root/public/images/nothing.png +0 -0
  105. data/test/rails_root/public/images/profile_default.jpg +0 -0
  106. data/test/rails_root/public/images/rails.png +0 -0
  107. data/test/rails_root/public/images/spinner.gif +0 -0
  108. data/test/rails_root/public/images/sprites.png +0 -0
  109. data/test/rails_root/public/javascripts/application.js +2 -0
  110. data/test/rails_root/public/javascripts/builder.js +136 -0
  111. data/test/rails_root/public/javascripts/controls.js +963 -0
  112. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  113. data/test/rails_root/public/javascripts/effects.js +1120 -0
  114. data/test/rails_root/public/javascripts/fancyzoom.min.js +1 -0
  115. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +273 -0
  116. data/test/rails_root/public/javascripts/jquery/jquery.easing.js +1 -0
  117. data/test/rails_root/public/javascripts/jquery/jquery.fancybox.js +9 -0
  118. data/test/rails_root/public/javascripts/jquery/jquery.form.js +637 -0
  119. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +2 -0
  120. data/test/rails_root/public/javascripts/jquery/jquery.js +19 -0
  121. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +69 -0
  122. data/test/rails_root/public/javascripts/muck.js +80 -0
  123. data/test/rails_root/public/javascripts/muck_activities.js +108 -0
  124. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  125. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  126. data/test/rails_root/public/javascripts/slider.js +277 -0
  127. data/test/rails_root/public/javascripts/sound.js +60 -0
  128. data/test/rails_root/public/robots.txt +1 -0
  129. data/test/rails_root/public/stylesheets/.keep +0 -0
  130. data/test/rails_root/public/stylesheets/admin.css +12 -0
  131. data/test/rails_root/public/stylesheets/blueprint/ie.css +26 -0
  132. data/test/rails_root/public/stylesheets/blueprint/liquid_screen.css +203 -0
  133. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  134. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  135. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  136. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  137. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  138. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  139. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  140. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  141. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  142. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  143. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  144. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  145. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  146. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  147. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  148. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  149. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  150. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/liquid.css +134 -0
  151. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/src/liquid.css +197 -0
  152. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  153. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/screen.css +109 -0
  154. data/test/rails_root/public/stylesheets/blueprint/print.css +30 -0
  155. data/test/rails_root/public/stylesheets/blueprint/screen.css +251 -0
  156. data/test/rails_root/public/stylesheets/blueprint/sprite.css +1 -0
  157. data/test/rails_root/public/stylesheets/blueprint/src/forms.css +49 -0
  158. data/test/rails_root/public/stylesheets/blueprint/src/grid.css +213 -0
  159. data/test/rails_root/public/stylesheets/blueprint/src/grid.png +0 -0
  160. data/test/rails_root/public/stylesheets/blueprint/src/ie.css +59 -0
  161. data/test/rails_root/public/stylesheets/blueprint/src/print.css +85 -0
  162. data/test/rails_root/public/stylesheets/blueprint/src/reset.css +38 -0
  163. data/test/rails_root/public/stylesheets/blueprint/src/typography.css +105 -0
  164. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  165. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  166. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
  167. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
  168. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  169. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
  170. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  171. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  172. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
  173. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_222222_256x240.png +0 -0
  174. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2694e8_256x240.png +0 -0
  175. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2e83ff_256x240.png +0 -0
  176. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_72a7cf_256x240.png +0 -0
  177. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_888888_256x240.png +0 -0
  178. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png +0 -0
  179. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png +0 -0
  180. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css +404 -0
  181. data/test/rails_root/public/stylesheets/jquery/jquery.fancybox.css +44 -0
  182. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  183. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  184. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  185. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  186. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  187. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  188. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  189. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  190. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  191. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  192. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  193. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  194. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  195. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  196. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  197. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css +404 -0
  198. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  199. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  200. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  201. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  202. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  203. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  204. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  205. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  206. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_222222_256x240.png +0 -0
  207. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  208. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_454545_256x240.png +0 -0
  209. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png +0 -0
  210. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  211. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css +404 -0
  212. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  213. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  214. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  215. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  216. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  217. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  218. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  219. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  220. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  221. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  222. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  223. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  224. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  225. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  226. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css +404 -0
  227. data/test/rails_root/public/stylesheets/reset.css +0 -0
  228. data/test/rails_root/public/stylesheets/styles.css +89 -0
  229. data/test/rails_root/public/stylesheets/themes/blue/styles.css +1 -0
  230. data/test/rails_root/public/stylesheets/themes/red/styles.css +1 -0
  231. data/test/rails_root/script/about +3 -0
  232. data/test/rails_root/script/breakpointer +3 -0
  233. data/test/rails_root/script/console +3 -0
  234. data/test/rails_root/script/create_project.rb +52 -0
  235. data/test/rails_root/script/cucumber +8 -0
  236. data/test/rails_root/script/dbconsole +3 -0
  237. data/test/rails_root/script/destroy +3 -0
  238. data/test/rails_root/script/generate +3 -0
  239. data/test/rails_root/script/performance/benchmarker +3 -0
  240. data/test/rails_root/script/performance/profiler +3 -0
  241. data/test/rails_root/script/performance/request +3 -0
  242. data/test/rails_root/script/plugin +3 -0
  243. data/test/rails_root/script/process/inspector +3 -0
  244. data/test/rails_root/script/process/reaper +3 -0
  245. data/test/rails_root/script/process/spawner +3 -0
  246. data/test/rails_root/script/runner +3 -0
  247. data/test/rails_root/script/server +3 -0
  248. data/test/rails_root/test/factories.rb +75 -0
  249. data/test/rails_root/test/functional/.keep +0 -0
  250. data/test/rails_root/test/functional/shares_controller_test.rb +119 -0
  251. data/test/rails_root/test/mocks/development/.keep +0 -0
  252. data/test/rails_root/test/mocks/test/.keep +0 -0
  253. data/test/rails_root/test/shoulda_macros/controller.rb +49 -0
  254. data/test/rails_root/test/shoulda_macros/forms.rb +32 -0
  255. data/test/rails_root/test/shoulda_macros/models.rb +50 -0
  256. data/test/rails_root/test/shoulda_macros/pagination.rb +53 -0
  257. data/test/rails_root/test/shoulda_macros/plugins.rb +34 -0
  258. data/test/rails_root/test/test_helper.rb +48 -0
  259. data/test/rails_root/test/unit/.keep +0 -0
  260. data/test/rails_root/test/unit/share_test.rb +57 -0
  261. data/test/rails_root/test/unit/user_test.rb +26 -0
  262. data/test/rails_root/vendor/plugins/ssl_requirement/README +43 -0
  263. data/test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +62 -0
  264. data/test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb +132 -0
  265. data/test/rails_root/vendor/plugins/validation_reflection/CHANGELOG +24 -0
  266. data/test/rails_root/vendor/plugins/validation_reflection/LICENSE +20 -0
  267. data/test/rails_root/vendor/plugins/validation_reflection/README +64 -0
  268. data/test/rails_root/vendor/plugins/validation_reflection/Rakefile +22 -0
  269. data/test/rails_root/vendor/plugins/validation_reflection/about.yml +7 -0
  270. data/test/rails_root/vendor/plugins/validation_reflection/init.rb +8 -0
  271. data/test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb +129 -0
  272. data/test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb +36 -0
  273. data/test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +126 -0
  274. data/uninstall.rb +1 -0
  275. metadata +420 -0
@@ -0,0 +1 @@
1
+ /*Add styles specific to your theme here*/
@@ -0,0 +1 @@
1
+ /*Add styles specific to your theme here*/
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/about'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/breakpointer'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'activesupport'
4
+ require 'pathname'
5
+
6
+ project_name = ARGV[0]
7
+ fail("Usage: #{File.basename(__FILE__)} new_project_name") unless project_name
8
+ fail("Project name must only contain [a-z0-9_]") unless project_name =~ /^[a-z0-9_]+$/
9
+
10
+ base_directory = Pathname.new(File.join(File.dirname(__FILE__), '..', '..')).realpath
11
+ project_directory = base_directory + project_name
12
+ fail("Project directory (#{project_directory}) already exists") if project_directory.exist?
13
+
14
+ template_url = "git@github.com:thoughtbot/rails-template.git"
15
+ changeme = "CHANGEME"
16
+
17
+ def run(cmd)
18
+ puts "Running '#{cmd}'"
19
+ out = `#{cmd}`
20
+ if $? != 0
21
+ fail "Command #{cmd} failed: #$?\n#{out}"
22
+ end
23
+ out
24
+ end
25
+
26
+ def search_and_replace(file, search, replace)
27
+ if File.file?(file)
28
+ contents = File.read(file)
29
+ if contents[search]
30
+ puts "Replacing #{search} with #{replace} in #{file}"
31
+ contents.gsub!(search, replace)
32
+ File.open(file, "w") { |f| f << contents }
33
+ end
34
+ end
35
+ end
36
+
37
+ run("mkdir #{project_directory}")
38
+ Dir.chdir(project_directory) or fail("Couldn't change to #{project_directory}")
39
+ run("git init")
40
+ run("git remote add template #{template_url}")
41
+ run("git pull template master")
42
+
43
+ Dir.glob("#{project_directory}/**/*").each do |file|
44
+ search_and_replace(file, changeme, project_name)
45
+ end
46
+
47
+ run("git commit -a -m 'Initial commit'")
48
+
49
+ puts
50
+ puts "Now login to github and add a new project named '#{project_name.humanize.titleize}'"
51
+
52
+
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ load File.expand_path(File.dirname(__FILE__) + "/../vendor/plugins/cucumber/bin/cucumber")
4
+ rescue LoadError => e
5
+ raise unless e.to_s =~ /cucumber/
6
+ require "rubygems"
7
+ load File.join(Gem.bindir, "cucumber")
8
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/dbconsole'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/request'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/inspector'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/reaper'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/spawner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/server'
@@ -0,0 +1,75 @@
1
+ Factory.sequence :email do |n|
2
+ "somebody#{n}@example.com"
3
+ end
4
+
5
+ Factory.sequence :login do |n|
6
+ "inquire#{n}"
7
+ end
8
+
9
+ Factory.sequence :name do |n|
10
+ "a_name#{n}"
11
+ end
12
+
13
+ Factory.sequence :title do |n|
14
+ "a_title#{n}"
15
+ end
16
+
17
+ Factory.sequence :abbr do |n|
18
+ "abbr#{n}"
19
+ end
20
+
21
+ Factory.sequence :description do |n|
22
+ "This is the description: #{n}"
23
+ end
24
+
25
+ Factory.sequence :uri do |n|
26
+ "n#{n}.example.com"
27
+ end
28
+
29
+ Factory.define :state do |f|
30
+ f.name { Factory.next(:name) }
31
+ f.abbreviation { Factory.next(:abbr) }
32
+ f.country {|a| a.association(:country) }
33
+ end
34
+
35
+ Factory.define :country do |f|
36
+ f.name { Factory.next(:name) }
37
+ f.abbreviation { Factory.next(:abbr) }
38
+ end
39
+
40
+ Factory.define :user do |f|
41
+ f.login { Factory.next(:login) }
42
+ f.email { Factory.next(:email) }
43
+ f.password 'inquire_pass'
44
+ f.password_confirmation 'inquire_pass'
45
+ f.first_name 'test'
46
+ f.last_name 'guy'
47
+ f.terms_of_service true
48
+ f.activated_at DateTime.now
49
+ end
50
+
51
+ Factory.define :permission do |f|
52
+ f.role {|a| a.association(:role)}
53
+ f.user {|a| a.association(:user)}
54
+ end
55
+
56
+ Factory.define :role do |f|
57
+ f.rolename 'administrator'
58
+ end
59
+
60
+ Factory.define :share do |f|
61
+ f.uri { Factory.next(:uri) }
62
+ f.title { Factory.next(:title) }
63
+ f.shared_by {|a| a.association(:user)}
64
+ end
65
+
66
+ Factory.define :domain_theme do |f|
67
+ f.name { Factory.next(:name) }
68
+ f.uri { Factory.next(:uri) }
69
+ end
70
+
71
+ Factory.define :theme do |f|
72
+ f.name { Factory.next(:name) }
73
+ end
74
+
75
+
File without changes
@@ -0,0 +1,119 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class Muck::SharesControllerTest < ActionController::TestCase
4
+
5
+ tests Muck::SharesController
6
+
7
+ context "shares controller" do
8
+
9
+ context "not logged in" do
10
+ setup do
11
+ @user = Factory(:user)
12
+ end
13
+ context "GET index user specified" do
14
+ setup do
15
+ @user.shares.build(Factory.attributes_for(:share))
16
+ @user.shares.build(Factory.attributes_for(:share))
17
+ get :index, :user_id => @user.to_param, :format => 'html'
18
+ end
19
+ should_not_set_the_flash
20
+ should_respond_with :success
21
+ should_render_template :index
22
+ end
23
+ end
24
+
25
+ context "logged in" do
26
+ setup do
27
+ activate_authlogic
28
+ @user = Factory(:user)
29
+ login_as @user
30
+ end
31
+
32
+ context "GET new" do
33
+ setup do
34
+ get :new
35
+ end
36
+ should_not_set_the_flash
37
+ should_respond_with :success
38
+ should_render_template :new
39
+ end
40
+
41
+ context "GET new with" do
42
+ setup do
43
+ @title = 'Example'
44
+ @uri = 'http://www.example.com'
45
+ @message = 'a message'
46
+ end
47
+ context "full params" do
48
+ setup do
49
+ get :new, :uri => @uri, :title => @title, :message => @message
50
+ end
51
+ should_not_set_the_flash
52
+ should_respond_with :success
53
+ should_render_template :new
54
+ should "setup the share" do
55
+ assert_equal @uri, assigns(:share).uri
56
+ assert_equal @title, assigns(:share).title
57
+ assert_equal @message, assigns(:share).message
58
+ end
59
+ end
60
+ context "min params" do
61
+ setup do
62
+ get :new, :u => @uri, :t => @title, :m => @message
63
+ end
64
+ should_not_set_the_flash
65
+ should_respond_with :success
66
+ should_render_template :new
67
+ should "setup the share" do
68
+ assert_equal @uri, assigns(:share).uri
69
+ assert_equal @title, assigns(:share).title
70
+ assert_equal @message, assigns(:share).message
71
+ end
72
+ end
73
+ end
74
+
75
+ context "GET index no user specified" do
76
+ setup do
77
+ @user.shares.create(Factory.attributes_for(:share))
78
+ @user.shares.create(Factory.attributes_for(:share))
79
+ get :index, :format => 'html'
80
+ end
81
+ should_not_set_the_flash
82
+ should_respond_with :success
83
+ should_render_template :index
84
+ end
85
+
86
+ context "GET index user specified" do
87
+ setup do
88
+ @user.shares.create(Factory.attributes_for(:share))
89
+ @user.shares.create(Factory.attributes_for(:share))
90
+ get :index, :user_id => @user.to_param, :format => 'html'
91
+ end
92
+ should_not_set_the_flash
93
+ should_respond_with :success
94
+ should_render_template :index
95
+ end
96
+
97
+ context "DELETE to destroy" do
98
+ setup do
99
+ @share = @user.shares.create(Factory.attributes_for(:share))
100
+ @no_delete_share = Factory(:share)
101
+ end
102
+ should "delete share" do
103
+ assert_difference "Share.count", -1 do
104
+ delete :destroy, { :id => @share.to_param, :format => 'json' }
105
+ assert @response.body.include?(I18n.t('muck.shares.share_removed'))
106
+ end
107
+ end
108
+ should "not delete share" do
109
+ assert_no_difference "Share.count" do
110
+ delete :destroy, { :id => @no_delete_share.to_param, :format => 'json' }
111
+ end
112
+ end
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+
119
+ end
File without changes
File without changes
@@ -0,0 +1,49 @@
1
+ module MuckControllerMacros
2
+
3
+ def should_require_login(*args)
4
+ args = Hash[*args]
5
+ login_url = args.delete :login_url
6
+ args.each do |action, verb|
7
+ should "Require login for '#{action}' action" do
8
+ if [:put, :delete].include?(verb) # put and delete require an id even if it is a bogus one
9
+ send(verb, action, :id => 1)
10
+ else
11
+ send(verb, action)
12
+ end
13
+ assert_redirected_to(login_url)
14
+ end
15
+ end
16
+ end
17
+
18
+ def should_require_role(role, redirect_url, *actions)
19
+ actions.each do |action|
20
+ should "require role for '#{action}' action" do
21
+ get(action)
22
+ ensure_flash(/permission/i)
23
+ assert_response :redirect
24
+ end
25
+ end
26
+ end
27
+
28
+ #from: http://blog.internautdesign.com/2008/9/11/more-on-custom-shoulda-macros-scoping-of-instance-variables
29
+ def should_not_allow action, object, url= "/login", msg=nil
30
+ msg ||= "a #{object.class.to_s.downcase}"
31
+ should "not be able to #{action} #{msg}" do
32
+ object = eval(object, self.send(:binding), __FILE__, __LINE__)
33
+ get action, :id => object.id
34
+ assert_redirected_to url
35
+ end
36
+ end
37
+
38
+ def should_allow action, object, msg=nil
39
+ msg ||= "a #{object.class.to_s.downcase}"
40
+ should "be able to #{action} #{msg}" do
41
+ object = eval(object, self.send(:binding), __FILE__, __LINE__)
42
+ get action, :id => object.id
43
+ assert_response :success
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ ActionController::TestCase.extend(MuckControllerMacros)
@@ -0,0 +1,32 @@
1
+ module ShouldaFormMacros
2
+ def self.should_have_form(opts)
3
+ model = self.name.gsub(/ControllerTest$/, '').singularize.downcase
4
+ model = model[model.rindex('::')+2..model.size] if model.include?('::')
5
+ http_method, hidden_http_method = form_http_method opts[:method]
6
+ should "have a #{model} form" do
7
+ assert_select "form[action=?][method=#{http_method}]", eval(opts[:action]) do
8
+ if hidden_http_method
9
+ assert_select "input[type=hidden][name=_method][value=#{hidden_http_method}]"
10
+ end
11
+ opts[:fields].each do |attribute, type|
12
+ attribute = attribute.is_a?(Symbol) ? "#{model}[#{attribute.to_s}]" : attribute
13
+ assert_select "input[type=#{type.to_s}][name=?]", attribute
14
+ end
15
+ assert_select "input[type=submit]"
16
+ end
17
+ end
18
+ end
19
+
20
+ def self.form_http_method(http_method)
21
+ http_method = http_method.nil? ? 'post' : http_method.to_s
22
+ if http_method == "post" || http_method == "get"
23
+ return http_method, nil
24
+ else
25
+ return "post", http_method
26
+ end
27
+ end
28
+ end
29
+
30
+ class ActiveSupport::TestCase
31
+ extend ShouldaFormMacros
32
+ end
@@ -0,0 +1,50 @@
1
+ module ShouldaModelMacros
2
+
3
+ def should_sanitize(*attributes)
4
+ bad_scripts = [
5
+ %|';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>|,
6
+ %|'';!--"<XSS>=&{()}|,
7
+ %|<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>|,
8
+ %|<IMG SRC="javascript:alert('XSS');">|,
9
+ %|<IMG SRC=javascript:alert('XSS')>|,
10
+ %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
11
+ %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
12
+ %|<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>|,
13
+ %|<IMG """><SCRIPT>alert("XSS")</SCRIPT>">|,
14
+ %|<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>|,
15
+ %|<A HREF="h
16
+ tt p://6&#9;6.000146.0x7.147/">XSS</A>|,
17
+ %|<script>alert('message');</script>| ]
18
+
19
+ klass = model_class
20
+ attributes.each do |attribute|
21
+ attribute = attribute.to_sym
22
+ should "white list #{attribute}" do
23
+ assert object = klass.find(:first), "Can't find first #{klass}"
24
+ bad_scripts.each do |bad_value|
25
+ object.send("#{attribute}=", bad_value)
26
+ object.save
27
+ clean_value = object.send("#{attribute}")
28
+ assert !clean_value.include?(bad_value), "#{attribute} is not white listed. #{bad_value} made it through"
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ def should_accept_nested_attributes_for(*attr_names)
35
+ klass = self.name.gsub(/Test$/, '').constantize
36
+
37
+ context "#{klass}" do
38
+ attr_names.each do |association_name|
39
+ should "accept nested attrs for #{association_name}" do
40
+ assert klass.instance_methods.include?("#{association_name}_attributes="),
41
+ "#{klass} does not accept nested attributes for #{association_name}"
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ class ActiveSupport::TestCase
49
+ extend ShouldaModelMacros
50
+ end