muck-friends 0.1.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 (294) hide show
  1. data/.gitignore +5 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +51 -0
  4. data/Rakefile +101 -0
  5. data/VERSION +1 -0
  6. data/app/controllers/muck/friends_controller.rb +70 -0
  7. data/app/helpers/muck_friends_helper.rb +93 -0
  8. data/app/models/friend_mailer.rb +25 -0
  9. data/app/views/activity_templates/follow.html.erb +1 -0
  10. data/app/views/activity_templates/friends_with.html.erb +1 -0
  11. data/app/views/friend_mailer/follow.text.html.erb +8 -0
  12. data/app/views/friend_mailer/follow.text.plain.erb +8 -0
  13. data/app/views/friend_mailer/friend_request.text.html.erb +8 -0
  14. data/app/views/friend_mailer/friend_request.text.plain.erb +8 -0
  15. data/app/views/friends/_friend_simple.html.erb +4 -0
  16. data/app/views/friends/_friends.html.erb +8 -0
  17. data/app/views/friends/_notifications.html.erb +32 -0
  18. data/app/views/friends/friend_or_follow_request.html.erb +8 -0
  19. data/app/views/friends/index.html.erb +1 -0
  20. data/config/muck_friends_routes.rb +4 -0
  21. data/db/migrate/20090608073052_create_friends.rb +16 -0
  22. data/install.rb +1 -0
  23. data/lib/active_record/acts/muck_friend.rb +141 -0
  24. data/lib/active_record/acts/muck_friend_user.rb +103 -0
  25. data/lib/muck_friends.rb +12 -0
  26. data/lib/muck_friends/initialize_routes.rb +8 -0
  27. data/lib/muck_friends/tasks.rb +27 -0
  28. data/locales/ar.yml +31 -0
  29. data/locales/bg.yml +31 -0
  30. data/locales/ca.yml +31 -0
  31. data/locales/cs.yml +31 -0
  32. data/locales/da.yml +31 -0
  33. data/locales/de.yml +31 -0
  34. data/locales/el.yml +31 -0
  35. data/locales/en.yml +31 -0
  36. data/locales/es.yml +31 -0
  37. data/locales/et.yml +31 -0
  38. data/locales/fa.yml +31 -0
  39. data/locales/fi.yml +31 -0
  40. data/locales/fr.yml +31 -0
  41. data/locales/gl.yml +31 -0
  42. data/locales/hi.yml +31 -0
  43. data/locales/hr.yml +31 -0
  44. data/locales/hu.yml +31 -0
  45. data/locales/id.yml +31 -0
  46. data/locales/it.yml +31 -0
  47. data/locales/iw.yml +31 -0
  48. data/locales/ja.yml +31 -0
  49. data/locales/ko.yml +31 -0
  50. data/locales/lt.yml +31 -0
  51. data/locales/lv.yml +31 -0
  52. data/locales/mt.yml +31 -0
  53. data/locales/nl.yml +31 -0
  54. data/locales/no.yml +32 -0
  55. data/locales/pl.yml +31 -0
  56. data/locales/pt-PT.yml +31 -0
  57. data/locales/pt.yml +6 -0
  58. data/locales/ro.yml +31 -0
  59. data/locales/ru.yml +31 -0
  60. data/locales/sk.yml +31 -0
  61. data/locales/sl.yml +31 -0
  62. data/locales/sq.yml +31 -0
  63. data/locales/sr.yml +31 -0
  64. data/locales/sv.yml +31 -0
  65. data/locales/th.yml +31 -0
  66. data/locales/tl.yml +31 -0
  67. data/locales/tr.yml +31 -0
  68. data/locales/uk.yml +31 -0
  69. data/locales/vi.yml +31 -0
  70. data/locales/zh-CN.yml +31 -0
  71. data/locales/zh-TW.yml +31 -0
  72. data/locales/zh.yml +31 -0
  73. data/muck-friends.gemspec +381 -0
  74. data/rails/init.rb +4 -0
  75. data/tasks/rails.rake +1 -0
  76. data/test/rails_root/.gitignore +8 -0
  77. data/test/rails_root/.rake_tasks +103 -0
  78. data/test/rails_root/Capfile +3 -0
  79. data/test/rails_root/Rakefile +15 -0
  80. data/test/rails_root/app/controllers/application_controller.rb +21 -0
  81. data/test/rails_root/app/controllers/default_controller.rb +7 -0
  82. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  83. data/test/rails_root/app/models/.keep +0 -0
  84. data/test/rails_root/app/models/activity.rb +3 -0
  85. data/test/rails_root/app/models/friend.rb +4 -0
  86. data/test/rails_root/app/models/user.rb +8 -0
  87. data/test/rails_root/app/models/user_session.rb +2 -0
  88. data/test/rails_root/app/views/default/index.html.erb +1 -0
  89. data/test/rails_root/app/views/layouts/default.html.erb +26 -0
  90. data/test/rails_root/config/amazon_s3.yml +14 -0
  91. data/test/rails_root/config/boot.rb +109 -0
  92. data/test/rails_root/config/database.yml +14 -0
  93. data/test/rails_root/config/environment.rb +27 -0
  94. data/test/rails_root/config/environments/development.rb +19 -0
  95. data/test/rails_root/config/environments/production.rb +1 -0
  96. data/test/rails_root/config/environments/test.rb +34 -0
  97. data/test/rails_root/config/global_config.yml +72 -0
  98. data/test/rails_root/config/initializers/inflections.rb +10 -0
  99. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  100. data/test/rails_root/config/initializers/requires.rb +13 -0
  101. data/test/rails_root/config/initializers/session_store.rb +8 -0
  102. data/test/rails_root/config/routes.rb +3 -0
  103. data/test/rails_root/db/.keep +0 -0
  104. data/test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb +16 -0
  105. data/test/rails_root/db/migrate/20090402033319_add_muck_activities.rb +36 -0
  106. data/test/rails_root/db/migrate/20090602041838_create_users.rb +39 -0
  107. data/test/rails_root/db/migrate/20090608073052_create_friends.rb +16 -0
  108. data/test/rails_root/features/step_definitions/webrat_steps.rb +99 -0
  109. data/test/rails_root/features/support/env.rb +14 -0
  110. data/test/rails_root/public/.htaccess +40 -0
  111. data/test/rails_root/public/404.html +30 -0
  112. data/test/rails_root/public/422.html +30 -0
  113. data/test/rails_root/public/500.html +30 -0
  114. data/test/rails_root/public/dispatch.rb +10 -0
  115. data/test/rails_root/public/favicon.ico +0 -0
  116. data/test/rails_root/public/images/arrow_left.gif +0 -0
  117. data/test/rails_root/public/images/arrow_right.gif +0 -0
  118. data/test/rails_root/public/images/blue/preview.gif +0 -0
  119. data/test/rails_root/public/images/icons/accept.png +0 -0
  120. data/test/rails_root/public/images/icons/add.png +0 -0
  121. data/test/rails_root/public/images/icons/delete.png +0 -0
  122. data/test/rails_root/public/images/icons/vote.png +0 -0
  123. data/test/rails_root/public/images/loading.gif +0 -0
  124. data/test/rails_root/public/images/profile_default.jpg +0 -0
  125. data/test/rails_root/public/images/rails.png +0 -0
  126. data/test/rails_root/public/images/red/preview.gif +0 -0
  127. data/test/rails_root/public/images/spinner.gif +0 -0
  128. data/test/rails_root/public/images/sprites.png +0 -0
  129. data/test/rails_root/public/javascripts/application.js +2 -0
  130. data/test/rails_root/public/javascripts/builder.js +136 -0
  131. data/test/rails_root/public/javascripts/controls.js +963 -0
  132. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  133. data/test/rails_root/public/javascripts/effects.js +1120 -0
  134. data/test/rails_root/public/javascripts/fancyzoom.min.js +1 -0
  135. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +273 -0
  136. data/test/rails_root/public/javascripts/jquery/jquery.form.js +637 -0
  137. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +2 -0
  138. data/test/rails_root/public/javascripts/jquery/jquery.js +19 -0
  139. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +69 -0
  140. data/test/rails_root/public/javascripts/muck.js +76 -0
  141. data/test/rails_root/public/javascripts/muck_activities.js +108 -0
  142. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  143. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  144. data/test/rails_root/public/javascripts/slider.js +277 -0
  145. data/test/rails_root/public/javascripts/sound.js +60 -0
  146. data/test/rails_root/public/robots.txt +1 -0
  147. data/test/rails_root/public/stylesheets/.keep +0 -0
  148. data/test/rails_root/public/stylesheets/admin.css +12 -0
  149. data/test/rails_root/public/stylesheets/blueprint/ie.css +26 -0
  150. data/test/rails_root/public/stylesheets/blueprint/liquid_screen.css +203 -0
  151. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  152. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  153. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  154. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  155. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  156. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  157. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  158. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  159. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  160. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  161. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  162. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  163. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  164. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  165. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  166. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  167. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  168. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/liquid.css +134 -0
  169. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/src/liquid.css +197 -0
  170. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  171. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/screen.css +109 -0
  172. data/test/rails_root/public/stylesheets/blueprint/print.css +30 -0
  173. data/test/rails_root/public/stylesheets/blueprint/screen.css +251 -0
  174. data/test/rails_root/public/stylesheets/blueprint/sprite.css +1 -0
  175. data/test/rails_root/public/stylesheets/blueprint/src/forms.css +49 -0
  176. data/test/rails_root/public/stylesheets/blueprint/src/grid.css +213 -0
  177. data/test/rails_root/public/stylesheets/blueprint/src/grid.png +0 -0
  178. data/test/rails_root/public/stylesheets/blueprint/src/ie.css +59 -0
  179. data/test/rails_root/public/stylesheets/blueprint/src/print.css +85 -0
  180. data/test/rails_root/public/stylesheets/blueprint/src/reset.css +38 -0
  181. data/test/rails_root/public/stylesheets/blueprint/src/typography.css +105 -0
  182. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  183. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  184. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
  185. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
  186. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  187. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
  188. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  189. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  190. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
  191. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_222222_256x240.png +0 -0
  192. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2694e8_256x240.png +0 -0
  193. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2e83ff_256x240.png +0 -0
  194. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_72a7cf_256x240.png +0 -0
  195. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_888888_256x240.png +0 -0
  196. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png +0 -0
  197. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png +0 -0
  198. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css +404 -0
  199. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  200. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  201. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  202. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  203. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  204. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  205. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  206. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  207. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  208. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  209. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  210. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  211. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  212. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  213. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  214. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css +404 -0
  215. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  216. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  217. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  218. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  219. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  220. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  221. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  222. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  223. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_222222_256x240.png +0 -0
  224. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  225. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_454545_256x240.png +0 -0
  226. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png +0 -0
  227. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  228. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css +404 -0
  229. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  230. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  231. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  232. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  233. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  234. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  235. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  236. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  237. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  238. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  239. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  240. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  241. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  242. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  243. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css +404 -0
  244. data/test/rails_root/public/stylesheets/reset.css +0 -0
  245. data/test/rails_root/public/stylesheets/styles.css +79 -0
  246. data/test/rails_root/public/stylesheets/themes/blue/styles.css +1 -0
  247. data/test/rails_root/public/stylesheets/themes/red/styles.css +1 -0
  248. data/test/rails_root/script/about +3 -0
  249. data/test/rails_root/script/breakpointer +3 -0
  250. data/test/rails_root/script/console +3 -0
  251. data/test/rails_root/script/create_project.rb +52 -0
  252. data/test/rails_root/script/cucumber +7 -0
  253. data/test/rails_root/script/dbconsole +3 -0
  254. data/test/rails_root/script/destroy +3 -0
  255. data/test/rails_root/script/generate +3 -0
  256. data/test/rails_root/script/performance/benchmarker +3 -0
  257. data/test/rails_root/script/performance/profiler +3 -0
  258. data/test/rails_root/script/performance/request +3 -0
  259. data/test/rails_root/script/plugin +3 -0
  260. data/test/rails_root/script/process/inspector +3 -0
  261. data/test/rails_root/script/process/reaper +3 -0
  262. data/test/rails_root/script/process/spawner +3 -0
  263. data/test/rails_root/script/runner +3 -0
  264. data/test/rails_root/script/server +3 -0
  265. data/test/rails_root/test/factories.rb +50 -0
  266. data/test/rails_root/test/functional/.keep +0 -0
  267. data/test/rails_root/test/functional/friends_controller_test.rb +171 -0
  268. data/test/rails_root/test/integration/.keep +0 -0
  269. data/test/rails_root/test/mocks/development/.keep +0 -0
  270. data/test/rails_root/test/mocks/test/.keep +0 -0
  271. data/test/rails_root/test/shoulda_macros/controller.rb +45 -0
  272. data/test/rails_root/test/shoulda_macros/forms.rb +32 -0
  273. data/test/rails_root/test/shoulda_macros/models.rb +50 -0
  274. data/test/rails_root/test/shoulda_macros/pagination.rb +53 -0
  275. data/test/rails_root/test/shoulda_macros/plugins.rb +34 -0
  276. data/test/rails_root/test/test_helper.rb +38 -0
  277. data/test/rails_root/test/unit/.keep +0 -0
  278. data/test/rails_root/test/unit/friend_mailer_test.rb +37 -0
  279. data/test/rails_root/test/unit/friend_test.rb +186 -0
  280. data/test/rails_root/test/unit/user_test.rb +170 -0
  281. data/test/rails_root/vendor/plugins/ssl_requirement/README +43 -0
  282. data/test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +62 -0
  283. data/test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb +132 -0
  284. data/test/rails_root/vendor/plugins/validation_reflection/CHANGELOG +24 -0
  285. data/test/rails_root/vendor/plugins/validation_reflection/LICENSE +20 -0
  286. data/test/rails_root/vendor/plugins/validation_reflection/README +64 -0
  287. data/test/rails_root/vendor/plugins/validation_reflection/Rakefile +22 -0
  288. data/test/rails_root/vendor/plugins/validation_reflection/about.yml +7 -0
  289. data/test/rails_root/vendor/plugins/validation_reflection/init.rb +8 -0
  290. data/test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb +129 -0
  291. data/test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb +36 -0
  292. data/test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +126 -0
  293. data/uninstall.rb +1 -0
  294. metadata +416 -0
@@ -0,0 +1,50 @@
1
+ module ShouldaModelMacros
2
+
3
+ def self.should_whitelist(*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
@@ -0,0 +1,53 @@
1
+ module ShouldaPaginationMacros
2
+ # Example:
3
+ # context "a GET to index logged in as admin" do
4
+ # setup do
5
+ # login_as_admin
6
+ # get :index
7
+ # end
8
+ # should_paginate_collection :users
9
+ # should_display_pagination
10
+ # end
11
+ def self.should_paginate_collection(collection_name)
12
+ should "paginate #{collection_name}" do
13
+ assert collection = assigns(collection_name),
14
+ "Controller isn't assigning to @#{collection_name.to_s}."
15
+ assert_kind_of WillPaginate::Collection, collection,
16
+ "@#{collection_name.to_s} isn't a WillPaginate collection."
17
+ end
18
+ end
19
+
20
+ def self.should_display_pagination
21
+ should "display pagination" do
22
+ assert_select "div.pagination", { :minimum => 1 },
23
+ "View isn't displaying pagination. Add <%= will_paginate @collection %>."
24
+ end
25
+ end
26
+
27
+ # Example:
28
+ # context "a GET to index not logged in as admin" do
29
+ # setup { get :index }
30
+ # should_not_paginate_collection :users
31
+ # should_not_display_pagination
32
+ # end
33
+ def self.should_not_paginate_collection(collection_name)
34
+ should "not paginate #{collection_name}" do
35
+ assert collection = assigns(collection_name),
36
+ "Controller isn't assigning to @#{collection_name.to_s}."
37
+ assert_not_equal WillPaginate::Collection, collection.class,
38
+ "@#{collection_name.to_s} is a WillPaginate collection."
39
+ end
40
+ end
41
+
42
+ def self.should_not_display_pagination
43
+ should "not display pagination" do
44
+ assert_select "div.pagination", { :count => 0 },
45
+ "View is displaying pagination. Check your logic."
46
+ end
47
+ end
48
+ end
49
+
50
+
51
+ class ActiveSupport::TestCase
52
+ extend ShouldaPaginationMacros
53
+ end
@@ -0,0 +1,34 @@
1
+ module ShouldaPluginMacros
2
+
3
+ def self.should_act_as_taggable_on_steroids
4
+ klass = self.name.gsub(/Test$/, '').constantize
5
+
6
+ should "include ActsAsTaggableOnSteroids methods" do
7
+ assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::ClassMethods)
8
+ assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::SingletonMethods)
9
+ assert klass.include?(ActiveRecord::Acts::Taggable::InstanceMethods)
10
+ end
11
+
12
+ should_have_many :taggings, :tags
13
+ end
14
+
15
+
16
+ def self.should_act_as_list
17
+ klass = self.name.gsub(/Test$/, '').constantize
18
+
19
+ context "To support acts_as_list" do
20
+ should_have_db_column('position', :type => :integer)
21
+ end
22
+
23
+ should "include ActsAsList methods" do
24
+ assert klass.include?(ActiveRecord::Acts::List::InstanceMethods)
25
+ end
26
+
27
+ should_have_instance_methods :acts_as_list_class, :position_column, :scope_condition
28
+ end
29
+
30
+ end
31
+
32
+ ActiveSupport::TestCase.extend(ShouldaPluginMacros)
33
+ Test::Unit::TestCase.extend(ShouldaPluginMacros)
34
+ ActionController::TestCase.extend(ShouldaPluginMacros)
@@ -0,0 +1,38 @@
1
+ $:.reject! { |e| e.include? 'TextMate' }
2
+ ENV["RAILS_ENV"] = "test"
3
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
4
+ require 'test_help'
5
+ gem 'thoughtbot-factory_girl' # from github
6
+ require 'factory_girl'
7
+ require 'mocha'
8
+ require 'authlogic/test_case'
9
+ require 'redgreen' rescue LoadError
10
+ require File.expand_path(File.dirname(__FILE__) + '/factories')
11
+ require File.join(File.dirname(__FILE__), 'shoulda_macros', 'controller')
12
+ require File.join(File.dirname(__FILE__), 'shoulda_macros', 'models')
13
+
14
+ class ActiveSupport::TestCase
15
+ self.use_transactional_fixtures = true
16
+ self.use_instantiated_fixtures = false
17
+
18
+ include Authlogic::TestCase
19
+
20
+ def login_as(user)
21
+ success = UserSession.create(user)
22
+ if !success
23
+ errors = user.errors.full_messages.to_sentence
24
+ message = 'User has not been activated' if !user.active?
25
+ raise "could not login as #{user.to_param}. Please make sure the user is valid. #{message} #{errors}"
26
+ end
27
+ UserSession.find
28
+ end
29
+
30
+ def assure_logout
31
+ user_session = UserSession.find
32
+ user_session.destroy if user_session
33
+ end
34
+
35
+ def ensure_flash(val)
36
+ assert_contains flash.values, val, ", Flash: #{flash.inspect}"
37
+ end
38
+ end
File without changes
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'friend_mailer'
3
+
4
+ class FriendMailerTest < ActiveSupport::TestCase
5
+
6
+ context "deliver emails" do
7
+
8
+ def setup
9
+ ActionMailer::Base.delivery_method = :test
10
+ ActionMailer::Base.perform_deliveries = true
11
+ ActionMailer::Base.deliveries = []
12
+ @expected = TMail::Mail.new
13
+ @expected.set_content_type "text", "plain", { "charset" => 'utf-8' }
14
+ end
15
+
16
+ should "send follow email" do
17
+ inviter = Factory(:user)
18
+ invited = Factory(:user)
19
+ response = FriendMailer.deliver_follow(inviter, invited)
20
+ assert !ActionMailer::Base.deliveries.empty?, "No email was sent"
21
+ email = ActionMailer::Base.deliveries.last
22
+ assert_equal [invited.email], email.to
23
+ assert_equal [GlobalConfig.from_email], email.from
24
+ end
25
+
26
+ should "send friend_request email" do
27
+ inviter = Factory(:user)
28
+ invited = Factory(:user)
29
+ response = FriendMailer.deliver_friend_request(inviter, invited)
30
+ assert !ActionMailer::Base.deliveries.empty?, "No email was sent"
31
+ email = ActionMailer::Base.deliveries.last
32
+ assert_equal [invited.email], email.to
33
+ assert_equal [GlobalConfig.from_email], email.from
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,186 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ # Used to test muck_friend
4
+ class FriendTest < ActiveSupport::TestCase
5
+
6
+ context "A Friend instance" do
7
+ should_belong_to :inviter
8
+ should_belong_to :invited
9
+ end
10
+
11
+ context "friending" do
12
+ setup do
13
+ @aaron = Factory(:user)
14
+ @quentin = Factory(:user)
15
+ @friend_guy = Factory(:user)
16
+ @follower_guy = Factory(:user)
17
+ end
18
+
19
+ should "be able to start and stop following aaron" do
20
+ Friend.destroy_all
21
+ assert !@friend_guy.following?(@aaron)
22
+ assert_difference "Friend.count" do
23
+ Friend.add_follower(@friend_guy, @aaron)
24
+ @aaron.reload
25
+ @friend_guy.reload
26
+ assert @friend_guy.following?(@aaron)
27
+ end
28
+ assert_difference "Friend.count", -1 do
29
+ Friend.stop_following(@friend_guy, @aaron)
30
+ @aaron.reload and @friend_guy.reload
31
+ assert !@friend_guy.following?(@aaron)
32
+ end
33
+ end
34
+
35
+ should "not have any effect on friends" do
36
+ Friend.destroy_all
37
+ assert_no_difference "Friend.count" do
38
+ assert !Friend.stop_following(@friend_guy, @aaron)
39
+ end
40
+ assert_no_difference "Friend.count" do
41
+ assert !Friend.stop_being_friends(@friend_guy, @aaron)
42
+ end
43
+ end
44
+
45
+ should "not create an association with the same user" do
46
+ Friend.destroy_all
47
+ assert !Friend.add_follower(@quentin, @quentin)
48
+ assert_equal 0, Friend.count
49
+ end
50
+
51
+ should "create a new follower" do
52
+ Friend.destroy_all
53
+ assert Friend.add_follower(@quentin, @aaron)
54
+ assert_equal 1, Friend.count
55
+ assert !@quentin.reload.friend_of?(@aaron.reload)
56
+ assert @quentin.following?(@aaron)
57
+ assert @aaron.followed_by?(@quentin)
58
+ end
59
+
60
+ should "not find a following to turn into a friendship so just makes a follower" do
61
+ Friend.destroy_all
62
+ assert Friend.make_friends(@quentin, @aaron)
63
+ assert_equal 1, Friend.count
64
+ assert !@quentin.reload.friend_of?(@aaron.reload)
65
+ assert @quentin.following?(@aaron)
66
+ assert @aaron.followed_by?(@quentin)
67
+ end
68
+
69
+ should "turn a following into a friendship" do
70
+ Friend.destroy_all
71
+ assert Friend.add_follower(@quentin, @aaron)
72
+ assert_equal 1, Friend.count
73
+ assert Friend.make_friends(@aaron, @quentin)
74
+ assert_equal 2, Friend.count
75
+ @quentin.reload
76
+ @aaron.reload
77
+ assert @quentin.friend_of?(@aaron)
78
+ assert @aaron.friend_of?(@quentin)
79
+ end
80
+
81
+ should "turn a following into a friendship with reversed users" do
82
+ Friend.destroy_all
83
+ assert Friend.add_follower(@quentin, @aaron)
84
+ assert_equal 1, Friend.count
85
+ assert Friend.make_friends(@quentin, @aaron)
86
+ assert_equal 2, Friend.count
87
+ @quentin.reload
88
+ @aaron.reload
89
+ assert @quentin.friend_of?(@aaron)
90
+ assert @aaron.friend_of?(@quentin)
91
+ end
92
+
93
+ should "not find a friendship so can't stop being friends" do
94
+ Friend.destroy_all
95
+ assert !Friend.revert_to_follower(@quentin, @aaron)
96
+ end
97
+
98
+ should "revert to follower" do
99
+ Friend.destroy_all
100
+ assert Friend.add_follower(@quentin, @aaron)
101
+ assert Friend.make_friends(@quentin, @aaron)
102
+ assert_equal 2, Friend.count
103
+ @quentin.reload
104
+ @aaron.reload
105
+ assert Friend.revert_to_follower(@quentin, @aaron)
106
+ assert_equal 1, Friend.count
107
+ @quentin.reload
108
+ @aaron.reload
109
+ assert !@quentin.friend_of?(@aaron)
110
+ assert !@quentin.following?(@aaron)
111
+ assert @quentin.followed_by?(@aaron)
112
+ assert !@aaron.friend_of?(@quentin)
113
+ assert @aaron.following?(@quentin)
114
+ assert !@aaron.followed_by?(@quentin)
115
+ end
116
+
117
+ should "stop being friends" do
118
+ Friend.destroy_all
119
+ assert Friend.add_follower(@quentin, @aaron)
120
+ assert Friend.make_friends(@quentin, @aaron)
121
+ assert_equal 2, Friend.count
122
+ @quentin.reload
123
+ @aaron.reload
124
+ assert Friend.stop_being_friends(@quentin, @aaron)
125
+ @quentin.reload
126
+ @aaron.reload
127
+ assert !@quentin.friend_of?(@aaron)
128
+ assert !@quentin.following?(@aaron)
129
+ assert !@quentin.followed_by?(@aaron)
130
+ assert !@aaron.friend_of?(@quentin)
131
+ assert !@aaron.following?(@quentin)
132
+ assert !@aaron.followed_by?(@quentin)
133
+ end
134
+
135
+ should "block friend" do
136
+ Friend.destroy_all
137
+ assert Friend.add_follower(@quentin, @aaron)
138
+ assert Friend.make_friends(@quentin, @aaron)
139
+ Friend.block_user(@quentin, @aaron)
140
+ assert @quentin.blocked_users.include?(@aaron)
141
+ assert !@quentin.friend_of?(@aaron)
142
+ assert !@quentin.followed_by?(@aaron)
143
+ assert !@quentin.following?(@aaron)
144
+ assert !@aaron.friend_of?(@quentin)
145
+ assert !@aaron.followed_by?(@quentin)
146
+ assert !@aaron.following?(@quentin)
147
+ end
148
+
149
+ should "block follower" do
150
+ Friend.destroy_all
151
+ assert Friend.add_follower(@quentin, @aaron)
152
+ Friend.block_user(@aaron, @quentin)
153
+ assert @aaron.blocked_users.include?(@quentin)
154
+ assert !@quentin.friend_of?(@aaron)
155
+ assert !@quentin.following?(@aaron)
156
+ assert !@aaron.friend_of?(@quentin)
157
+ assert !@aaron.following?(@quentin)
158
+ assert !@aaron.followed_by?(@quentin)
159
+ end
160
+
161
+ should "ignore block user request" do
162
+ assert !Friend.block_user(nil, nil)
163
+ end
164
+
165
+ context "activities" do
166
+ setup do
167
+ @temp_enable_friend_activity = GlobalConfig.enable_friend_activity
168
+ GlobalConfig.enable_friend_activity = true
169
+ end
170
+ teardown do
171
+ GlobalConfig.enable_friend_activity = @temp_enable_friend_activity
172
+ end
173
+ should "add follow activity" do
174
+ assert_difference "Activity.count", 1 do
175
+ Friend.add_follower(@quentin, @aaron)
176
+ end
177
+ end
178
+ should "add friends with activity" do
179
+ assert_difference "Activity.count", 1 do
180
+ Friend.make_friends(@quentin, @aaron)
181
+ end
182
+ end
183
+ end
184
+ end
185
+
186
+ end
@@ -0,0 +1,170 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ # Used to test muck_friend_user
4
+ class UserTest < ActiveSupport::TestCase
5
+
6
+ context "user instance with acts_as_muck_friend_user" do
7
+ should_have_many :friendships
8
+ should_have_many :follower_friends
9
+ should_have_many :following_friends
10
+ should_have_many :blocked_friends
11
+
12
+ should_have_many :friends
13
+ should_have_many :followers
14
+ should_have_many :followings
15
+ should_have_many :blocked_users
16
+
17
+ should_have_many :initiated_by_me
18
+ should_have_many :not_initiated_by_me
19
+
20
+ should_have_many :friendships_initiated_by_me
21
+ should_have_many :friendships_not_initiated_by_me
22
+
23
+ should_have_many :occurances_as_friend
24
+ end
25
+
26
+ context "user as friend" do
27
+ setup do
28
+ Friend.destroy_all
29
+ @aaron = Factory(:user)
30
+ @quentin = Factory(:user)
31
+ @friend_guy = Factory(:user)
32
+ @follower_guy = Factory(:user)
33
+ end
34
+
35
+ should "become friends" do
36
+ assert @aaron.follow(@quentin)
37
+ assert @quentin.become_friends_with(@aaron)
38
+ debugger
39
+
40
+ end
41
+
42
+ should "have friends" do
43
+ @aaron.follow(@quentin)
44
+ @quentin.become_friends_with(@aaron)
45
+ @friend_guy.follow(@quentin)
46
+ @quentin.become_friends_with(@friend_guy)
47
+ @quentin.reload
48
+ @aaron.reload
49
+ @friend_guy.reload
50
+ assert @quentin.friends.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
51
+ assert @aaron.friends.any?{|f| f.id == @quentin.id}
52
+ assert @friend_guy.friends.any?{|f| f.id == @quentin.id}
53
+ end
54
+
55
+ should "not have follower as friend" do
56
+ @follower_guy.follow(@quentin)
57
+ assert !@quentin.friends.any?{|f| f.id == @follower_guy.id}
58
+ end
59
+
60
+ should "have followers" do
61
+ @follower_guy.follow(@quentin)
62
+ assert @quentin.followers.any?{|f| f.id == @follower_guy.id}
63
+ end
64
+
65
+ should "have people user follows (followings)" do
66
+ @follower_guy.follow(@quentin)
67
+ assert @follower_guy.followings.any?{|f| f.id == @quentin.id}
68
+ end
69
+
70
+ should "be a friend" do
71
+ @quentin.follow(@aaron)
72
+ @quentin.follow(@friend_guy)
73
+ @aaron.become_friends_with(@quentin)
74
+ @friend_guy.become_friends_with(@quentin)
75
+ assert_equal @quentin.occurances_as_friend.count, 2
76
+ end
77
+
78
+ should "find friendships initiated by me" do
79
+ @quentin.follow(@aaron)
80
+ @quentin.follow(@friend_guy)
81
+ assert_equal 2, @quentin.friendships_initiated_by_me.count
82
+ assert @quentin.friendships_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
83
+ end
84
+
85
+ should "find friendships not initiated by me" do
86
+ @aaron.follow(@quentin)
87
+ @friend_guy.follow(@quentin)
88
+ assert_equal 2, @quentin.friendships_not_initiated_by_me.count
89
+ assert @quentin.friendships_not_initiated_by_me.any?{|f| f.id == @aaron.id || f.id == @friend_guy.id}
90
+ end
91
+
92
+ should "follow the user" do
93
+ @quentin.follow(@aaron)
94
+ assert @quentin.followings.any?{|f| f.id == @aaron.id}
95
+ end
96
+
97
+ should "stop following the user" do
98
+ @quentin.follow(@aaron)
99
+ @quentin.stop_following(@aaron)
100
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
101
+ end
102
+
103
+ should "become friends" do
104
+ @quentin.follow(@aaron)
105
+ @aaron.become_friends_with(@quentin)
106
+ @quentin.reload
107
+ @aaron.reload
108
+ assert @aaron.friends.any?{|f| f.id == @quentin.id}
109
+ assert @quentin.friends.any?{|f| f.id == @aaron.id}
110
+ end
111
+
112
+ should "stop being friends" do
113
+ @temp_allow_following = GlobalConfig.allow_following
114
+ GlobalConfig.allow_following = false
115
+ @quentin.follow(@aaron)
116
+ @aaron.become_friends_with(@quentin)
117
+ @quentin.drop_friend(@aaron)
118
+ assert !@quentin.friend_of?(@aaron)
119
+ assert !@quentin.following?(@aaron)
120
+ assert !@quentin.followed_by?(@aaron)
121
+ assert !@aaron.friend_of?(@quentin)
122
+ assert !@aaron.following?(@quentin)
123
+ assert !@aaron.followed_by?(@quentin)
124
+ GlobalConfig.allow_following = @temp_allow_following
125
+ end
126
+
127
+ should "stop being friends but still allow follow" do
128
+ @temp_allow_following = GlobalConfig.allow_following
129
+ GlobalConfig.allow_following = true
130
+ @quentin.follow(@aaron)
131
+ @aaron.become_friends_with(@quentin)
132
+ @quentin.drop_friend(@aaron)
133
+ @quentin.reload
134
+ @aaron.reload
135
+ assert !@quentin.friend_of?(@aaron)
136
+ assert !@quentin.following?(@aaron)
137
+ assert @quentin.followed_by?(@aaron)
138
+ assert !@aaron.friend_of?(@quentin)
139
+ assert @aaron.following?(@quentin)
140
+ assert !@aaron.followed_by?(@quentin)
141
+ GlobalConfig.allow_following = @temp_allow_following
142
+ end
143
+
144
+ should "not have a network" do
145
+ assert !@quentin.has_network?
146
+ end
147
+
148
+ should "have a network" do
149
+ @quentin.follow(@aaron)
150
+ assert @quentin.has_network?
151
+ end
152
+
153
+ should "block user" do
154
+ @quentin.follow(@aaron)
155
+ @aaron.block_user(@quentin)
156
+ assert !@aaron.friends.any?{|f| f.id == @quentin.id}
157
+ assert !@aaron.followers.any?{|f| f.id == @quentin.id}
158
+ assert !@quentin.followings.any?{|f| f.id == @aaron.id}
159
+ end
160
+
161
+ should "unblock user" do
162
+ @quentin.follow(@aaron)
163
+ @aaron.block_user(@quentin)
164
+ @aaron.unblock_user(@quentin)
165
+ assert @aaron.followers.any?{|f| f.id == @quentin.id}
166
+ assert @quentin.followings.any?{|f| f.id == @aaron.id}
167
+ end
168
+ end
169
+
170
+ end