open_conference_ware 1.0.0.pre1

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 (471) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +14 -0
  3. data/.coveralls.yml +1 -0
  4. data/.gitignore +21 -0
  5. data/.rspec +1 -0
  6. data/.travis.yml +18 -0
  7. data/CHANGES.md +280 -0
  8. data/CONTRIBUTORS.markdown +17 -0
  9. data/Gemfile +21 -0
  10. data/Gemfile.lock +296 -0
  11. data/Guardfile +24 -0
  12. data/LICENSE.txt +23 -0
  13. data/README.markdown +173 -0
  14. data/Rakefile +27 -0
  15. data/TODO.txt +22 -0
  16. data/app/assets/images/open_conference_ware/accept.png +0 -0
  17. data/app/assets/images/open_conference_ware/arrow-left.png +0 -0
  18. data/app/assets/images/open_conference_ware/arrow-out.png +0 -0
  19. data/app/assets/images/open_conference_ware/arrow-right.png +0 -0
  20. data/app/assets/images/open_conference_ware/arrow-up.png +0 -0
  21. data/app/assets/images/open_conference_ware/arrow_refresh.png +0 -0
  22. data/app/assets/images/open_conference_ware/comment.png +0 -0
  23. data/app/assets/images/open_conference_ware/comment_edit.png +0 -0
  24. data/app/assets/images/open_conference_ware/delete.png +0 -0
  25. data/app/assets/images/open_conference_ware/disk.png +0 -0
  26. data/app/assets/images/open_conference_ware/document-blank.png +0 -0
  27. data/app/assets/images/open_conference_ware/document.png +0 -0
  28. data/app/assets/images/open_conference_ware/edit.png +0 -0
  29. data/app/assets/images/open_conference_ware/extras/001_01.png +0 -0
  30. data/app/assets/images/open_conference_ware/extras/001_05.png +0 -0
  31. data/app/assets/images/open_conference_ware/extras/001_05x16.png +0 -0
  32. data/app/assets/images/open_conference_ware/extras/001_21.png +0 -0
  33. data/app/assets/images/open_conference_ware/extras/001_23.png +0 -0
  34. data/app/assets/images/open_conference_ware/extras/001_24.png +0 -0
  35. data/app/assets/images/open_conference_ware/extras/001_29.png +0 -0
  36. data/app/assets/images/open_conference_ware/extras/01.png +0 -0
  37. data/app/assets/images/open_conference_ware/extras/05.png +0 -0
  38. data/app/assets/images/open_conference_ware/extras/06.png +0 -0
  39. data/app/assets/images/open_conference_ware/extras/1.png +0 -0
  40. data/app/assets/images/open_conference_ware/extras/14.png +0 -0
  41. data/app/assets/images/open_conference_ware/extras/16.png +0 -0
  42. data/app/assets/images/open_conference_ware/extras/2.png +0 -0
  43. data/app/assets/images/open_conference_ware/extras/21.png +0 -0
  44. data/app/assets/images/open_conference_ware/extras/28.png +0 -0
  45. data/app/assets/images/open_conference_ware/extras/3.png +0 -0
  46. data/app/assets/images/open_conference_ware/extras/31.png +0 -0
  47. data/app/assets/images/open_conference_ware/extras/32.png +0 -0
  48. data/app/assets/images/open_conference_ware/extras/35.png +0 -0
  49. data/app/assets/images/open_conference_ware/extras/36.png +0 -0
  50. data/app/assets/images/open_conference_ware/extras/4.png +0 -0
  51. data/app/assets/images/open_conference_ware/extras/44.png +0 -0
  52. data/app/assets/images/open_conference_ware/extras/45.png +0 -0
  53. data/app/assets/images/open_conference_ware/extras/46.png +0 -0
  54. data/app/assets/images/open_conference_ware/extras/cancel.png +0 -0
  55. data/app/assets/images/open_conference_ware/extras/cancelx16.png +0 -0
  56. data/app/assets/images/open_conference_ware/extras/icon.trashcan.gif +0 -0
  57. data/app/assets/images/open_conference_ware/favorite.png +0 -0
  58. data/app/assets/images/open_conference_ware/feed.png +0 -0
  59. data/app/assets/images/open_conference_ware/heart.png +0 -0
  60. data/app/assets/images/open_conference_ware/house.png +0 -0
  61. data/app/assets/images/open_conference_ware/ignite_portland_header3_clear.png +0 -0
  62. data/app/assets/images/open_conference_ware/ignite_portland_header3_clear_cropped.png +0 -0
  63. data/app/assets/images/open_conference_ware/jquery.wysiwyg.gif +0 -0
  64. data/app/assets/images/open_conference_ware/lock.png +0 -0
  65. data/app/assets/images/open_conference_ware/new_window.gif +0 -0
  66. data/app/assets/images/open_conference_ware/openid-icon.gif +0 -0
  67. data/app/assets/images/open_conference_ware/pencil.png +0 -0
  68. data/app/assets/images/open_conference_ware/plus.png +0 -0
  69. data/app/assets/images/open_conference_ware/quote.png +0 -0
  70. data/app/assets/images/open_conference_ware/rails.png +0 -0
  71. data/app/assets/images/open_conference_ware/redx.png +0 -0
  72. data/app/assets/images/open_conference_ware/reset-fff.png +0 -0
  73. data/app/assets/images/open_conference_ware/spinner-big.gif +0 -0
  74. data/app/assets/images/open_conference_ware/spinner.gif +0 -0
  75. data/app/assets/images/open_conference_ware/star.png +0 -0
  76. data/app/assets/images/open_conference_ware/tag_blue.png +0 -0
  77. data/app/assets/images/open_conference_ware/time.png +0 -0
  78. data/app/assets/javascripts/open_conference_ware/application.js +18 -0
  79. data/app/assets/javascripts/open_conference_ware/base.js +15 -0
  80. data/app/assets/javascripts/open_conference_ware/favorites.js +76 -0
  81. data/app/assets/javascripts/open_conference_ware/ie.js +2 -0
  82. data/app/assets/javascripts/open_conference_ware/menu.js +47 -0
  83. data/app/assets/javascripts/open_conference_ware/persona.js +10 -0
  84. data/app/assets/javascripts/open_conference_ware/proposals.js +208 -0
  85. data/app/assets/javascripts/open_conference_ware/schedule.js +20 -0
  86. data/app/assets/javascripts/open_conference_ware/spinner.js +11 -0
  87. data/app/assets/javascripts/open_conference_ware/util.js +23 -0
  88. data/app/assets/stylesheets/open_conference_ware/application.css +8 -0
  89. data/app/assets/stylesheets/open_conference_ware/common.css.scss +491 -0
  90. data/app/assets/stylesheets/open_conference_ware/custom.css.scss +1033 -0
  91. data/app/assets/stylesheets/open_conference_ware/scaffold.css +54 -0
  92. data/app/controllers/open_conference_ware/application_controller.rb +488 -0
  93. data/app/controllers/open_conference_ware/authentications_controller.rb +42 -0
  94. data/app/controllers/open_conference_ware/comments_controller.rb +86 -0
  95. data/app/controllers/open_conference_ware/events_controller.rb +36 -0
  96. data/app/controllers/open_conference_ware/manage/events_controller.rb +157 -0
  97. data/app/controllers/open_conference_ware/manage/snippets_controller.rb +110 -0
  98. data/app/controllers/open_conference_ware/proposals_controller.rb +521 -0
  99. data/app/controllers/open_conference_ware/rooms_controller.rb +130 -0
  100. data/app/controllers/open_conference_ware/schedule_items_controller.rb +128 -0
  101. data/app/controllers/open_conference_ware/selector_votes_controller.rb +71 -0
  102. data/app/controllers/open_conference_ware/session_types_controller.rb +123 -0
  103. data/app/controllers/open_conference_ware/tracks_controller.rb +118 -0
  104. data/app/controllers/open_conference_ware/user_favorites_controller.rb +68 -0
  105. data/app/controllers/open_conference_ware/users_controller.rb +120 -0
  106. data/app/helpers/open_conference_ware/application_helper.rb +167 -0
  107. data/app/helpers/open_conference_ware/authentications_helper.rb +25 -0
  108. data/app/helpers/open_conference_ware/cache_if_helper.rb +13 -0
  109. data/app/helpers/open_conference_ware/display_link_to_helper.rb +25 -0
  110. data/app/helpers/open_conference_ware/display_textile_for_helper.rb +11 -0
  111. data/app/helpers/open_conference_ware/field_annotation_helper.rb +11 -0
  112. data/app/helpers/open_conference_ware/focus_helper.rb +16 -0
  113. data/app/helpers/open_conference_ware/localcss_helper.rb +10 -0
  114. data/app/helpers/open_conference_ware/page_title_helper.rb +17 -0
  115. data/app/helpers/open_conference_ware/proposals_helper.rb +54 -0
  116. data/app/helpers/open_conference_ware/rooms_helper.rb +5 -0
  117. data/app/helpers/open_conference_ware/scroll_to_helper.rb +15 -0
  118. data/app/helpers/open_conference_ware/session_types_helper.rb +5 -0
  119. data/app/helpers/open_conference_ware/snippets_helper.rb +36 -0
  120. data/app/helpers/open_conference_ware/time_range_helper.rb +198 -0
  121. data/app/helpers/open_conference_ware/tracks_helper.rb +9 -0
  122. data/app/helpers/open_conference_ware/user_favorites_helper.rb +15 -0
  123. data/app/mailers/open_conference_ware/speaker_mailer.rb +51 -0
  124. data/app/mixins/open_conference_ware/breadcrumbs_mixin.rb +76 -0
  125. data/app/mixins/open_conference_ware/cache_lookups_mixin.rb +128 -0
  126. data/app/mixins/open_conference_ware/faux_routes_mixin.rb +83 -0
  127. data/app/mixins/open_conference_ware/normalize_url_mixin.rb +40 -0
  128. data/app/mixins/open_conference_ware/public_attributes_mixin.rb +62 -0
  129. data/app/mixins/open_conference_ware/schedule_overlaps_mixin.rb +12 -0
  130. data/app/mixins/open_conference_ware/settings_checkers_mixin.rb +50 -0
  131. data/app/mixins/open_conference_ware/simple_slug_mixin.rb +26 -0
  132. data/app/models/open_conference_ware/authentication.rb +47 -0
  133. data/app/models/open_conference_ware/base.rb +6 -0
  134. data/app/models/open_conference_ware/comment.rb +26 -0
  135. data/app/models/open_conference_ware/event.rb +227 -0
  136. data/app/models/open_conference_ware/proposal.rb +625 -0
  137. data/app/models/open_conference_ware/room.rb +42 -0
  138. data/app/models/open_conference_ware/schedule.rb +216 -0
  139. data/app/models/open_conference_ware/schedule_item.rb +55 -0
  140. data/app/models/open_conference_ware/selector_vote.rb +22 -0
  141. data/app/models/open_conference_ware/session_type.rb +33 -0
  142. data/app/models/open_conference_ware/snippet.rb +58 -0
  143. data/app/models/open_conference_ware/track.rb +51 -0
  144. data/app/models/open_conference_ware/user.rb +262 -0
  145. data/app/models/open_conference_ware/user_favorite.rb +42 -0
  146. data/app/observers/open_conference_ware/cache_watcher.rb +42 -0
  147. data/app/views/layouts/open_conference_ware/_header.html.erb +106 -0
  148. data/app/views/layouts/open_conference_ware/application.atom.erb +1 -0
  149. data/app/views/layouts/open_conference_ware/application.html.erb +126 -0
  150. data/app/views/layouts/open_conference_ware/scaffold.html.erb +21 -0
  151. data/app/views/open_conference_ware/404.html.erb +8 -0
  152. data/app/views/open_conference_ware/422.html.erb +11 -0
  153. data/app/views/open_conference_ware/500.html.erb +11 -0
  154. data/app/views/open_conference_ware/_email_link.html.erb +24 -0
  155. data/app/views/open_conference_ware/_google_analytics.html.erb +9 -0
  156. data/app/views/open_conference_ware/authentications/_developer.html.erb +7 -0
  157. data/app/views/open_conference_ware/authentications/_openid.html.erb +11 -0
  158. data/app/views/open_conference_ware/authentications/_persona.html.erb +17 -0
  159. data/app/views/open_conference_ware/authentications/sign_in.html.erb +12 -0
  160. data/app/views/open_conference_ware/comments/_list.html.erb +31 -0
  161. data/app/views/open_conference_ware/comments/index.atom.builder +25 -0
  162. data/app/views/open_conference_ware/comments/index.html.erb +3 -0
  163. data/app/views/open_conference_ware/events/index.html.erb +9 -0
  164. data/app/views/open_conference_ware/events/show.html.erb +0 -0
  165. data/app/views/open_conference_ware/events/speakers.html.erb +7 -0
  166. data/app/views/open_conference_ware/manage/events/_form.html.erb +107 -0
  167. data/app/views/open_conference_ware/manage/events/edit.html.erb +3 -0
  168. data/app/views/open_conference_ware/manage/events/index.html.erb +41 -0
  169. data/app/views/open_conference_ware/manage/events/new.html.erb +3 -0
  170. data/app/views/open_conference_ware/manage/events/proposals.html.erb +133 -0
  171. data/app/views/open_conference_ware/manage/events/show.html.erb +181 -0
  172. data/app/views/open_conference_ware/manage/snippets/_form.html.erb +30 -0
  173. data/app/views/open_conference_ware/manage/snippets/edit.html.erb +3 -0
  174. data/app/views/open_conference_ware/manage/snippets/index.html.erb +34 -0
  175. data/app/views/open_conference_ware/manage/snippets/new.html.erb +3 -0
  176. data/app/views/open_conference_ware/manage/snippets/show.html.erb +32 -0
  177. data/app/views/open_conference_ware/proposals/_admin_controls.html.erb +33 -0
  178. data/app/views/open_conference_ware/proposals/_form.html.erb +381 -0
  179. data/app/views/open_conference_ware/proposals/_list.html.erb +164 -0
  180. data/app/views/open_conference_ware/proposals/_list_concise.html.erb +93 -0
  181. data/app/views/open_conference_ware/proposals/_manage_speakers.html.erb +30 -0
  182. data/app/views/open_conference_ware/proposals/_room_control.html.erb +21 -0
  183. data/app/views/open_conference_ware/proposals/_schedule_block.html.erb +8 -0
  184. data/app/views/open_conference_ware/proposals/_schedule_control.html.erb +13 -0
  185. data/app/views/open_conference_ware/proposals/_search_speakers.html.erb +20 -0
  186. data/app/views/open_conference_ware/proposals/_sub_list.html.erb +65 -0
  187. data/app/views/open_conference_ware/proposals/_sub_list_for_kind.html.erb +31 -0
  188. data/app/views/open_conference_ware/proposals/_transition_control.html.erb +16 -0
  189. data/app/views/open_conference_ware/proposals/create.html.erb +29 -0
  190. data/app/views/open_conference_ware/proposals/edit.html.erb +7 -0
  191. data/app/views/open_conference_ware/proposals/index.atom.builder +63 -0
  192. data/app/views/open_conference_ware/proposals/index.html.erb +46 -0
  193. data/app/views/open_conference_ware/proposals/new.html.erb +3 -0
  194. data/app/views/open_conference_ware/proposals/schedule.html.erb +108 -0
  195. data/app/views/open_conference_ware/proposals/sessions_index_terse.html.erb +22 -0
  196. data/app/views/open_conference_ware/proposals/show.html.erb +316 -0
  197. data/app/views/open_conference_ware/proposals/stats.html.erb +72 -0
  198. data/app/views/open_conference_ware/rooms/_form.html.erb +36 -0
  199. data/app/views/open_conference_ware/rooms/edit.html.erb +3 -0
  200. data/app/views/open_conference_ware/rooms/index.html.erb +13 -0
  201. data/app/views/open_conference_ware/rooms/new.html.erb +3 -0
  202. data/app/views/open_conference_ware/rooms/show.html.erb +27 -0
  203. data/app/views/open_conference_ware/schedule_items/_form.html.erb +35 -0
  204. data/app/views/open_conference_ware/schedule_items/edit.html.erb +3 -0
  205. data/app/views/open_conference_ware/schedule_items/index.html.erb +31 -0
  206. data/app/views/open_conference_ware/schedule_items/new.html.erb +3 -0
  207. data/app/views/open_conference_ware/schedule_items/show.html.erb +30 -0
  208. data/app/views/open_conference_ware/selector_votes/index.html.erb +81 -0
  209. data/app/views/open_conference_ware/session_types/_form.html.erb +23 -0
  210. data/app/views/open_conference_ware/session_types/edit.html.erb +3 -0
  211. data/app/views/open_conference_ware/session_types/index.html.erb +18 -0
  212. data/app/views/open_conference_ware/session_types/new.html.erb +3 -0
  213. data/app/views/open_conference_ware/session_types/show.html.erb +14 -0
  214. data/app/views/open_conference_ware/speaker_mailer/speaker_email.text.erb +14 -0
  215. data/app/views/open_conference_ware/tracks/_colors.css.erb +7 -0
  216. data/app/views/open_conference_ware/tracks/_form.html.erb +36 -0
  217. data/app/views/open_conference_ware/tracks/edit.html.erb +3 -0
  218. data/app/views/open_conference_ware/tracks/index.html.erb +25 -0
  219. data/app/views/open_conference_ware/tracks/new.html.erb +3 -0
  220. data/app/views/open_conference_ware/tracks/show.html.erb +19 -0
  221. data/app/views/open_conference_ware/user_favorites/index.html.erb +12 -0
  222. data/app/views/open_conference_ware/users/_account_box.html.erb +10 -0
  223. data/app/views/open_conference_ware/users/_block.html.erb +80 -0
  224. data/app/views/open_conference_ware/users/_list.html.erb +17 -0
  225. data/app/views/open_conference_ware/users/edit.html.erb +73 -0
  226. data/app/views/open_conference_ware/users/index.html.erb +28 -0
  227. data/app/views/open_conference_ware/users/new.html.erb +7 -0
  228. data/app/views/open_conference_ware/users/proposals.html.erb +24 -0
  229. data/app/views/open_conference_ware/users/show.html.erb +5 -0
  230. data/app/views/open_conference_ware/welcome/test.html.haml +8 -0
  231. data/bin/rails +8 -0
  232. data/ci/Gemfile.ci +13 -0
  233. data/ci/copy_database_config.rb +6 -0
  234. data/ci/database.mysql.yml +5 -0
  235. data/ci/database.postgresql.yml +4 -0
  236. data/ci/database.sqlite.yml +5 -0
  237. data/config/initializers/acts_as_taggable_on.rb +2 -0
  238. data/config/initializers/date_time_formats.rb +9 -0
  239. data/config/routes.rb +74 -0
  240. data/db/migrate/20131203235128_create_open_conference_ware_authentications.rb +14 -0
  241. data/db/migrate/20131203235216_create_open_conference_ware_comments.rb +14 -0
  242. data/db/migrate/20131203235418_create_open_conference_ware_events.rb +27 -0
  243. data/db/migrate/20131203235524_create_open_conference_ware_proposals.rb +36 -0
  244. data/db/migrate/20131203235723_create_open_conference_ware_rooms.rb +20 -0
  245. data/db/migrate/20131203235831_create_open_conference_ware_schedule_items.rb +18 -0
  246. data/db/migrate/20131203235910_create_open_conference_ware_selector_votes.rb +10 -0
  247. data/db/migrate/20131203235934_create_open_conference_ware_session_types.rb +14 -0
  248. data/db/migrate/20131204000008_create_open_conference_ware_snippets.rb +15 -0
  249. data/db/migrate/20131204000048_create_open_conference_ware_taggings.rb +16 -0
  250. data/db/migrate/20131204000129_create_open_conference_ware_tags.rb +7 -0
  251. data/db/migrate/20131204000147_create_open_conference_ware_tracks.rb +15 -0
  252. data/db/migrate/20131204000230_create_open_conference_ware_user_favorites.rb +10 -0
  253. data/db/migrate/20131204000251_create_open_conference_ware_users.rb +24 -0
  254. data/db/migrate/20131204000355_create_proposals_users_join_table.rb +8 -0
  255. data/db/seeds.rb +31 -0
  256. data/features/comment_create.feature +9 -0
  257. data/features/comment_destroy.feature +22 -0
  258. data/features/comment_new.feature +22 -0
  259. data/features/step_definitions/authentication_steps.rb +22 -0
  260. data/features/step_definitions/comment_create_steps.rb +5 -0
  261. data/features/step_definitions/comment_destroy_steps.rb +13 -0
  262. data/features/step_definitions/comment_new_steps.rb +41 -0
  263. data/features/step_definitions/notification_steps.rb +3 -0
  264. data/features/step_definitions/web_steps.rb +263 -0
  265. data/features/support/env.rb +58 -0
  266. data/features/support/helpers.rb +17 -0
  267. data/features/support/paths.rb +35 -0
  268. data/gem-public_cert.pem +22 -0
  269. data/lib/defer_proxy.rb +127 -0
  270. data/lib/ext/color_rgb_serializer_fix.rb +18 -0
  271. data/lib/ext/string_possessiveize.rb +7 -0
  272. data/lib/ext/vpim_icalendar_extra_properties.rb +25 -0
  273. data/lib/generators/open_conference_ware/install/USAGE +12 -0
  274. data/lib/generators/open_conference_ware/install/install_generator.rb +35 -0
  275. data/lib/generators/open_conference_ware/install/templates/config_initializer.rb +110 -0
  276. data/lib/generators/open_conference_ware/install/templates/omniauth_initializer.rb +33 -0
  277. data/lib/open_conference_ware.rb +156 -0
  278. data/lib/open_conference_ware/dependencies.rb +38 -0
  279. data/lib/open_conference_ware/engine.rb +38 -0
  280. data/lib/open_conference_ware/omni_auth_builder.rb +8 -0
  281. data/lib/open_conference_ware/version.rb +3 -0
  282. data/lib/rwikibot_page_drone.rb +70 -0
  283. data/lib/tasks/.gitkeep +0 -0
  284. data/lib/tasks/audio.rake +53 -0
  285. data/lib/tasks/cucumber.rake +65 -0
  286. data/lib/tasks/export.rake +170 -0
  287. data/lib/tasks/mediawiki.rake +96 -0
  288. data/lib/tasks/open_conference_ware_tasks.rake +16 -0
  289. data/lib/tasks/schedule.rake +103 -0
  290. data/lib/tasks/snippets.rake +23 -0
  291. data/open_conference_ware.gemspec +67 -0
  292. data/original_graphics/favorite.psd +0 -0
  293. data/spec/controllers/open_conference_ware/application_controller_spec.rb +309 -0
  294. data/spec/controllers/open_conference_ware/authentications_controller_spec.rb +87 -0
  295. data/spec/controllers/open_conference_ware/comments_controller_spec.rb +146 -0
  296. data/spec/controllers/open_conference_ware/events_controller_spec.rb +102 -0
  297. data/spec/controllers/open_conference_ware/manage_events_controller_spec.rb +103 -0
  298. data/spec/controllers/open_conference_ware/proposals_controller_spec.rb +1273 -0
  299. data/spec/controllers/open_conference_ware/rooms_controller_spec.rb +190 -0
  300. data/spec/controllers/open_conference_ware/selector_votes_controller_spec.rb +263 -0
  301. data/spec/controllers/open_conference_ware/session_types_controller_spec.rb +190 -0
  302. data/spec/controllers/open_conference_ware/sessions_routing_spec.rb +13 -0
  303. data/spec/controllers/open_conference_ware/tracks_controller_spec.rb +190 -0
  304. data/spec/controllers/open_conference_ware/user_favorites_controller_spec.rb +127 -0
  305. data/spec/controllers/open_conference_ware/users_controller_spec.rb +166 -0
  306. data/spec/dummy/README.rdoc +28 -0
  307. data/spec/dummy/Rakefile +6 -0
  308. data/spec/dummy/app/assets/images/.keep +0 -0
  309. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  310. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  311. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  312. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  313. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  314. data/spec/dummy/app/mailers/.keep +0 -0
  315. data/spec/dummy/app/models/.keep +0 -0
  316. data/spec/dummy/app/models/concerns/.keep +0 -0
  317. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  318. data/spec/dummy/bin/bundle +3 -0
  319. data/spec/dummy/bin/rails +4 -0
  320. data/spec/dummy/bin/rake +4 -0
  321. data/spec/dummy/config.ru +4 -0
  322. data/spec/dummy/config/application.rb +30 -0
  323. data/spec/dummy/config/boot.rb +5 -0
  324. data/spec/dummy/config/database.yml +25 -0
  325. data/spec/dummy/config/environment.rb +5 -0
  326. data/spec/dummy/config/environments/development.rb +29 -0
  327. data/spec/dummy/config/environments/production.rb +80 -0
  328. data/spec/dummy/config/environments/test.rb +36 -0
  329. data/spec/dummy/config/initializers/01_open_conference_ware.rb +110 -0
  330. data/spec/dummy/config/initializers/02_omniauth.rb +17 -0
  331. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  332. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  333. data/spec/dummy/config/initializers/inflections.rb +16 -0
  334. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  335. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  336. data/spec/dummy/config/initializers/session_store.rb +3 -0
  337. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  338. data/spec/dummy/config/locales/en.yml +23 -0
  339. data/spec/dummy/config/routes.rb +3 -0
  340. data/spec/dummy/db/schema.rb +219 -0
  341. data/spec/dummy/db/seeds.rb +10 -0
  342. data/spec/dummy/lib/assets/.keep +0 -0
  343. data/spec/dummy/log/.keep +0 -0
  344. data/spec/dummy/public/404.html +58 -0
  345. data/spec/dummy/public/422.html +58 -0
  346. data/spec/dummy/public/500.html +57 -0
  347. data/spec/dummy/public/favicon.ico +0 -0
  348. data/spec/factories/authentication_factory.rb +16 -0
  349. data/spec/factories/common_factory.rb +4 -0
  350. data/spec/factories/event_factory.rb +26 -0
  351. data/spec/factories/proposal_factory.rb +57 -0
  352. data/spec/factories/proposal_user_factory.rb +7 -0
  353. data/spec/factories/room_factory.rb +11 -0
  354. data/spec/factories/schedule_item_factory.rb +13 -0
  355. data/spec/factories/session_types_factory.rb +10 -0
  356. data/spec/factories/snippet_factory.rb +7 -0
  357. data/spec/factories/track_factory.rb +12 -0
  358. data/spec/factories/user_factory.rb +22 -0
  359. data/spec/factories/user_favorite_factory.rb +7 -0
  360. data/spec/features/sign_in_spec.rb +11 -0
  361. data/spec/features/snippets_spec.rb +38 -0
  362. data/spec/fixtures/open_conference_ware_comments.yml +27 -0
  363. data/spec/fixtures/open_conference_ware_events.yml +56 -0
  364. data/spec/fixtures/open_conference_ware_proposals.yml +256 -0
  365. data/spec/fixtures/open_conference_ware_rooms.yml +13 -0
  366. data/spec/fixtures/open_conference_ware_schedule_items.yml +23 -0
  367. data/spec/fixtures/open_conference_ware_session_types.yml +19 -0
  368. data/spec/fixtures/open_conference_ware_snippets.yml +62 -0
  369. data/spec/fixtures/open_conference_ware_tracks.yml +65 -0
  370. data/spec/fixtures/open_conference_ware_user_favorites.yml +7 -0
  371. data/spec/fixtures/open_conference_ware_users.yml +87 -0
  372. data/spec/helpers/open_conference_ware/application_helper_spec.rb +58 -0
  373. data/spec/helpers/open_conference_ware/authentications_helper_spec.rb +15 -0
  374. data/spec/helpers/open_conference_ware/display_link_to_helper_spec.rb +52 -0
  375. data/spec/helpers/open_conference_ware/proposals_helper_spec.rb +32 -0
  376. data/spec/helpers/open_conference_ware/rooms_helper_spec.rb +11 -0
  377. data/spec/helpers/open_conference_ware/session_types_helper_spec.rb +15 -0
  378. data/spec/helpers/open_conference_ware/time_range_helper_spec.rb +56 -0
  379. data/spec/helpers/open_conference_ware/tracks_helper_spec.rb +11 -0
  380. data/spec/helpers/open_conference_ware/user_favorites_helper_spec.rb +11 -0
  381. data/spec/integration/open_conference_ware/cache_lookups_mixin_spec.rb +122 -0
  382. data/spec/mixins/open_conference_ware/normalize_url_mixin_spec.rb +65 -0
  383. data/spec/models/open_conference_ware/authentication_spec.rb +67 -0
  384. data/spec/models/open_conference_ware/event_spec.rb +211 -0
  385. data/spec/models/open_conference_ware/proposal_spec.rb +606 -0
  386. data/spec/models/open_conference_ware/room_spec.rb +14 -0
  387. data/spec/models/open_conference_ware/schedule_item_spec.rb +12 -0
  388. data/spec/models/open_conference_ware/schedule_spec.rb +358 -0
  389. data/spec/models/open_conference_ware/selector_vote_spec.rb +12 -0
  390. data/spec/models/open_conference_ware/session_type_spec.rb +15 -0
  391. data/spec/models/open_conference_ware/snippet_spec.rb +13 -0
  392. data/spec/models/open_conference_ware/speaker_mailer_spec.rb +91 -0
  393. data/spec/models/open_conference_ware/track_spec.rb +36 -0
  394. data/spec/models/open_conference_ware/user_favorite_spec.rb +41 -0
  395. data/spec/models/open_conference_ware/user_spec.rb +77 -0
  396. data/spec/ocw_config.rb +76 -0
  397. data/spec/rcov.opts +2 -0
  398. data/spec/spec.opts +3 -0
  399. data/spec/spec_helper.rb +55 -0
  400. data/spec/spec_helper_customizations.rb +125 -0
  401. data/spec/support/add_all_helpers_to_view.rb +24 -0
  402. data/spec/support/authenticated_test_helper.rb +27 -0
  403. data/spec/support/fixture_shortcuts.rb +18 -0
  404. data/spec/support/omniauth.rb +34 -0
  405. data/spec/support/valid_params_extraction.rb +15 -0
  406. data/spec/views/open_conference_ware/proposals/_room_control.html.erb_spec.rb +23 -0
  407. data/spec/views/open_conference_ware/proposals/_transition_control.html.erb_spec.rb +14 -0
  408. data/spec/views/open_conference_ware/proposals/show.html.erb_spec.rb +128 -0
  409. data/spec/views/open_conference_ware/rooms/index.html.erb_spec.rb +19 -0
  410. data/spec/views/open_conference_ware/rooms/show.html.erb_spec.rb +15 -0
  411. data/spec/views/open_conference_ware/selector_votes/index.html.erb_spec.rb +41 -0
  412. data/spec/views/open_conference_ware/session_types/edit.html.erb_spec.rb +25 -0
  413. data/spec/views/open_conference_ware/session_types/index.html.erb_spec.rb +19 -0
  414. data/spec/views/open_conference_ware/session_types/new.html.erb_spec.rb +24 -0
  415. data/spec/views/open_conference_ware/session_types/show.html.erb_spec.rb +18 -0
  416. data/spec/views/open_conference_ware/tracks/edit.html.erb_spec.rb +25 -0
  417. data/spec/views/open_conference_ware/tracks/index.html.erb_spec.rb +56 -0
  418. data/spec/views/open_conference_ware/tracks/new.html.erb_spec.rb +26 -0
  419. data/spec/views/open_conference_ware/tracks/show.html.erb_spec.rb +23 -0
  420. data/spec/views/open_conference_ware/user_favorites/index.html.erb_spec.rb +29 -0
  421. data/spec/views/open_conference_ware/users/index_spec.rb +24 -0
  422. data/util/add_id3_tags_to_mp3.rb +57 -0
  423. data/util/schedule_demo.rb +36 -0
  424. data/util/seed_schedule.rb +61 -0
  425. data/util/sessions_to_lanyrd.rb +166 -0
  426. data/util/transfer_schedule_items.rb +25 -0
  427. data/util/update_proposal_status_from_voting_spreadsheet.rb +26 -0
  428. data/util/user_favorites_contention_report.rb +42 -0
  429. data/util/user_favorites_contention_report.sh +9 -0
  430. data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  431. data/vendor/assets/fonts/glyphicons-halflings-regular.svg +228 -0
  432. data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  433. data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  434. data/vendor/assets/images/farbtastic/marker.png +0 -0
  435. data/vendor/assets/images/farbtastic/mask.png +0 -0
  436. data/vendor/assets/images/farbtastic/wheel.png +0 -0
  437. data/vendor/assets/images/idselector/aol.ico +0 -0
  438. data/vendor/assets/images/idselector/arrow.gif +0 -0
  439. data/vendor/assets/images/idselector/arrow_white_back.png +0 -0
  440. data/vendor/assets/images/idselector/arrow_white_forward.png +0 -0
  441. data/vendor/assets/images/idselector/blogger.ico +0 -0
  442. data/vendor/assets/images/idselector/claimid.ico +0 -0
  443. data/vendor/assets/images/idselector/flickr.ico +0 -0
  444. data/vendor/assets/images/idselector/google.ico +0 -0
  445. data/vendor/assets/images/idselector/lj.ico +0 -0
  446. data/vendor/assets/images/idselector/myopenid.ico +0 -0
  447. data/vendor/assets/images/idselector/openid.ico +0 -0
  448. data/vendor/assets/images/idselector/technorati.ico +0 -0
  449. data/vendor/assets/images/idselector/verisign.ico +0 -0
  450. data/vendor/assets/images/idselector/vidoop2.ico +0 -0
  451. data/vendor/assets/images/idselector/vox.ico +0 -0
  452. data/vendor/assets/images/idselector/yahoo.ico +0 -0
  453. data/vendor/assets/javascripts/audiojs/audio.min.js +23 -0
  454. data/vendor/assets/javascripts/audiojs/audiojs.swf +0 -0
  455. data/vendor/assets/javascripts/audiojs/player-graphics.gif +0 -0
  456. data/vendor/assets/javascripts/bootstrap.js +1999 -0
  457. data/vendor/assets/javascripts/farbtastic.js +329 -0
  458. data/vendor/assets/javascripts/html5shiv.js +8 -0
  459. data/vendor/assets/javascripts/idselector.js +538 -0
  460. data/vendor/assets/javascripts/idselector~original.js +532 -0
  461. data/vendor/assets/javascripts/jquery-migrate-1.2.1.js +521 -0
  462. data/vendor/assets/javascripts/jquery.localScroll.js +106 -0
  463. data/vendor/assets/javascripts/jquery.scrollTo.js +174 -0
  464. data/vendor/assets/javascripts/respond.min.js +6 -0
  465. data/vendor/assets/stylesheets/bootstrap-theme.css +384 -0
  466. data/vendor/assets/stylesheets/bootstrap.css +6805 -0
  467. data/vendor/assets/stylesheets/farbtastic.css.scss +38 -0
  468. data/vendor/assets/stylesheets/persona-buttons.css +229 -0
  469. data/vendor/assets/stylesheets/reset-fonts-grids.css +7 -0
  470. metadata +1174 -0
  471. metadata.gz.sig +0 -0
@@ -0,0 +1,65 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ business:
4
+ event_id: 2009
5
+ title: Business
6
+ color: '#1bbb67'
7
+ excerpt: How do you run an open source business?
8
+ description: |
9
+ How do you run an open source business? Is it just the software, or how you operate as well? We want to hear what you know about building and growing a business in the f/oss world.
10
+ * Open source business models that work
11
+ * Picking the right license for the job
12
+ * Selling the philosophy to your customers
13
+ * The difference between sales and marketing, and why there really isn't one. :)
14
+ * "Selling for geeks"
15
+
16
+ chemistry:
17
+ event_id: 2009
18
+ title: Chemistry
19
+ color: '#71cc00'
20
+ excerpt: What's underneath the hood in that database or operating system?
21
+ description: |
22
+ What's underneath the hood in that database or operating system? How can Ruby run on Java, or Python on .NET? What are the interesting computational puzzles you're exploring? This is where we get down to the real nitty-gritty of how our technology works.
23
+ Possible topics:
24
+ * Performance-tuning for PostgreSQL
25
+ * Why RubySpec?
26
+ * Open Source Linux Audio / Multimedia Distributions (JAD, Studio64, dyne:bolic)
27
+ * Multimedia, DRM, "Free as in Freedom", Codecs, etc. (might make more sense under "Culture")
28
+ * The Math Behind Search Engines
29
+ * Open Source Tools for Real-Time Audio Performance ("grace", ChucK)
30
+ * The Many Faces of Open Source Virtualization: VirtualBox, Xen, QEMU/KQemu, KVM, "chroot jails", Open VMware Tools, Open Source VMware Perl Toolkits, etc.
31
+
32
+ cooking:
33
+ event_id: 2009
34
+ title: Cooking
35
+ color: '#f58b00'
36
+ excerpt: How do you make useful, functional software? What languages and tools do you employ?
37
+ description: |
38
+ How do you make useful, functional software? What languages and tools do you employ? Tell us your recipes for creating software that gets the job done, from the beginner to the advanced level.
39
+ Possible topics:
40
+ * Using C libraries in Ruby/Python/Perl
41
+ * Getting up and running on Android
42
+ * Agile methodologies at work
43
+ * Behavior-driven development
44
+
45
+ culture:
46
+ event_id: 2009
47
+ title: Culture
48
+ color: '#0aafdb'
49
+ excerpt: Beyond the technology, what have you learned from open source? Do you participate in user groups or open-space events?
50
+ description: |
51
+ Beyond the technology, what have you learned from open source? Do you participate in user groups or open-space events? Are open source groups inclusive or exclusive in the right ways? Let's talk about how open source ideas affect things beyond our software, from group organization to creative projects to how we share knowledge.
52
+ * Understanding wiki culture
53
+ * What makes an open source project thrive?
54
+ * Open source in government
55
+
56
+ hacks:
57
+ event_id: 2009
58
+ title: Hacks
59
+ color: '#b937fb'
60
+ excerpt: Do you tinker with your hardware, warranty restrictions or not? Where are you pushing the boundaries of out-of-the-box technology?
61
+ description: |
62
+ Do you tinker with your hardware, warranty restrictions or not? Where are you pushing the boundaries of out-of-the-box technology? Has your electronics hobby taken over your life? Show us the interesting, innovative things you're working on, outside of the pre-packaged options.
63
+ * Creating an arduino clone
64
+ * Open source rocketry
65
+ * "Circuit bending?"
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ # one:
4
+ # column: value
5
+ #
6
+ # two:
7
+ # column: value
@@ -0,0 +1,87 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: users
4
+ #
5
+ # id :integer not null, primary key
6
+ # email :string(255)
7
+ # salt :string(40)
8
+ # admin :boolean default(FALSE)
9
+ # created_at :datetime
10
+ # updated_at :datetime
11
+ # affiliation :string(128)
12
+ # biography :text
13
+ # website :string(1024)
14
+ # complete_profile :boolean
15
+ # photo_file_name :string(255)
16
+ # photo_content_type :string(255)
17
+ # photo_file_size :integer
18
+ # first_name :string(255)
19
+ # last_name :string(255)
20
+ # blog_url :string(255)
21
+ # identica :string(255)
22
+ # twitter :string(255)
23
+ # selector :boolean default(FALSE)
24
+ #
25
+
26
+ # A mortal user
27
+ quentin:
28
+ proposals: quentin_widgets, postgresql_session
29
+ email: "quentin@example.com"
30
+ first_name: "Quentin"
31
+ last_name: "Tarantino"
32
+ affiliation: "Grindhouse, Inc."
33
+ website: "http://reservoir.dogs/"
34
+ created_at: <%= 5.days.ago.to_s :db %>
35
+ complete_profile: true
36
+ biography: |
37
+ I'm Quentin.
38
+
39
+ Quentin Jerome Tarantino (born March 27, 1963) is an American film director, screenwriter, producer and actor. He rose to fame in the early 1990s as an independent filmmaker whose films used nonlinear storylines and aestheticization of violence. His films include Reservoir Dogs (1992), Pulp Fiction (1994), Jackie Brown (1997), Kill Bill (Vol. 1 2003, Vol. 2 2004) and Death Proof (2007). His films have earned him Academy, BAFTA and Palme d'Or Awards and he has been nominated for Emmy and Grammy Awards. In 2007, Total Film named him the 12th greatest director of all-time.
40
+
41
+ # Another mortal
42
+ clio:
43
+ proposals: clio_chupacabras, sqlite_session
44
+ email: "clio@example.com"
45
+ first_name: "Vadem"
46
+ last_name: "Clio"
47
+ affiliation: "Vadem Corporation"
48
+ created_at: <%= 5.days.ago.to_s :db %>
49
+ complete_profile: true
50
+ biography: |
51
+ I'm Clio.
52
+
53
+ Vadem Clio refers to a Handheld PC that runs Windows CE H/PC Pro 3.0 (WinCE Core OS 2.11). It was released in 1999. Data Evolution Corporation currently owns the rights to the Clio.
54
+
55
+ The Clio is a convertible tablet computer, designed by Vadem Corporation, which runs Microsoft’s Windows CE operating system and features the award-winning[citation needed] SwingTop pivoting arm. The 180-degree screen rotation gives users the ability to change configurations as conditions and work functions dictate. Users can choose notebook, tablet or presentation modes with keyboard, touchscreen or handwriting input.
56
+
57
+ # Yet another mortal
58
+ gustavus:
59
+ proposals: mysql_session
60
+ email: "gustavus@purvis.edu"
61
+ first_name: "Gustavus"
62
+ last_name: "Purvis"
63
+ affiliation: "House of Vasa"
64
+ created_at: <%= 5.days.ago.to_s :db %>
65
+ complete_profile: true
66
+ biography: |
67
+ Gustav II Adolf, (9 December 1594 – 6 November 1632 (O.S.)[1] or Gustav II Adolphus, widely known in English by the Latinized name Gustavus Adolphus and variously in historical writings sometimes as simply just Gustavus, or Gustavus the Great, or Gustav Adolf the Great, (Swedish: Gustav Adolf den store, from the special distinction passed by the Swedish Parliament in 1634), was founder of the Swedish Empire (or Stormaktstiden – "the era of great power") at the beginning of what is widely regarded as the Golden Age of Sweden.
68
+
69
+ # An admin user
70
+ aaron:
71
+ proposals: aaron_aardvarks, drizzle_session
72
+ email: "aaron@example.com"
73
+ first_name: "Aaron"
74
+ last_name: "Levite"
75
+ affiliation: "House of Israel"
76
+ created_at: <%= 1.days.ago.to_s :db %>
77
+ admin: true
78
+ complete_profile: true
79
+ biography: |
80
+ I'm Aaron.
81
+
82
+ In the Bible, Aaron (אהרן), or Aaron the Levite (אהרן הלוי), was the brother of Moses. He was the great-grandson of Levi (Exodus 6:16-20)[1] and represented the priestly functions of his tribe, becoming the first High Priest of the Hebrews. While Moses was receiving his education at the Egyptian royal court and during his exile among the Midianites, Aaron and his sister remained with their kinsmen in the eastern border-land of Egypt (Goshen). He there gained a name for eloquent and persuasive speech; so that when the time came for the demand upon the Pharaoh to release Israel from captivity, Aaron became his brother’s "nabi", or spokesman, to his own people (Exodus 4:16)[2] and, after their unwillingness to hear, to the Pharaoh himself (Exodus 7:9).[3] He is said to have flourished about 1200 BC (traditionally 1597 BC).
83
+
84
+ # An incomplete user
85
+ incognito:
86
+ created_at: <%= 1.days.ago.to_s :db %>
87
+ complete_profile: false
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::ApplicationHelper do
4
+ describe "when using assigned events" do
5
+ def assign_events(events)
6
+ helper.instance_variable_set(:@events, events)
7
+ end
8
+
9
+ before do
10
+ assign_events nil
11
+ end
12
+
13
+ describe "assigned_events" do
14
+ it "should return assigned events" do
15
+ events = [mock_model(Event), mock_model(Event)]
16
+ assign_events events
17
+
18
+ helper.assigned_events.should == events
19
+ end
20
+
21
+ it "should return empty array if no events are assigned" do
22
+ helper.assigned_events.should == []
23
+ end
24
+ end
25
+
26
+ describe "assigned_nonchild_events" do
27
+ it "should return only nonchild events" do
28
+ parent = mock_model(Event, parent: nil, parent_id: nil)
29
+ child = mock_model(Event, parent: parent, parent_id: parent.id)
30
+
31
+ assign_events [parent, child]
32
+
33
+ helper.assigned_nonchild_events.should == [parent]
34
+ end
35
+ end
36
+
37
+ describe "assigned_nonchild_events_by_date" do
38
+ it "should return only nonchild events sorted by date" do
39
+ first = mock_model(Event,
40
+ parent: nil,
41
+ parent_id: nil,
42
+ end_date: Time.parse('2001/1/1'))
43
+ second = mock_model(Event,
44
+ parent: nil,
45
+ parent_id: nil,
46
+ end_date: Time.parse('2002/2/2'))
47
+ child = mock_model(Event,
48
+ parent: second,
49
+ parent_id: second.id,
50
+ end_date: Time.parse('2002/2/2'))
51
+
52
+ assign_events [second, child, first]
53
+
54
+ helper.assigned_nonchild_events_by_date.should == [first, second]
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ # Specs in this file have access to a helper object that includes
4
+ # the AuthenticationsHelper. For example:
5
+ #
6
+ # describe AuthenticationsHelper do
7
+ # describe "string concat" do
8
+ # it "concats two strings with spaces" do
9
+ # expect(helper.concat_strings("this","that")).to eq("this that")
10
+ # end
11
+ # end
12
+ # end
13
+ describe OpenConferenceWare::AuthenticationsHelper do
14
+ pending "add some examples to (or delete) #{__FILE__}"
15
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+
4
+ describe OpenConferenceWare::DisplayLinkToHelper do
5
+ def elem_for(*args)
6
+ return Nokogiri::HTML::DocumentFragment.parse(helper.display_link_to(*args)).children.first
7
+ end
8
+
9
+ describe "when creating link" do
10
+ it "should create link" do
11
+ url = "http://foo.bar/"
12
+ elem = elem_for(url)
13
+
14
+ elem['href'].should == url
15
+ elem.inner_html.should == url
16
+ end
17
+
18
+ it "should escape characters" do
19
+ url = "<evil>&</evil>"
20
+ elem = elem_for(url)
21
+
22
+ elem.to_html.should =~ %r{<a href=\"&lt;evil&gt;&amp;&lt;/evil&gt;\"}
23
+ elem.inner_html.should_not == url
24
+ elem.inner_html.should == "&lt;evil&gt;&amp;&lt;/evil&gt;"
25
+ end
26
+
27
+ it "should truncate long URL" do
28
+ url = "http://foo.bar/abcdefghijklmnopqrstuvwxyz"
29
+ maxlength = 16
30
+ elem = elem_for(url, maxlength: maxlength)
31
+
32
+ elem['href'].should == url
33
+ elem.inner_html.should_not == url
34
+ elem.inner_html.should == "http://foo.ba..."
35
+ elem.inner_html.size.should == maxlength
36
+ end
37
+
38
+ it "should add norelfollow" do
39
+ url = "http://foo.bar/"
40
+ elem = elem_for(url)
41
+
42
+ elem['rel'].should == "nofollow"
43
+ end
44
+
45
+ it "should not add norelfollow optionally" do
46
+ url = "http://foo.bar/"
47
+ elem = elem_for(url, nofollow: false)
48
+
49
+ elem['rel'].should be_blank
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::ProposalsHelper do
4
+ describe "traversal" do
5
+ before :each do
6
+ add_all_helpers_to(view)
7
+ @event = create :populated_event
8
+ @proposal1 = proposal_for_event(@event)
9
+ @proposal2 = proposal_for_event(@event)
10
+ end
11
+
12
+ describe "#next_proposal_path_from" do
13
+ it "should return a link to the next proposal when it exists" do
14
+ helper.next_proposal_path_from(@proposal1).should == view.proposal_path(@proposal2)
15
+ end
16
+
17
+ it "should return nil when this is the last proposal" do
18
+ helper.next_proposal_path_from(@proposal2).should be_nil
19
+ end
20
+ end
21
+
22
+ describe "#previous_proposal_path_from" do
23
+ it "should return a link to the previous proposal when it exists" do
24
+ helper.previous_proposal_path_from(@proposal2).should == view.proposal_path(@proposal1)
25
+ end
26
+
27
+ it "should return nil when this is the first proposal" do
28
+ helper.previous_proposal_path_from(@proposal1).should be_nil
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::RoomsHelper do
4
+
5
+ #Delete this example and add some real ones or delete this file
6
+ it "should be included in the object returned by #helper" do
7
+ included_modules = (class << helper; self; end).send :included_modules
8
+ included_modules.should include(OpenConferenceWare::RoomsHelper)
9
+ end
10
+
11
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::SessionTypesHelper do
4
+
5
+ before(:each) do
6
+ @event = stub_current_event!
7
+ end
8
+
9
+ #Delete this example and add some real ones or delete this file
10
+ it "should be included in the object returned by #helper" do
11
+ included_modules = (class << helper; self; end).send :included_modules
12
+ included_modules.should include(OpenConferenceWare::SessionTypesHelper)
13
+ end
14
+
15
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+ include OpenConferenceWare::TimeRangeHelper
3
+
4
+ describe "Time formatting" do
5
+ before(:each) do
6
+ @start_time = DateTime.new(2008, 4, 1, 9, 00)
7
+ end
8
+
9
+ # Test all permutations of
10
+ # - context-date: with vs without
11
+ # - format: hcal vs html (tags stripped) vs text (tags stripped, '&ndash;' --> '-')
12
+ tests = [
13
+ # comment, end_time, results_without_context, results_with_context
14
+ [ "start time only", nil,
15
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">Tuesday, April 1, 2008 at 9:00am</abbr>",
16
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">9:00am</abbr>"],
17
+ [ "same day & am-pm", DateTime.new(2008, 4, 1, 11, 00),
18
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">Tuesday, April 1, 2008 from 9:00</abbr> &ndash; <abbr class=\"dtend\" title=\"2008-04-01T11:00:00\">11:00am</abbr>",
19
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">9:00</abbr> &ndash; <abbr class=\"dtend\" title=\"2008-04-01T11:00:00\">11:00am</abbr>" ],
20
+ [ "same day, different am-pm", DateTime.new(2008, 4, 1, 13, 30),
21
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">Tuesday, April 1, 2008 from 9:00am</abbr> &ndash; <abbr class=\"dtend\" title=\"2008-04-01T13:30:00\">1:30pm</abbr>",
22
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">9:00am</abbr> &ndash; <abbr class=\"dtend\" title=\"2008-04-01T13:30:00\">1:30pm</abbr>" ],
23
+ [ "different days", DateTime.new(2009, 4, 1, 13, 30),
24
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">Tuesday, April 1, 2008 at 9:00am</abbr> through <abbr class=\"dtend\" title=\"2009-04-01T13:30:00\">Wednesday, April 1, 2009 at 1:30pm</abbr>",
25
+ "<abbr class=\"dtstart\" title=\"2008-04-01T09:00:00\">9:00am</abbr> through <abbr class=\"dtend\" title=\"2009-04-01T13:30:00\">Wednesday, April 1, 2009 at 1:30pm</abbr>" ]
26
+ ]
27
+
28
+ [nil, Date.new(2008, 4, 1)].each do |context_date|
29
+ describe "with#{context_date.nil? ? "out" : ""} context date" do
30
+ [:text, :hcal, :html].each do |format|
31
+ tests.each do |label, end_time, expected_without_context, expected_with_context|
32
+ expected = context_date ? expected_with_context : expected_without_context
33
+ expected = expected.gsub(%r|\<[^\>]*\>|,'') if format != :hcal
34
+ expected = expected.gsub('&ndash;', '-') if format == :text
35
+ it "should format #{label} in #{format} format as '#{expected}'" do
36
+ OpenConferenceWare::TimeRange.new(@start_time, end_time, format: format,
37
+ context: context_date).to_s.should == expected
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ describe "with objects" do
45
+ it "should format from objects that respond to just start_time" do
46
+ event = build(:proposal,start_time: Time.parse('2008-04-01 13:30 UTC'))
47
+ OpenConferenceWare::TimeRange.new(event, format: :text).to_s.should == "Tuesday, April 1, 2008 at 1:30pm"
48
+ end
49
+
50
+ it "should format from objects that respond to both start_time and end_time" do
51
+ event = build(:proposal, start_time: Time.parse('2008-04-01 13:30 UTC'),
52
+ session_type: stub_model(SessionType,duration: 45))
53
+ OpenConferenceWare::TimeRange.new(event, format: :text).to_s.should == "Tuesday, April 1, 2008 from 1:30 - 2:15pm"
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::TracksHelper do
4
+
5
+ #Delete this example and add some real ones or delete this file
6
+ it "should be included in the object returned by #helper" do
7
+ included_modules = (class << helper; self; end).send :included_modules
8
+ included_modules.should include(OpenConferenceWare::TracksHelper)
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::UserFavoritesHelper do
4
+
5
+ #Delete this example and add some real ones or delete this file
6
+ it "is included in the helper object" do
7
+ included_modules = (class << helper; self; end).send :included_modules
8
+ included_modules.should include(OpenConferenceWare::UserFavoritesHelper)
9
+ end
10
+
11
+ end
@@ -0,0 +1,122 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenConferenceWare::CacheLookupsMixin do
4
+ before :each do
5
+ Event.destroy_all if Event.count > 0
6
+ User.destroy_all if User.count > 0
7
+ end
8
+
9
+ describe 'when enabled' do
10
+ shared_examples_for 'overrides' do
11
+ it 'should cache lookups if forced to' do
12
+ ENV.should_receive(:[]).with('CACHELOOKUPS').and_return('1')
13
+ Event.cache_lookups?.should == true
14
+ end
15
+
16
+ it 'should not cache lookups if forced not to' do
17
+ ENV.should_receive(:[]).with('CACHELOOKUPS').and_return('0')
18
+ Event.cache_lookups?.should == false
19
+ end
20
+ end
21
+
22
+ describe 'and environment defaults to performing caching' do
23
+ before do
24
+ Rails.configuration.action_controller.stub(perform_caching: true)
25
+ end
26
+
27
+ it_should_behave_like 'overrides'
28
+
29
+ it 'should cache lookups by default' do
30
+ Event.cache_lookups?.should == true
31
+ end
32
+
33
+ end
34
+
35
+ describe 'and environment defaults to not performing caching' do
36
+ before do
37
+ Rails.configuration.action_controller.stub(perform_caching: false)
38
+ end
39
+
40
+ it_should_behave_like 'overrides'
41
+
42
+ it 'should not cache lookups by default' do
43
+ Event.cache_lookups?.should == false
44
+ end
45
+ end
46
+ end
47
+
48
+ describe 'queries' do
49
+ before :each do
50
+ Event.stub(:cache_lookups? => true)
51
+ OpenConferenceWare::CacheWatcher.expire
52
+
53
+ @event1 = create :event
54
+ @event2 = create :event
55
+
56
+ @events = [@event1, @event2]
57
+ @event = @event1
58
+
59
+ OpenConferenceWare::CacheWatcher.expire
60
+ end
61
+
62
+ describe 'for single records' do
63
+ it 'should write to cache' do
64
+ Event.should_receive(:query_all).and_return(@events)
65
+
66
+ Event.lookup(@event.slug).should == @event
67
+ end
68
+
69
+ it 'should read from cache' do
70
+ Event.lookup(@event.slug).should == @event
71
+ Event.should_not_receive(:query_all)
72
+
73
+ Event.lookup(@event.slug).should == @event
74
+ end
75
+ end
76
+
77
+ describe 'for all records' do
78
+ it 'should write to cache' do
79
+ Event.should_receive(:query_all).and_return(@events)
80
+
81
+ Event.lookup.should == @events
82
+ end
83
+
84
+ it 'should read from cache' do
85
+ Event.lookup.should == @events
86
+ Event.should_not_receive(:query_all)
87
+
88
+ Event.lookup.should == @events
89
+ end
90
+ end
91
+
92
+ describe 'current event' do
93
+ before do
94
+ @event = create :event
95
+ end
96
+
97
+ describe 'when caching' do
98
+ it 'should fetch from cache' do
99
+ Event.should_receive(:cache_lookups?).and_return(true)
100
+ Event.should_receive(:fetch_object).with('event_current').and_return(@event)
101
+
102
+ Event.current.should == @event
103
+ end
104
+ end
105
+
106
+ describe 'when not caching' do
107
+ it 'should not fetch from cache' do
108
+ Event.should_receive(:cache_lookups?).and_return(false)
109
+ Event.should_receive(:current_by_settings).and_return(@event)
110
+
111
+ Event.current.should == @event
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ describe 'silo name' do
118
+ it 'should be derived from class name' do
119
+ Event.lookup_silo_name.should == 'OpenConferenceWare__Event_dict'
120
+ end
121
+ end
122
+ end