backlog 0.37.2 → 0.41.4

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 (568) hide show
  1. checksums.yaml +7 -0
  2. data/History.txt +128 -0
  3. data/README.txt +4 -2
  4. data/bin/backlog +1 -1
  5. data/lib/array_helper.rb +4 -4
  6. data/{vendor/plugins → lib}/backlog_jira/README +0 -0
  7. data/{vendor/plugins → lib}/backlog_jira/Rakefile +0 -0
  8. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/backlog_jira_generator.rb +0 -0
  9. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/templates/migration.rb +0 -0
  10. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/history_model_generator.rb +0 -0
  11. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/fixtures.yml +0 -0
  12. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/functional_test.rb +0 -0
  13. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/model.rb +0 -0
  14. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/unit_test.rb +0 -0
  15. data/lib/backlog_jira/init.rb +66 -0
  16. data/{vendor/plugins → lib}/backlog_jira/install.rb +0 -0
  17. data/{vendor/plugins → lib}/backlog_jira/lib/backlog_jira.rb +0 -0
  18. data/{vendor/plugins → lib}/backlog_jira/lib/tasks/backlog_jira_tasks.rake +0 -0
  19. data/{vendor/plugins → lib}/backlog_jira/test/backlog_jira_test.rb +0 -0
  20. data/{vendor/plugins → lib}/backlog_jira/uninstall.rb +0 -0
  21. data/lib/big_decimal_yaml_fix.rb +16 -25
  22. data/lib/tasks/backup.rake +18 -18
  23. data/lib/time_extras.rb +6 -6
  24. data/lib/user_system.rb +41 -38
  25. data/lib/version_from_history.rb +2 -2
  26. metadata +196 -749
  27. data/Capfile +0 -2
  28. data/Gemfile +0 -34
  29. data/Gemfile.lock +0 -139
  30. data/MODIFICATIONS.txt +0 -13
  31. data/Manifest.txt +0 -0
  32. data/README_LOGIN_SUGAR +0 -194
  33. data/Rakefile +0 -73
  34. data/Rakefile~ +0 -73
  35. data/Screenshot.png +0 -0
  36. data/app/controllers/absences_controller.rb +0 -67
  37. data/app/controllers/application_controller.rb +0 -185
  38. data/app/controllers/application_controller.rb.rails2 +0 -186
  39. data/app/controllers/customers_controller.rb +0 -51
  40. data/app/controllers/dashboard_controller.rb +0 -17
  41. data/app/controllers/estimates_controller.rb +0 -49
  42. data/app/controllers/groups_controller.rb +0 -65
  43. data/app/controllers/parties_controller.rb +0 -33
  44. data/app/controllers/periods_controller.rb +0 -242
  45. data/app/controllers/projects_controller.rb +0 -185
  46. data/app/controllers/public_holidays_controller.rb +0 -70
  47. data/app/controllers/search_controller.rb +0 -15
  48. data/app/controllers/task_files_controller.rb +0 -19
  49. data/app/controllers/tasks_controller.rb +0 -305
  50. data/app/controllers/user_controller.rb +0 -251
  51. data/app/controllers/welcome_controller.rb +0 -29
  52. data/app/controllers/work_locks_controller.rb +0 -88
  53. data/app/controllers/works_controller.rb +0 -383
  54. data/app/helpers/absences_helper.rb +0 -2
  55. data/app/helpers/application_helper.rb +0 -119
  56. data/app/helpers/application_helper.rb.rails2 +0 -118
  57. data/app/helpers/customers_helper.rb +0 -2
  58. data/app/helpers/dashboard_helper.rb +0 -2
  59. data/app/helpers/estimates_helper.rb +0 -2
  60. data/app/helpers/groups_helper.rb +0 -2
  61. data/app/helpers/parties_helper.rb +0 -2
  62. data/app/helpers/periods_helper.rb +0 -57
  63. data/app/helpers/projects_helper.rb +0 -74
  64. data/app/helpers/public_holidays_helper.rb +0 -2
  65. data/app/helpers/search_helper.rb +0 -2
  66. data/app/helpers/task_files_helper.rb +0 -2
  67. data/app/helpers/tasks_helper.rb +0 -2
  68. data/app/helpers/user_helper.rb +0 -53
  69. data/app/helpers/welcome_helper.rb +0 -2
  70. data/app/helpers/work_locks_helper.rb +0 -2
  71. data/app/helpers/works_helper.rb +0 -5
  72. data/app/mailers/user_notify.rb +0 -76
  73. data/app/models/absence.rb +0 -27
  74. data/app/models/chart.rb +0 -5
  75. data/app/models/clock.rb +0 -14
  76. data/app/models/configuration.rb +0 -2
  77. data/app/models/customer.rb +0 -2
  78. data/app/models/estimate.rb +0 -17
  79. data/app/models/group.rb +0 -16
  80. data/app/models/party.rb +0 -27
  81. data/app/models/period.rb +0 -251
  82. data/app/models/project.rb +0 -49
  83. data/app/models/public_holiday.rb +0 -13
  84. data/app/models/report_filter.rb +0 -29
  85. data/app/models/search_result.rb +0 -8
  86. data/app/models/sidebar.rb +0 -41
  87. data/app/models/task.rb +0 -425
  88. data/app/models/task_file.rb +0 -7
  89. data/app/models/task_notify.rb +0 -27
  90. data/app/models/user.rb +0 -146
  91. data/app/models/work.rb +0 -191
  92. data/app/models/work_lock.rb +0 -11
  93. data/app/models/work_lock_nagger.rb +0 -60
  94. data/app/models/work_lock_notify.rb +0 -43
  95. data/app/models/works_report_filter.rb +0 -27
  96. data/app/views/absences/_form.rhtml +0 -10
  97. data/app/views/absences/edit.rhtml +0 -9
  98. data/app/views/absences/list.rhtml +0 -25
  99. data/app/views/absences/new.rhtml +0 -8
  100. data/app/views/absences/show.rhtml +0 -8
  101. data/app/views/customers/_form.rhtml +0 -7
  102. data/app/views/customers/_name_list.rhtml +0 -5
  103. data/app/views/customers/edit.rhtml +0 -9
  104. data/app/views/customers/list.rhtml +0 -28
  105. data/app/views/customers/new.rhtml +0 -8
  106. data/app/views/customers/show.rhtml +0 -8
  107. data/app/views/dashboard/show.rhtml +0 -24
  108. data/app/views/display_notice.rjs +0 -1
  109. data/app/views/groups/_form.rhtml +0 -7
  110. data/app/views/groups/edit.rhtml +0 -57
  111. data/app/views/groups/list.rhtml +0 -26
  112. data/app/views/groups/new.rhtml +0 -7
  113. data/app/views/groups/set_member.rjs +0 -1
  114. data/app/views/layouts/_headers.rhtml +0 -24
  115. data/app/views/layouts/_left_top.rhtml +0 -33
  116. data/app/views/layouts/_notice.rhtml +0 -12
  117. data/app/views/layouts/_shortcuts.rhtml +0 -22
  118. data/app/views/layouts/_shortcuts_js.rhtml +0 -19
  119. data/app/views/layouts/mwrt002.html.erb +0 -44
  120. data/app/views/layouts/wide.rhtml +0 -23
  121. data/app/views/periods/_burn_down_chart.rhtml +0 -9
  122. data/app/views/periods/_form.rhtml +0 -74
  123. data/app/views/periods/_link.rhtml +0 -3
  124. data/app/views/periods/_show_active.rhtml +0 -61
  125. data/app/views/periods/_sidebar_block.rhtml +0 -11
  126. data/app/views/periods/_title.rhtml +0 -18
  127. data/app/views/periods/edit.rhtml +0 -10
  128. data/app/views/periods/finish_task.rjs +0 -4
  129. data/app/views/periods/move_task_to_period.rjs +0 -4
  130. data/app/views/periods/new.rhtml +0 -9
  131. data/app/views/periods/order.rjs +0 -0
  132. data/app/views/periods/reopen_task.rjs +0 -6
  133. data/app/views/periods/show.rhtml +0 -56
  134. data/app/views/projects/_buttons.rhtml +0 -4
  135. data/app/views/projects/_form.rhtml +0 -44
  136. data/app/views/projects/_name_list.rhtml +0 -5
  137. data/app/views/projects/edit.rhtml +0 -14
  138. data/app/views/projects/finish_task.rjs +0 -3
  139. data/app/views/projects/list.rhtml +0 -16
  140. data/app/views/projects/move_task_to_period.rjs +0 -3
  141. data/app/views/projects/new.rhtml +0 -11
  142. data/app/views/projects/reopen_task.rjs +0 -3
  143. data/app/views/projects/show.rhtml +0 -39
  144. data/app/views/public_holidays/_form.rhtml +0 -7
  145. data/app/views/public_holidays/edit.rhtml +0 -9
  146. data/app/views/public_holidays/list.rhtml +0 -25
  147. data/app/views/public_holidays/new.rhtml +0 -8
  148. data/app/views/public_holidays/show.rhtml +0 -8
  149. data/app/views/redirect.rjs +0 -1
  150. data/app/views/search/results.rhtml +0 -40
  151. data/app/views/task_notify/invite.en.html.erb +0 -13
  152. data/app/views/task_notify/invite.no.html.erb +0 -13
  153. data/app/views/tasks/_backlog_header.rhtml +0 -17
  154. data/app/views/tasks/_completed.rhtml +0 -18
  155. data/app/views/tasks/_fields_header.rhtml +0 -13
  156. data/app/views/tasks/_form.rhtml +0 -125
  157. data/app/views/tasks/_invite.rjs +0 -1
  158. data/app/views/tasks/_period_header.rhtml +0 -1
  159. data/app/views/tasks/_task.rhtml +0 -116
  160. data/app/views/tasks/_update.rjs +0 -2
  161. data/app/views/tasks/edit.rhtml +0 -81
  162. data/app/views/tasks/grab.rhtml +0 -9
  163. data/app/views/tasks/invite.rhtml +0 -9
  164. data/app/views/tasks/list.rhtml +0 -77
  165. data/app/views/tasks/list_started.rhtml +0 -62
  166. data/app/views/tasks/new.rhtml +0 -10
  167. data/app/views/tasks/notes.rhtml +0 -12
  168. data/app/views/tasks/start_work.rjs +0 -1
  169. data/app/views/tasks/update_estimate.rjs +0 -3
  170. data/app/views/user/_edit.rhtml +0 -31
  171. data/app/views/user/_password.rhtml +0 -21
  172. data/app/views/user/change_password.rhtml +0 -19
  173. data/app/views/user/delete.rhtml +0 -14
  174. data/app/views/user/edit.rhtml +0 -154
  175. data/app/views/user/forgot_password.rhtml +0 -19
  176. data/app/views/user/login.rhtml +0 -33
  177. data/app/views/user/logout.rhtml +0 -8
  178. data/app/views/user/set_group.rjs +0 -1
  179. data/app/views/user/signup.rhtml +0 -15
  180. data/app/views/user/toggle_work_lock_monitoring.rjs +0 -2
  181. data/app/views/user/welcome.rhtml +0 -8
  182. data/app/views/user_notify/change_password.en.html.erb +0 -10
  183. data/app/views/user_notify/change_password.no.html.erb +0 -10
  184. data/app/views/user_notify/forgot_password.en.html.erb +0 -11
  185. data/app/views/user_notify/forgot_password.no.html.erb +0 -11
  186. data/app/views/user_notify/monitoring.en.html.erb +0 -3
  187. data/app/views/user_notify/monitoring.no.html.erb +0 -3
  188. data/app/views/user_notify/monitoring_invitation.en.html.erb +0 -7
  189. data/app/views/user_notify/monitoring_invitation.no.html.erb +0 -7
  190. data/app/views/user_notify/signup.en.html.erb +0 -12
  191. data/app/views/user_notify/signup.no.html.erb +0 -12
  192. data/app/views/work_lock_notify/lock.en.html.erb +0 -7
  193. data/app/views/work_lock_notify/lock.no.html.erb +0 -7
  194. data/app/views/work_lock_notify/nag.en.html.erb +0 -6
  195. data/app/views/work_lock_notify/nag.no.html.erb +0 -7
  196. data/app/views/work_locks/_form.rhtml +0 -10
  197. data/app/views/work_locks/edit.rhtml +0 -9
  198. data/app/views/work_locks/list.rhtml +0 -25
  199. data/app/views/work_locks/new.rhtml +0 -8
  200. data/app/views/work_locks/show.rhtml +0 -8
  201. data/app/views/works/_buttons.rhtml +0 -2
  202. data/app/views/works/_description_list.rhtml +0 -5
  203. data/app/views/works/_form.rhtml +0 -107
  204. data/app/views/works/_new_row.rhtml +0 -141
  205. data/app/views/works/_row.rhtml +0 -115
  206. data/app/views/works/_row_field.rhtml +0 -17
  207. data/app/views/works/_task_id_list.rhtml +0 -5
  208. data/app/views/works/_weekly_work_sheet_buttons.rhtml +0 -22
  209. data/app/views/works/daily_work_sheet.rhtml +0 -108
  210. data/app/views/works/edit.rhtml +0 -11
  211. data/app/views/works/list.rhtml +0 -148
  212. data/app/views/works/list_excel.rhtml +0 -114
  213. data/app/views/works/new.rhtml +0 -12
  214. data/app/views/works/show.rhtml +0 -10
  215. data/app/views/works/timeliste.rhtml +0 -884
  216. data/app/views/works/update_new_row.rjs +0 -28
  217. data/app/views/works/update_row.rjs +0 -18
  218. data/app/views/works/update_time.rjs +0 -3
  219. data/app/views/works/weekly_work_sheet.rhtml +0 -64
  220. data/app/views/works/weekly_work_sheet_details.rhtml +0 -102
  221. data/backlog.gemspec +0 -44
  222. data/config.ru +0 -4
  223. data/config/application.rb +0 -11
  224. data/config/boot.rb +0 -13
  225. data/config/database.yml +0 -15
  226. data/config/database.yml~ +0 -17
  227. data/config/environment.rb +0 -100
  228. data/config/environments/development.rb +0 -30
  229. data/config/environments/development.rb.rails2 +0 -26
  230. data/config/environments/production.rb +0 -33
  231. data/config/environments/test.rb +0 -24
  232. data/config/environments/user_environment.rb +0 -21
  233. data/config/initializers/backtrace_silencers.rb +0 -7
  234. data/config/initializers/inflections.rb +0 -10
  235. data/config/initializers/jdbc.rb +0 -7
  236. data/config/initializers/mime_types.rb +0 -5
  237. data/config/initializers/secret_token.rb +0 -7
  238. data/config/initializers/session_store.rb +0 -8
  239. data/config/locales/en.yml +0 -200
  240. data/config/locales/no.yml +0 -193
  241. data/config/mime_types.yaml +0 -1
  242. data/config/routes.rb +0 -5
  243. data/config/war.rb +0 -27
  244. data/config/warble.rb +0 -84
  245. data/cruise_build.sh +0 -14
  246. data/cruise_config.rb +0 -5
  247. data/db/migrate/001_create_tasks.rb +0 -22
  248. data/db/migrate/003_add_estimation_points.rb +0 -16
  249. data/db/migrate/004_add_period.rb +0 -63
  250. data/db/migrate/005_add_field_work_started_at.rb +0 -9
  251. data/db/migrate/006_works_data_fix.rb +0 -13
  252. data/db/migrate/007_add_task_created_at.rb +0 -23
  253. data/db/migrate/008_add_backlog_options.rb +0 -13
  254. data/db/migrate/009_add_subtasks.rb +0 -29
  255. data/db/migrate/010_add_work_start.rb +0 -9
  256. data/db/migrate/011_login_sugar.rb +0 -21
  257. data/db/migrate/012_add_resolution.rb +0 -12
  258. data/db/migrate/013_create_estimates.rb +0 -20
  259. data/db/migrate/014_add_customer_option.rb +0 -11
  260. data/db/migrate/015_add_user_option.rb +0 -33
  261. data/db/migrate/016_add_invoicable_flag.rb +0 -11
  262. data/db/migrate/017_increase_backlog_name_limit.rb +0 -10
  263. data/db/migrate/018_create_groups.rb +0 -118
  264. data/db/migrate/019_remove_unique_index_for_period_position.rb +0 -9
  265. data/db/migrate/020_create_task_files.rb +0 -17
  266. data/db/migrate/021_create_work_accounts.rb +0 -111
  267. data/db/migrate/022_remove_track_done_flag.rb +0 -9
  268. data/db/migrate/023_add_indices_for_burn_down_chart.rb +0 -13
  269. data/db/migrate/024_add_sprint_option.rb +0 -10
  270. data/db/migrate/025_add_simple_auditing_of_tasks.rb +0 -11
  271. data/db/migrate/026_add_users_to_tasks.rb +0 -14
  272. data/db/migrate/027_create_work_locks.rb +0 -25
  273. data/db/migrate/028_create_absences.rb +0 -34
  274. data/db/migrate/029_add_work_comments.rb +0 -9
  275. data/db/migrate/030_create_public_holidays.rb +0 -11
  276. data/db/migrate/031_expand_work_done_precision.rb +0 -9
  277. data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +0 -74
  278. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +0 -22
  279. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +0 -22
  280. data/db/schema.rb +0 -159
  281. data/db/seeds.rb +0 -7
  282. data/db/test.db +0 -0
  283. data/etc/backlog.conf +0 -32
  284. data/ext/mkrf_conf.rb +0 -26
  285. data/lib/class_table_inheritance.rb +0 -224
  286. data/lib/postgresql-8.2-504.jdbc4.jar +0 -0
  287. data/lib/tasks/jdbc.rake +0 -8
  288. data/lib/url_for_fix.rb +0 -30
  289. data/nbproject/private/config.properties +0 -0
  290. data/nbproject/private/private.properties +0 -1
  291. data/nbproject/private/private.xml +0 -4
  292. data/nbproject/private/rake-t.txt +0 -95
  293. data/nbproject/project.properties +0 -4
  294. data/nbproject/project.xml +0 -9
  295. data/public/404.html +0 -26
  296. data/public/422.html +0 -26
  297. data/public/500.html +0 -26
  298. data/public/Frav/303/246rsskjema.xls +0 -0
  299. data/public/applets/bsf.jar +0 -0
  300. data/public/applets/jruby.jar +0 -0
  301. data/public/favicon.ico +0 -0
  302. data/public/images/add.png +0 -0
  303. data/public/images/add.svg +0 -70
  304. data/public/images/ajax-loading.gif +0 -0
  305. data/public/images/appunti_architetto_franc_01.svg +0 -92
  306. data/public/images/arrow-down.gif +0 -0
  307. data/public/images/arrow-up.gif +0 -0
  308. data/public/images/arrow07_2.png +0 -0
  309. data/public/images/arrow07_4.png +0 -0
  310. data/public/images/arrow_down.png +0 -0
  311. data/public/images/arrow_down.svg +0 -59
  312. data/public/images/arrow_left.png +0 -0
  313. data/public/images/arrow_left.svg +0 -59
  314. data/public/images/arrow_right.png +0 -0
  315. data/public/images/arrow_right.svg +0 -59
  316. data/public/images/arrow_up.png +0 -0
  317. data/public/images/arrow_up.svg +0 -59
  318. data/public/images/black-70.png +0 -0
  319. data/public/images/black.png +0 -0
  320. data/public/images/blank.jpg +0 -0
  321. data/public/images/blank.png +0 -0
  322. data/public/images/cestino_pieno_architetto_01.svg +0 -470
  323. data/public/images/checkmark.png +0 -0
  324. data/public/images/checkmark_org.png +0 -0
  325. data/public/images/clipboard.png +0 -0
  326. data/public/images/clipboard.svg +0 -62
  327. data/public/images/construction_hammer_jon__01.svg +0 -116
  328. data/public/images/delete.png +0 -0
  329. data/public/images/email.png +0 -0
  330. data/public/images/email_grey.png +0 -0
  331. data/public/images/eraser.png +0 -0
  332. data/public/images/eraser_org.png +0 -0
  333. data/public/images/ernes_stop.png +0 -0
  334. data/public/images/ernes_stop_org.png +0 -0
  335. data/public/images/flag_red.png +0 -0
  336. data/public/images/flag_yellow.png +0 -0
  337. data/public/images/grab.png +0 -0
  338. data/public/images/grab_gray.png +0 -0
  339. data/public/images/group.png +0 -0
  340. data/public/images/hammer.png +0 -0
  341. data/public/images/header.jpg +0 -0
  342. data/public/images/nextlabel.gif +0 -0
  343. data/public/images/pagebak.jpg +0 -0
  344. data/public/images/paper3.svg +0 -54
  345. data/public/images/period.png +0 -0
  346. data/public/images/period_org.png +0 -0
  347. data/public/images/person.org.png +0 -0
  348. data/public/images/prevlabel.gif +0 -0
  349. data/public/images/question.svg +0 -56
  350. data/public/images/rails.png +0 -0
  351. data/public/images/refresh.png +0 -0
  352. data/public/images/rmagick.gif +0 -0
  353. data/public/images/rmagick_270.gif +0 -0
  354. data/public/images/tabella_architetto_franc_01.svg +0 -105
  355. data/public/images/task.png +0 -0
  356. data/public/images/text-x-generic.png +0 -0
  357. data/public/images/user group.png +0 -0
  358. data/public/images/user.png +0 -0
  359. data/public/images/view_fullscreen.png +0 -0
  360. data/public/images/work_account.png +0 -0
  361. data/public/javascripts/application.js +0 -2
  362. data/public/javascripts/builder.js +0 -136
  363. data/public/javascripts/controls.js +0 -965
  364. data/public/javascripts/dragdrop.js +0 -974
  365. data/public/javascripts/effects.js +0 -1123
  366. data/public/javascripts/lightwindow.js +0 -1921
  367. data/public/javascripts/prototype.js +0 -6001
  368. data/public/javascripts/rails.js +0 -175
  369. data/public/javascripts/ruby.js +0 -46
  370. data/public/javascripts/scriptaculous.js +0 -58
  371. data/public/javascripts/slider.js +0 -275
  372. data/public/javascripts/sound.js +0 -55
  373. data/public/javascripts/unittest.js +0 -568
  374. data/public/javascripts/zapatec/utils/transport.js +0 -2217
  375. data/public/javascripts/zapatec/utils/utils.js +0 -1799
  376. data/public/javascripts/zapatec/utils/zapatec.js +0 -90
  377. data/public/javascripts/zapatec/utils/zpeventdriven.js +0 -212
  378. data/public/javascripts/zapatec/utils/zpwidget.js +0 -729
  379. data/public/javascripts/zapatec/zpcal/lang/calendar-no.js +0 -124
  380. data/public/javascripts/zapatec/zpcal/src/calendar-core.js +0 -2878
  381. data/public/javascripts/zapatec/zpcal/src/calendar-date-core.js +0 -348
  382. data/public/javascripts/zapatec/zpcal/src/calendar-setup.js +0 -360
  383. data/public/javascripts/zapatec/zpcal/src/calendar.js +0 -35
  384. data/public/robots.txt +0 -5
  385. data/public/stylesheets/backlog.css +0 -135
  386. data/public/stylesheets/lightwindow.css +0 -376
  387. data/public/stylesheets/mwrt002.css +0 -54
  388. data/public/stylesheets/mwrt002MAC.css +0 -3
  389. data/public/stylesheets/mwrt002NN.css +0 -3
  390. data/public/stylesheets/scaffold.css +0 -74
  391. data/public/stylesheets/user.css +0 -74
  392. data/public/stylesheets/zpcal/themes/green.css +0 -153
  393. data/public/stylesheets/zpcal/themes/layouts/layout-2d.css +0 -134
  394. data/public/stylesheets/zpcal/themes/layouts/layout-common.css +0 -74
  395. data/public/stylesheets/zpcal/themes/menuarrow.gif +0 -0
  396. data/public/stylesheets/zpcal/themes/scroller-down.gif +0 -0
  397. data/public/stylesheets/zpcal/themes/scroller-up.gif +0 -0
  398. data/script/rails +0 -6
  399. data/test/client/login.rb +0 -23
  400. data/test/client/login_test.rb +0 -64
  401. data/test/client/setup.rb +0 -25
  402. data/test/fixtures/absences.yml +0 -11
  403. data/test/fixtures/configurations.yml +0 -5
  404. data/test/fixtures/customers.yml +0 -7
  405. data/test/fixtures/estimates.yml +0 -10
  406. data/test/fixtures/groups.yml +0 -6
  407. data/test/fixtures/groups_users.yml +0 -3
  408. data/test/fixtures/parties.yml +0 -32
  409. data/test/fixtures/periods.yml +0 -24
  410. data/test/fixtures/projects.yml +0 -8
  411. data/test/fixtures/public_holidays.yml +0 -7
  412. data/test/fixtures/task_files.yml +0 -13
  413. data/test/fixtures/tasks.yml +0 -82
  414. data/test/fixtures/users.yml +0 -59
  415. data/test/fixtures/work_lock_subscriptions.yml +0 -7
  416. data/test/fixtures/work_locks.yml +0 -11
  417. data/test/fixtures/works.yml +0 -47
  418. data/test/functional/absences_controller_test.rb +0 -93
  419. data/test/functional/customers_controller_test.rb +0 -93
  420. data/test/functional/dashboard_controller_test.rb +0 -18
  421. data/test/functional/estimates_controller_test.rb +0 -40
  422. data/test/functional/groups_controller_test.rb +0 -120
  423. data/test/functional/parties_controller_test.rb +0 -35
  424. data/test/functional/periods_controller_test.rb +0 -297
  425. data/test/functional/projects_controller_test.rb +0 -152
  426. data/test/functional/public_holidays_controller_test.rb +0 -93
  427. data/test/functional/search_controller_test.rb +0 -24
  428. data/test/functional/task_files_controller_test.rb +0 -29
  429. data/test/functional/tasks_controller_test.rb +0 -229
  430. data/test/functional/user_controller_test.rb +0 -261
  431. data/test/functional/welcome_controller_test.rb +0 -62
  432. data/test/functional/work_locks_controller_test.rb +0 -93
  433. data/test/functional/works_controller_test.rb +0 -220
  434. data/test/integration/user_system_test.rb +0 -95
  435. data/test/mocks/test/clock.rb +0 -14
  436. data/test/performance/browsing_test.rb +0 -9
  437. data/test/performance/common.rb +0 -91
  438. data/test/performance/jetty_test.rb +0 -15
  439. data/test/performance/server_test.rb +0 -17
  440. data/test/test_helper.rb +0 -119
  441. data/test/test_helper.rb~ +0 -121
  442. data/test/unit/absence_test.rb +0 -29
  443. data/test/unit/big_decimal_yaml_fix_test.rb +0 -15
  444. data/test/unit/configuration_test.rb +0 -10
  445. data/test/unit/customer_test.rb +0 -10
  446. data/test/unit/estimate_test.rb +0 -10
  447. data/test/unit/group_test.rb +0 -10
  448. data/test/unit/party_test.rb +0 -10
  449. data/test/unit/period_test.rb +0 -9
  450. data/test/unit/public_holiday_test.rb +0 -10
  451. data/test/unit/task_file_test.rb +0 -10
  452. data/test/unit/task_test.rb +0 -73
  453. data/test/unit/time_of_day_test.rb +0 -23
  454. data/test/unit/user_test.rb +0 -148
  455. data/test/unit/work_lock_subscription_test.rb +0 -10
  456. data/test/unit/work_lock_test.rb +0 -10
  457. data/test/unit/work_test.rb +0 -81
  458. data/vendor/plugins/acts_as_list/README +0 -23
  459. data/vendor/plugins/acts_as_list/init.rb +0 -3
  460. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
  461. data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
  462. data/vendor/plugins/acts_as_tree/README +0 -26
  463. data/vendor/plugins/acts_as_tree/Rakefile +0 -22
  464. data/vendor/plugins/acts_as_tree/init.rb +0 -1
  465. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
  466. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  467. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -219
  468. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  469. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  470. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  471. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  472. data/vendor/plugins/assert_cookie/MIT-LICENSE +0 -7
  473. data/vendor/plugins/assert_cookie/README +0 -6
  474. data/vendor/plugins/assert_cookie/Rakefile +0 -21
  475. data/vendor/plugins/assert_cookie/init.rb +0 -1
  476. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -73
  477. data/vendor/plugins/assert_cookie/meta.yml +0 -7
  478. data/vendor/plugins/assert_cookie/test/test_assert_cookie.rb +0 -124
  479. data/vendor/plugins/assert_cookie/test/test_helper.rb +0 -31
  480. data/vendor/plugins/auto_complete/README +0 -23
  481. data/vendor/plugins/auto_complete/Rakefile +0 -22
  482. data/vendor/plugins/auto_complete/init.rb +0 -2
  483. data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  484. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  485. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
  486. data/vendor/plugins/backlog_jira/init.rb +0 -66
  487. data/vendor/plugins/dynamic_form/MIT-LICENSE +0 -20
  488. data/vendor/plugins/dynamic_form/README +0 -13
  489. data/vendor/plugins/dynamic_form/Rakefile +0 -10
  490. data/vendor/plugins/dynamic_form/dynamic_form.gemspec +0 -12
  491. data/vendor/plugins/dynamic_form/init.rb +0 -1
  492. data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +0 -300
  493. data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +0 -8
  494. data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +0 -5
  495. data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +0 -42
  496. data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +0 -370
  497. data/vendor/plugins/dynamic_form/test/test_helper.rb +0 -9
  498. data/vendor/plugins/has_history/README +0 -12
  499. data/vendor/plugins/has_history/Rakefile +0 -22
  500. data/vendor/plugins/has_history/generators/history_migration/history_migration_generator.rb +0 -30
  501. data/vendor/plugins/has_history/generators/history_migration/templates/migration.rb +0 -14
  502. data/vendor/plugins/has_history/generators/history_model/history_model_generator.rb +0 -39
  503. data/vendor/plugins/has_history/generators/history_model/templates/fixtures.yml +0 -17
  504. data/vendor/plugins/has_history/generators/history_model/templates/functional_test.rb +0 -129
  505. data/vendor/plugins/has_history/generators/history_model/templates/migration.rb +0 -14
  506. data/vendor/plugins/has_history/generators/history_model/templates/model.rb +0 -4
  507. data/vendor/plugins/has_history/generators/history_model/templates/unit_test.rb +0 -75
  508. data/vendor/plugins/has_history/init.rb +0 -5
  509. data/vendor/plugins/has_history/install.rb +0 -1
  510. data/vendor/plugins/has_history/lib/has_history.rb +0 -178
  511. data/vendor/plugins/has_history/lib/tasks/has_history_tasks.rake +0 -4
  512. data/vendor/plugins/has_history/test/has_history_test.rb +0 -31
  513. data/vendor/plugins/has_history/test/ignorant_master.rb +0 -3
  514. data/vendor/plugins/has_history/test/ignorant_master_history.rb +0 -4
  515. data/vendor/plugins/has_history/test/lone_master.rb +0 -42
  516. data/vendor/plugins/has_history/test/paired_master.rb +0 -5
  517. data/vendor/plugins/has_history/test/paired_master_history.rb +0 -5
  518. data/vendor/plugins/has_history/test/test_helper.rb +0 -154
  519. data/vendor/plugins/has_history/uninstall.rb +0 -1
  520. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
  521. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
  522. data/vendor/plugins/rails_time/MIT-LICENSE +0 -20
  523. data/vendor/plugins/rails_time/README +0 -28
  524. data/vendor/plugins/rails_time/init.rb +0 -2
  525. data/vendor/plugins/rails_time/lib/activerecord_time_extension.rb +0 -28
  526. data/vendor/plugins/rails_time/lib/time_of_day.rb +0 -88
  527. data/vendor/plugins/rails_time/test/database.yml +0 -18
  528. data/vendor/plugins/rails_time/test/debug.log +0 -1
  529. data/vendor/plugins/rails_time/test/rails_time_test.rb +0 -122
  530. data/vendor/plugins/rails_time/test/schema.rb +0 -10
  531. data/vendor/plugins/rails_time/test/test_helper.rb +0 -17
  532. data/vendor/plugins/verification/MIT-LICENSE +0 -20
  533. data/vendor/plugins/verification/README +0 -34
  534. data/vendor/plugins/verification/Rakefile +0 -22
  535. data/vendor/plugins/verification/init.rb +0 -3
  536. data/vendor/plugins/verification/lib/action_controller/verification.rb +0 -132
  537. data/vendor/plugins/verification/test/test_helper.rb +0 -18
  538. data/vendor/plugins/verification/test/verification_test.rb +0 -270
  539. data/vendor/plugins/will_paginate/LICENSE +0 -18
  540. data/vendor/plugins/will_paginate/README +0 -138
  541. data/vendor/plugins/will_paginate/Rakefile +0 -27
  542. data/vendor/plugins/will_paginate/init.rb +0 -4
  543. data/vendor/plugins/will_paginate/lib/will_paginate.rb +0 -61
  544. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +0 -132
  545. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +0 -80
  546. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +0 -181
  547. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +0 -206
  548. data/vendor/plugins/will_paginate/test/array_pagination_test.rb +0 -131
  549. data/vendor/plugins/will_paginate/test/boot.rb +0 -23
  550. data/vendor/plugins/will_paginate/test/console +0 -9
  551. data/vendor/plugins/will_paginate/test/finder_test.rb +0 -290
  552. data/vendor/plugins/will_paginate/test/fixtures/admin.rb +0 -3
  553. data/vendor/plugins/will_paginate/test/fixtures/developer.rb +0 -11
  554. data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +0 -13
  555. data/vendor/plugins/will_paginate/test/fixtures/project.rb +0 -15
  556. data/vendor/plugins/will_paginate/test/fixtures/projects.yml +0 -7
  557. data/vendor/plugins/will_paginate/test/fixtures/replies.yml +0 -34
  558. data/vendor/plugins/will_paginate/test/fixtures/reply.rb +0 -5
  559. data/vendor/plugins/will_paginate/test/fixtures/schema.rb +0 -38
  560. data/vendor/plugins/will_paginate/test/fixtures/topic.rb +0 -4
  561. data/vendor/plugins/will_paginate/test/fixtures/topics.yml +0 -30
  562. data/vendor/plugins/will_paginate/test/fixtures/user.rb +0 -2
  563. data/vendor/plugins/will_paginate/test/fixtures/users.yml +0 -35
  564. data/vendor/plugins/will_paginate/test/helper.rb +0 -25
  565. data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +0 -23
  566. data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +0 -67
  567. data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +0 -13
  568. data/vendor/plugins/will_paginate/test/pagination_test.rb +0 -240
@@ -1,18 +0,0 @@
1
- sqlite:
2
- :adapter: sqlite
3
- :dbfile: plugin.sqlite.db
4
- sqlite3:
5
- :adapter: sqlite3
6
- :dbfile: ":memory:"
7
- postgresql:
8
- :adapter: postgresql
9
- :username: postgres
10
- :password: postgres
11
- :database: plugin_test
12
- :min_messages: ERROR
13
- mysql:
14
- :adapter: mysql
15
- :host: localhost
16
- :username: rails
17
- :password:
18
- :database: plugin_test
@@ -1 +0,0 @@
1
- # Logfile created on Wed Nov 10 13:02:45 +0100 2010 by logger.rb/99999
@@ -1,122 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- class Thing < ActiveRecord::Base
4
- end
5
-
6
- def thing
7
- Thing.new(:name => "Thing One",:price_in_cents=> 125)
8
- end
9
-
10
- class RailsMoneyTest < Test::Unit::TestCase
11
-
12
- def test_should_return_price_as_money_object
13
- price = thing.price
14
- assert_kind_of Money, price
15
- assert_equal "$1.25", thing.price.to_s
16
- end
17
-
18
- def test_should_set_price_from_money_object
19
- thing1 = thing
20
- thing1.price = Money.new(1095)
21
- assert_equal 109500, thing1.price_in_cents
22
- assert_equal "$1,095.00", thing1.price.to_s
23
- end
24
-
25
- def test_should_set_price_from_fixnum
26
- thing1 = thing
27
- thing1.price = 1095
28
- assert_equal 109500, thing1.price_in_cents
29
- end
30
-
31
- def test_should_set_price_from_float
32
- thing1 = thing
33
- thing1.price = 10.95
34
- assert_equal 1095, thing1.price_in_cents
35
- end
36
-
37
- def test_should_set_price_from_string
38
- thing1 = thing
39
- thing1.price = "$10.95"
40
- assert_equal 1095, thing1.price_in_cents
41
- thing1.price = "10"
42
- assert_equal 1000, thing1.price_in_cents
43
- end
44
-
45
- def test_should_format_correctly
46
- assert_equal "$12.40", Money.new(12.40).to_s
47
- end
48
-
49
- def test_should_raise_exception_setting_invalid_price
50
- assert_raise(MoneyError) { thing.price = [] }
51
- end
52
- end
53
-
54
- class MoneyTest < Test::Unit::TestCase
55
-
56
- def test_should_create_money_object
57
- assert cash_money = Money.new(1290)
58
- assert_equal 129000, cash_money.cents
59
- assert_equal 1290, cash_money.dollars
60
- assert_equal "$1,290.00", cash_money.to_s
61
- assert_equal false, cash_money.free?
62
- assert_equal 0, Money.new(nil).cents
63
- end
64
-
65
- def test_should_create_money_object_from_float_with_proper_rounding
66
- money = Money.new(12.196)
67
- assert_equal 1220, money.cents
68
- assert_instance_of Fixnum, money.cents
69
- end
70
-
71
- def test_should_raise_exception_if_invalid_type_passed_to_initialize
72
- assert_raise(MoneyError) { Money.new([]) }
73
- end
74
-
75
- def test_should_return_free_on_to_s_if_cents_is_zero
76
- cash_money = Money.new(0)
77
- assert_equal 'free', cash_money.to_s
78
- assert_equal true, cash_money.free?
79
- assert_equal true, cash_money.zero?
80
- end
81
-
82
- def test_should_be_comparable
83
- assert Money.include?(Comparable)
84
- assert Money.new(0) == Money.new(0)
85
- end
86
-
87
- def test_should_add_money
88
- assert_equal Money.new(20.95), Money.new(10) + Money.new(10.95)
89
- assert_equal Money.new(2000), Money.new(1000) + 1000
90
- assert_equal Money.new(20.06), Money.new(10.00) + 10.056
91
- end
92
-
93
- def test_should_subtract_money
94
- assert_equal Money.new(500), Money.new(1000) - Money.new(500)
95
- assert_equal Money.new(500), Money.new(1000) - 500
96
- assert_equal Money.new(4.60), Money.new(10) - 5.40
97
- end
98
-
99
- def test_should_multiply_money
100
- assert_equal Money.new(500), Money.new(100) * 5
101
- assert_equal Money.new(9.99), Money.new(3.33) * 3
102
- assert_equal Money.new(11.99), Money.new(3.33) * 3.6 # 1198.9
103
- end
104
-
105
- def test_should_divide_money_and_retur_array_of_monies
106
- money_array = [Money.new(3.34), Money.new(3.33), Money.new(3.33)]
107
- assert_equal money_array, Money.new(10.00) / 3
108
- assert_equal [Money.new(2.00), Money.new(2.00)], Money.new(4.00) / 2
109
- assert_raises(MoneyError) { Money.new(4.00) / 2.2 }
110
- end
111
-
112
- def test_should_implement_to_money
113
- assert_equal Money.new(10), Money.new(10).to_money
114
- assert_equal Money.new(100.00), 100.00.to_money
115
- assert_equal Money.new(100.96), 100.956.to_money
116
- end
117
-
118
- def test_should_create_from_cents
119
- assert_equal Money.new(1.50), Money.create_from_cents(150)
120
- end
121
-
122
- end
@@ -1,10 +0,0 @@
1
- ActiveRecord::Schema.define(:version => 1) do
2
-
3
- # Create tables for testing your plugin
4
-
5
- create_table :things do |t|
6
- t.column :name, :string
7
- t.column :price_in_cents, :integer
8
- end
9
-
10
- end
@@ -1,17 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + '/../lib')
2
- RAILS_ROOT = File.dirname(__FILE__)
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'active_record'
7
- require "#{File.dirname(__FILE__)}/../init"
8
-
9
- config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
10
- ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
11
- ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
12
-
13
- load(File.dirname(__FILE__) + "/schema.rb") if File.exist?(File.dirname(__FILE__) + "/schema.rb")
14
-
15
-
16
-
17
-
@@ -1,20 +0,0 @@
1
- Copyright (c) 2010 David Heinemeier Hansson
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,34 +0,0 @@
1
- This module provides a class-level method for specifying that certain
2
- actions are guarded against being called without certain prerequisites
3
- being met. This is essentially a special kind of before_filter.
4
-
5
- An action may be guarded against being invoked without certain request
6
- parameters being set, or without certain session values existing.
7
-
8
- When a verification is violated, values may be inserted into the flash, and
9
- a specified redirection is triggered. If no specific action is configured,
10
- verification failures will by default result in a 400 Bad Request response.
11
-
12
- Usage:
13
-
14
- class GlobalController < ActionController::Base
15
- # Prevent the #update_settings action from being invoked unless
16
- # the 'admin_privileges' request parameter exists. The
17
- # settings action will be redirected to in current controller
18
- # if verification fails.
19
- verify :params => "admin_privileges", :only => :update_post,
20
- :redirect_to => { :action => "settings" }
21
-
22
- # Disallow a post from being updated if there was no information
23
- # submitted with the post, and if there is no active post in the
24
- # session, and if there is no "note" key in the flash. The route
25
- # named category_url will be redirected to if verification fails.
26
-
27
- verify :params => "post", :session => "post", "flash" => "note",
28
- :only => :update_post,
29
- :add_flash => { "alert" => "Failed to create your message" },
30
- :redirect_to => :category_url
31
-
32
- Note that these prerequisites are not business rules. They do not examine
33
- the content of the session or the parameters. That level of validation should
34
- be encapsulated by your domain model or helper methods in the controller.
@@ -1,22 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test the verification plugin.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.libs << 'test'
12
- t.pattern = 'test/**/*_test.rb'
13
- end
14
-
15
- desc 'Generate documentation for the verification plugin.'
16
- Rake::RDocTask.new(:rdoc) do |rdoc|
17
- rdoc.rdoc_dir = 'rdoc'
18
- rdoc.title = 'Verification'
19
- rdoc.options << '--line-numbers' << '--inline-source'
20
- rdoc.rdoc_files.include('README')
21
- rdoc.rdoc_files.include('lib/**/*.rb')
22
- end
@@ -1,3 +0,0 @@
1
- # Include hook code here
2
-
3
- require 'action_controller/verification'
@@ -1,132 +0,0 @@
1
- module ActionController #:nodoc:
2
- module Verification #:nodoc:
3
- extend ActiveSupport::Concern
4
-
5
- include AbstractController::Callbacks, Flash, Rendering
6
-
7
- # This module provides a class-level method for specifying that certain
8
- # actions are guarded against being called without certain prerequisites
9
- # being met. This is essentially a special kind of before_filter.
10
- #
11
- # An action may be guarded against being invoked without certain request
12
- # parameters being set, or without certain session values existing.
13
- #
14
- # When a verification is violated, values may be inserted into the flash, and
15
- # a specified redirection is triggered. If no specific action is configured,
16
- # verification failures will by default result in a 400 Bad Request response.
17
- #
18
- # Usage:
19
- #
20
- # class GlobalController < ActionController::Base
21
- # # Prevent the #update_settings action from being invoked unless
22
- # # the 'admin_privileges' request parameter exists. The
23
- # # settings action will be redirected to in current controller
24
- # # if verification fails.
25
- # verify :params => "admin_privileges", :only => :update_post,
26
- # :redirect_to => { :action => "settings" }
27
- #
28
- # # Disallow a post from being updated if there was no information
29
- # # submitted with the post, and if there is no active post in the
30
- # # session, and if there is no "note" key in the flash. The route
31
- # # named category_url will be redirected to if verification fails.
32
- #
33
- # verify :params => "post", :session => "post", "flash" => "note",
34
- # :only => :update_post,
35
- # :add_flash => { "alert" => "Failed to create your message" },
36
- # :redirect_to => :category_url
37
- #
38
- # Note that these prerequisites are not business rules. They do not examine
39
- # the content of the session or the parameters. That level of validation should
40
- # be encapsulated by your domain model or helper methods in the controller.
41
- module ClassMethods
42
- # Verify the given actions so that if certain prerequisites are not met,
43
- # the user is redirected to a different action. The +options+ parameter
44
- # is a hash consisting of the following key/value pairs:
45
- #
46
- # <tt>:params</tt>::
47
- # a single key or an array of keys that must be in the <tt>params</tt>
48
- # hash in order for the action(s) to be safely called.
49
- # <tt>:session</tt>::
50
- # a single key or an array of keys that must be in the <tt>session</tt>
51
- # in order for the action(s) to be safely called.
52
- # <tt>:flash</tt>::
53
- # a single key or an array of keys that must be in the flash in order
54
- # for the action(s) to be safely called.
55
- # <tt>:method</tt>::
56
- # a single key or an array of keys--any one of which must match the
57
- # current request method in order for the action(s) to be safely called.
58
- # (The key should be a symbol: <tt>:get</tt> or <tt>:post</tt>, for
59
- # example.)
60
- # <tt>:xhr</tt>::
61
- # true/false option to ensure that the request is coming from an Ajax
62
- # call or not.
63
- # <tt>:add_flash</tt>::
64
- # a hash of name/value pairs that should be merged into the session's
65
- # flash if the prerequisites cannot be satisfied.
66
- # <tt>:add_headers</tt>::
67
- # a hash of name/value pairs that should be merged into the response's
68
- # headers hash if the prerequisites cannot be satisfied.
69
- # <tt>:redirect_to</tt>::
70
- # the redirection parameters to be used when redirecting if the
71
- # prerequisites cannot be satisfied. You can redirect either to named
72
- # route or to the action in some controller.
73
- # <tt>:render</tt>::
74
- # the render parameters to be used when the prerequisites cannot be satisfied.
75
- # <tt>:only</tt>::
76
- # only apply this verification to the actions specified in the associated
77
- # array (may also be a single value).
78
- # <tt>:except</tt>::
79
- # do not apply this verification to the actions specified in the associated
80
- # array (may also be a single value).
81
- def verify(options={})
82
- before_filter :only => options[:only], :except => options[:except] do
83
- verify_action options
84
- end
85
- end
86
- end
87
-
88
- private
89
-
90
- def verify_action(options) #:nodoc:
91
- if prereqs_invalid?(options)
92
- flash.update(options[:add_flash]) if options[:add_flash]
93
- response.headers.merge!(options[:add_headers]) if options[:add_headers]
94
- apply_remaining_actions(options) unless performed?
95
- end
96
- end
97
-
98
- def prereqs_invalid?(options) # :nodoc:
99
- verify_presence_of_keys_in_hash_flash_or_params(options) ||
100
- verify_method(options) ||
101
- verify_request_xhr_status(options)
102
- end
103
-
104
- def verify_presence_of_keys_in_hash_flash_or_params(options) # :nodoc:
105
- [*options[:params] ].find { |v| v && params[v.to_sym].nil? } ||
106
- [*options[:session]].find { |v| session[v].nil? } ||
107
- [*options[:flash] ].find { |v| flash[v].nil? }
108
- end
109
-
110
- def verify_method(options) # :nodoc:
111
- [*options[:method]].all? { |v| request.method_symbol != v.to_sym } if options[:method]
112
- end
113
-
114
- def verify_request_xhr_status(options) # :nodoc:
115
- request.xhr? != options[:xhr] unless options[:xhr].nil?
116
- end
117
-
118
- def apply_redirect_to(redirect_to_option) # :nodoc:
119
- (redirect_to_option.is_a?(Symbol) && redirect_to_option != :back) ? self.__send__(redirect_to_option) : redirect_to_option
120
- end
121
-
122
- def apply_remaining_actions(options) # :nodoc:
123
- case
124
- when options[:render] ; render(options[:render])
125
- when options[:redirect_to] ; redirect_to(apply_redirect_to(options[:redirect_to]))
126
- else head(:bad_request)
127
- end
128
- end
129
- end
130
- end
131
-
132
- ActionController::Base.send :include, ActionController::Verification
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'active_support'
4
- require 'action_controller'
5
- require File.dirname(__FILE__) + '/../lib/action_controller/verification'
6
-
7
- SharedTestRoutes = ActionDispatch::Routing::RouteSet.new
8
- SharedTestRoutes.draw do |map|
9
- map.connect ":controller/:action/:id"
10
- end
11
-
12
- ActionController::Base.send :include, SharedTestRoutes.url_helpers
13
-
14
- module ActionController
15
- class TestCase
16
- setup { @routes = SharedTestRoutes }
17
- end
18
- end
@@ -1,270 +0,0 @@
1
- require 'test_helper'
2
-
3
- class VerificationTestController < ActionController::Base
4
- verify :only => :guarded_one, :params => "one",
5
- :add_flash => { :error => 'unguarded' },
6
- :redirect_to => { :action => "unguarded" }
7
-
8
- verify :only => :guarded_two, :params => %w( one two ),
9
- :redirect_to => { :action => "unguarded" }
10
-
11
- verify :only => :guarded_with_flash, :params => "one",
12
- :add_flash => { :notice => "prereqs failed" },
13
- :redirect_to => { :action => "unguarded" }
14
-
15
- verify :only => :guarded_in_session, :session => "one",
16
- :redirect_to => { :action => "unguarded" }
17
-
18
- verify :only => [:multi_one, :multi_two], :session => %w( one two ),
19
- :redirect_to => { :action => "unguarded" }
20
-
21
- verify :only => :guarded_by_method, :method => :post,
22
- :redirect_to => { :action => "unguarded" }
23
-
24
- verify :only => :guarded_by_xhr, :xhr => true,
25
- :redirect_to => { :action => "unguarded" }
26
-
27
- verify :only => :guarded_by_not_xhr, :xhr => false,
28
- :redirect_to => { :action => "unguarded" }
29
-
30
- before_filter :unconditional_redirect, :only => :two_redirects
31
- verify :only => :two_redirects, :method => :post,
32
- :redirect_to => { :action => "unguarded" }
33
-
34
- verify :only => :must_be_post, :method => :post, :render => { :status => 405, :text => "Must be post" }, :add_headers => { "Allow" => "POST" }
35
-
36
- verify :only => :guarded_one_for_named_route_test, :params => "one",
37
- :redirect_to => :foo_url
38
-
39
- verify :only => :no_default_action, :params => "santa"
40
-
41
- verify :only => :guarded_with_back, :method => :post,
42
- :redirect_to => :back
43
-
44
- def guarded_one
45
- render :text => "#{params[:one]}"
46
- end
47
-
48
- def guarded_one_for_named_route_test
49
- render :text => "#{params[:one]}"
50
- end
51
-
52
- def guarded_with_flash
53
- render :text => "#{params[:one]}"
54
- end
55
-
56
- def guarded_two
57
- render :text => "#{params[:one]}:#{params[:two]}"
58
- end
59
-
60
- def guarded_in_session
61
- render :text => "#{session["one"]}"
62
- end
63
-
64
- def multi_one
65
- render :text => "#{session["one"]}:#{session["two"]}"
66
- end
67
-
68
- def multi_two
69
- render :text => "#{session["two"]}:#{session["one"]}"
70
- end
71
-
72
- def guarded_by_method
73
- render :text => "#{request.method}"
74
- end
75
-
76
- def guarded_by_xhr
77
- render :text => "#{request.xhr?}"
78
- end
79
-
80
- def guarded_by_not_xhr
81
- render :text => "#{request.xhr?}"
82
- end
83
-
84
- def unguarded
85
- render :text => "#{params[:one]}"
86
- end
87
-
88
- def two_redirects
89
- render :nothing => true
90
- end
91
-
92
- def must_be_post
93
- render :text => "Was a post!"
94
- end
95
-
96
- def guarded_with_back
97
- render :text => "#{params[:one]}"
98
- end
99
-
100
- def no_default_action
101
- # Will never run
102
- end
103
-
104
- protected
105
-
106
- def unconditional_redirect
107
- redirect_to :action => "unguarded"
108
- end
109
- end
110
-
111
- class VerificationTest < ActionController::TestCase
112
- tests ::VerificationTestController
113
-
114
- def test_using_symbol_back_with_no_referrer
115
- assert_raise(ActionController::RedirectBackError) { get :guarded_with_back }
116
- end
117
-
118
- def test_using_symbol_back_redirects_to_referrer
119
- @request.env["HTTP_REFERER"] = "/foo"
120
- get :guarded_with_back
121
- assert_redirected_to '/foo'
122
- end
123
-
124
- def test_no_deprecation_warning_for_named_route
125
- assert_not_deprecated do
126
- with_routing do |set|
127
- set.draw do |map|
128
- match 'foo', :to => 'test#foo', :as => :foo
129
- match 'verification_test/:action', :to => ::VerificationTestController
130
- end
131
- get :guarded_one_for_named_route_test, :two => "not one"
132
- assert_redirected_to '/foo'
133
- end
134
- end
135
- end
136
-
137
- def test_guarded_one_with_prereqs
138
- get :guarded_one, :one => "here"
139
- assert_equal "here", @response.body
140
- end
141
-
142
- def test_guarded_one_without_prereqs
143
- get :guarded_one
144
- assert_redirected_to :action => "unguarded"
145
- assert_equal 'unguarded', flash[:error]
146
- end
147
-
148
- def test_guarded_with_flash_with_prereqs
149
- get :guarded_with_flash, :one => "here"
150
- assert_equal "here", @response.body
151
- assert flash.empty?
152
- end
153
-
154
- def test_guarded_with_flash_without_prereqs
155
- get :guarded_with_flash
156
- assert_redirected_to :action => "unguarded"
157
- assert_equal "prereqs failed", flash[:notice]
158
- end
159
-
160
- def test_guarded_two_with_prereqs
161
- get :guarded_two, :one => "here", :two => "there"
162
- assert_equal "here:there", @response.body
163
- end
164
-
165
- def test_guarded_two_without_prereqs_one
166
- get :guarded_two, :two => "there"
167
- assert_redirected_to :action => "unguarded"
168
- end
169
-
170
- def test_guarded_two_without_prereqs_two
171
- get :guarded_two, :one => "here"
172
- assert_redirected_to :action => "unguarded"
173
- end
174
-
175
- def test_guarded_two_without_prereqs_both
176
- get :guarded_two
177
- assert_redirected_to :action => "unguarded"
178
- end
179
-
180
- def test_unguarded_with_params
181
- get :unguarded, :one => "here"
182
- assert_equal "here", @response.body
183
- end
184
-
185
- def test_unguarded_without_params
186
- get :unguarded
187
- assert @response.body.blank?
188
- end
189
-
190
- def test_guarded_in_session_with_prereqs
191
- get :guarded_in_session, {}, "one" => "here"
192
- assert_equal "here", @response.body
193
- end
194
-
195
- def test_guarded_in_session_without_prereqs
196
- get :guarded_in_session
197
- assert_redirected_to :action => "unguarded"
198
- end
199
-
200
- def test_multi_one_with_prereqs
201
- get :multi_one, {}, "one" => "here", "two" => "there"
202
- assert_equal "here:there", @response.body
203
- end
204
-
205
- def test_multi_one_without_prereqs
206
- get :multi_one
207
- assert_redirected_to :action => "unguarded"
208
- end
209
-
210
- def test_multi_two_with_prereqs
211
- get :multi_two, {}, "one" => "here", "two" => "there"
212
- assert_equal "there:here", @response.body
213
- end
214
-
215
- def test_multi_two_without_prereqs
216
- get :multi_two
217
- assert_redirected_to :action => "unguarded"
218
- end
219
-
220
- def test_guarded_by_method_with_prereqs
221
- post :guarded_by_method
222
- assert_equal "POST", @response.body
223
- end
224
-
225
- def test_guarded_by_method_without_prereqs
226
- get :guarded_by_method
227
- assert_redirected_to :action => "unguarded"
228
- end
229
-
230
- def test_guarded_by_xhr_with_prereqs
231
- xhr :post, :guarded_by_xhr
232
- assert_equal "true", @response.body
233
- end
234
-
235
- def test_guarded_by_xhr_without_prereqs
236
- get :guarded_by_xhr
237
- assert_redirected_to :action => "unguarded"
238
- end
239
-
240
- def test_guarded_by_not_xhr_with_prereqs
241
- get :guarded_by_not_xhr
242
- assert_equal "false", @response.body
243
- end
244
-
245
- def test_guarded_by_not_xhr_without_prereqs
246
- xhr :post, :guarded_by_not_xhr
247
- assert_redirected_to :action => "unguarded"
248
- end
249
-
250
- def test_guarded_post_and_calls_render_succeeds
251
- post :must_be_post
252
- assert_equal "Was a post!", @response.body
253
- end
254
-
255
- def test_default_failure_should_be_a_bad_request
256
- post :no_default_action
257
- assert_response :bad_request
258
- end
259
-
260
- def test_guarded_post_and_calls_render_fails_and_sets_allow_header
261
- get :must_be_post
262
- assert_response 405
263
- assert_equal "Must be post", @response.body
264
- assert_equal "POST", @response.headers["Allow"]
265
- end
266
-
267
- def test_second_redirect
268
- assert_nothing_raised { get :two_redirects }
269
- end
270
- end