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.
- data.tar.gz.sig +0 -0
- data/.autotest +14 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +21 -0
- data/.rspec +1 -0
- data/.travis.yml +18 -0
- data/CHANGES.md +280 -0
- data/CONTRIBUTORS.markdown +17 -0
- data/Gemfile +21 -0
- data/Gemfile.lock +296 -0
- data/Guardfile +24 -0
- data/LICENSE.txt +23 -0
- data/README.markdown +173 -0
- data/Rakefile +27 -0
- data/TODO.txt +22 -0
- data/app/assets/images/open_conference_ware/accept.png +0 -0
- data/app/assets/images/open_conference_ware/arrow-left.png +0 -0
- data/app/assets/images/open_conference_ware/arrow-out.png +0 -0
- data/app/assets/images/open_conference_ware/arrow-right.png +0 -0
- data/app/assets/images/open_conference_ware/arrow-up.png +0 -0
- data/app/assets/images/open_conference_ware/arrow_refresh.png +0 -0
- data/app/assets/images/open_conference_ware/comment.png +0 -0
- data/app/assets/images/open_conference_ware/comment_edit.png +0 -0
- data/app/assets/images/open_conference_ware/delete.png +0 -0
- data/app/assets/images/open_conference_ware/disk.png +0 -0
- data/app/assets/images/open_conference_ware/document-blank.png +0 -0
- data/app/assets/images/open_conference_ware/document.png +0 -0
- data/app/assets/images/open_conference_ware/edit.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_01.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_05.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_05x16.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_21.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_23.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_24.png +0 -0
- data/app/assets/images/open_conference_ware/extras/001_29.png +0 -0
- data/app/assets/images/open_conference_ware/extras/01.png +0 -0
- data/app/assets/images/open_conference_ware/extras/05.png +0 -0
- data/app/assets/images/open_conference_ware/extras/06.png +0 -0
- data/app/assets/images/open_conference_ware/extras/1.png +0 -0
- data/app/assets/images/open_conference_ware/extras/14.png +0 -0
- data/app/assets/images/open_conference_ware/extras/16.png +0 -0
- data/app/assets/images/open_conference_ware/extras/2.png +0 -0
- data/app/assets/images/open_conference_ware/extras/21.png +0 -0
- data/app/assets/images/open_conference_ware/extras/28.png +0 -0
- data/app/assets/images/open_conference_ware/extras/3.png +0 -0
- data/app/assets/images/open_conference_ware/extras/31.png +0 -0
- data/app/assets/images/open_conference_ware/extras/32.png +0 -0
- data/app/assets/images/open_conference_ware/extras/35.png +0 -0
- data/app/assets/images/open_conference_ware/extras/36.png +0 -0
- data/app/assets/images/open_conference_ware/extras/4.png +0 -0
- data/app/assets/images/open_conference_ware/extras/44.png +0 -0
- data/app/assets/images/open_conference_ware/extras/45.png +0 -0
- data/app/assets/images/open_conference_ware/extras/46.png +0 -0
- data/app/assets/images/open_conference_ware/extras/cancel.png +0 -0
- data/app/assets/images/open_conference_ware/extras/cancelx16.png +0 -0
- data/app/assets/images/open_conference_ware/extras/icon.trashcan.gif +0 -0
- data/app/assets/images/open_conference_ware/favorite.png +0 -0
- data/app/assets/images/open_conference_ware/feed.png +0 -0
- data/app/assets/images/open_conference_ware/heart.png +0 -0
- data/app/assets/images/open_conference_ware/house.png +0 -0
- data/app/assets/images/open_conference_ware/ignite_portland_header3_clear.png +0 -0
- data/app/assets/images/open_conference_ware/ignite_portland_header3_clear_cropped.png +0 -0
- data/app/assets/images/open_conference_ware/jquery.wysiwyg.gif +0 -0
- data/app/assets/images/open_conference_ware/lock.png +0 -0
- data/app/assets/images/open_conference_ware/new_window.gif +0 -0
- data/app/assets/images/open_conference_ware/openid-icon.gif +0 -0
- data/app/assets/images/open_conference_ware/pencil.png +0 -0
- data/app/assets/images/open_conference_ware/plus.png +0 -0
- data/app/assets/images/open_conference_ware/quote.png +0 -0
- data/app/assets/images/open_conference_ware/rails.png +0 -0
- data/app/assets/images/open_conference_ware/redx.png +0 -0
- data/app/assets/images/open_conference_ware/reset-fff.png +0 -0
- data/app/assets/images/open_conference_ware/spinner-big.gif +0 -0
- data/app/assets/images/open_conference_ware/spinner.gif +0 -0
- data/app/assets/images/open_conference_ware/star.png +0 -0
- data/app/assets/images/open_conference_ware/tag_blue.png +0 -0
- data/app/assets/images/open_conference_ware/time.png +0 -0
- data/app/assets/javascripts/open_conference_ware/application.js +18 -0
- data/app/assets/javascripts/open_conference_ware/base.js +15 -0
- data/app/assets/javascripts/open_conference_ware/favorites.js +76 -0
- data/app/assets/javascripts/open_conference_ware/ie.js +2 -0
- data/app/assets/javascripts/open_conference_ware/menu.js +47 -0
- data/app/assets/javascripts/open_conference_ware/persona.js +10 -0
- data/app/assets/javascripts/open_conference_ware/proposals.js +208 -0
- data/app/assets/javascripts/open_conference_ware/schedule.js +20 -0
- data/app/assets/javascripts/open_conference_ware/spinner.js +11 -0
- data/app/assets/javascripts/open_conference_ware/util.js +23 -0
- data/app/assets/stylesheets/open_conference_ware/application.css +8 -0
- data/app/assets/stylesheets/open_conference_ware/common.css.scss +491 -0
- data/app/assets/stylesheets/open_conference_ware/custom.css.scss +1033 -0
- data/app/assets/stylesheets/open_conference_ware/scaffold.css +54 -0
- data/app/controllers/open_conference_ware/application_controller.rb +488 -0
- data/app/controllers/open_conference_ware/authentications_controller.rb +42 -0
- data/app/controllers/open_conference_ware/comments_controller.rb +86 -0
- data/app/controllers/open_conference_ware/events_controller.rb +36 -0
- data/app/controllers/open_conference_ware/manage/events_controller.rb +157 -0
- data/app/controllers/open_conference_ware/manage/snippets_controller.rb +110 -0
- data/app/controllers/open_conference_ware/proposals_controller.rb +521 -0
- data/app/controllers/open_conference_ware/rooms_controller.rb +130 -0
- data/app/controllers/open_conference_ware/schedule_items_controller.rb +128 -0
- data/app/controllers/open_conference_ware/selector_votes_controller.rb +71 -0
- data/app/controllers/open_conference_ware/session_types_controller.rb +123 -0
- data/app/controllers/open_conference_ware/tracks_controller.rb +118 -0
- data/app/controllers/open_conference_ware/user_favorites_controller.rb +68 -0
- data/app/controllers/open_conference_ware/users_controller.rb +120 -0
- data/app/helpers/open_conference_ware/application_helper.rb +167 -0
- data/app/helpers/open_conference_ware/authentications_helper.rb +25 -0
- data/app/helpers/open_conference_ware/cache_if_helper.rb +13 -0
- data/app/helpers/open_conference_ware/display_link_to_helper.rb +25 -0
- data/app/helpers/open_conference_ware/display_textile_for_helper.rb +11 -0
- data/app/helpers/open_conference_ware/field_annotation_helper.rb +11 -0
- data/app/helpers/open_conference_ware/focus_helper.rb +16 -0
- data/app/helpers/open_conference_ware/localcss_helper.rb +10 -0
- data/app/helpers/open_conference_ware/page_title_helper.rb +17 -0
- data/app/helpers/open_conference_ware/proposals_helper.rb +54 -0
- data/app/helpers/open_conference_ware/rooms_helper.rb +5 -0
- data/app/helpers/open_conference_ware/scroll_to_helper.rb +15 -0
- data/app/helpers/open_conference_ware/session_types_helper.rb +5 -0
- data/app/helpers/open_conference_ware/snippets_helper.rb +36 -0
- data/app/helpers/open_conference_ware/time_range_helper.rb +198 -0
- data/app/helpers/open_conference_ware/tracks_helper.rb +9 -0
- data/app/helpers/open_conference_ware/user_favorites_helper.rb +15 -0
- data/app/mailers/open_conference_ware/speaker_mailer.rb +51 -0
- data/app/mixins/open_conference_ware/breadcrumbs_mixin.rb +76 -0
- data/app/mixins/open_conference_ware/cache_lookups_mixin.rb +128 -0
- data/app/mixins/open_conference_ware/faux_routes_mixin.rb +83 -0
- data/app/mixins/open_conference_ware/normalize_url_mixin.rb +40 -0
- data/app/mixins/open_conference_ware/public_attributes_mixin.rb +62 -0
- data/app/mixins/open_conference_ware/schedule_overlaps_mixin.rb +12 -0
- data/app/mixins/open_conference_ware/settings_checkers_mixin.rb +50 -0
- data/app/mixins/open_conference_ware/simple_slug_mixin.rb +26 -0
- data/app/models/open_conference_ware/authentication.rb +47 -0
- data/app/models/open_conference_ware/base.rb +6 -0
- data/app/models/open_conference_ware/comment.rb +26 -0
- data/app/models/open_conference_ware/event.rb +227 -0
- data/app/models/open_conference_ware/proposal.rb +625 -0
- data/app/models/open_conference_ware/room.rb +42 -0
- data/app/models/open_conference_ware/schedule.rb +216 -0
- data/app/models/open_conference_ware/schedule_item.rb +55 -0
- data/app/models/open_conference_ware/selector_vote.rb +22 -0
- data/app/models/open_conference_ware/session_type.rb +33 -0
- data/app/models/open_conference_ware/snippet.rb +58 -0
- data/app/models/open_conference_ware/track.rb +51 -0
- data/app/models/open_conference_ware/user.rb +262 -0
- data/app/models/open_conference_ware/user_favorite.rb +42 -0
- data/app/observers/open_conference_ware/cache_watcher.rb +42 -0
- data/app/views/layouts/open_conference_ware/_header.html.erb +106 -0
- data/app/views/layouts/open_conference_ware/application.atom.erb +1 -0
- data/app/views/layouts/open_conference_ware/application.html.erb +126 -0
- data/app/views/layouts/open_conference_ware/scaffold.html.erb +21 -0
- data/app/views/open_conference_ware/404.html.erb +8 -0
- data/app/views/open_conference_ware/422.html.erb +11 -0
- data/app/views/open_conference_ware/500.html.erb +11 -0
- data/app/views/open_conference_ware/_email_link.html.erb +24 -0
- data/app/views/open_conference_ware/_google_analytics.html.erb +9 -0
- data/app/views/open_conference_ware/authentications/_developer.html.erb +7 -0
- data/app/views/open_conference_ware/authentications/_openid.html.erb +11 -0
- data/app/views/open_conference_ware/authentications/_persona.html.erb +17 -0
- data/app/views/open_conference_ware/authentications/sign_in.html.erb +12 -0
- data/app/views/open_conference_ware/comments/_list.html.erb +31 -0
- data/app/views/open_conference_ware/comments/index.atom.builder +25 -0
- data/app/views/open_conference_ware/comments/index.html.erb +3 -0
- data/app/views/open_conference_ware/events/index.html.erb +9 -0
- data/app/views/open_conference_ware/events/show.html.erb +0 -0
- data/app/views/open_conference_ware/events/speakers.html.erb +7 -0
- data/app/views/open_conference_ware/manage/events/_form.html.erb +107 -0
- data/app/views/open_conference_ware/manage/events/edit.html.erb +3 -0
- data/app/views/open_conference_ware/manage/events/index.html.erb +41 -0
- data/app/views/open_conference_ware/manage/events/new.html.erb +3 -0
- data/app/views/open_conference_ware/manage/events/proposals.html.erb +133 -0
- data/app/views/open_conference_ware/manage/events/show.html.erb +181 -0
- data/app/views/open_conference_ware/manage/snippets/_form.html.erb +30 -0
- data/app/views/open_conference_ware/manage/snippets/edit.html.erb +3 -0
- data/app/views/open_conference_ware/manage/snippets/index.html.erb +34 -0
- data/app/views/open_conference_ware/manage/snippets/new.html.erb +3 -0
- data/app/views/open_conference_ware/manage/snippets/show.html.erb +32 -0
- data/app/views/open_conference_ware/proposals/_admin_controls.html.erb +33 -0
- data/app/views/open_conference_ware/proposals/_form.html.erb +381 -0
- data/app/views/open_conference_ware/proposals/_list.html.erb +164 -0
- data/app/views/open_conference_ware/proposals/_list_concise.html.erb +93 -0
- data/app/views/open_conference_ware/proposals/_manage_speakers.html.erb +30 -0
- data/app/views/open_conference_ware/proposals/_room_control.html.erb +21 -0
- data/app/views/open_conference_ware/proposals/_schedule_block.html.erb +8 -0
- data/app/views/open_conference_ware/proposals/_schedule_control.html.erb +13 -0
- data/app/views/open_conference_ware/proposals/_search_speakers.html.erb +20 -0
- data/app/views/open_conference_ware/proposals/_sub_list.html.erb +65 -0
- data/app/views/open_conference_ware/proposals/_sub_list_for_kind.html.erb +31 -0
- data/app/views/open_conference_ware/proposals/_transition_control.html.erb +16 -0
- data/app/views/open_conference_ware/proposals/create.html.erb +29 -0
- data/app/views/open_conference_ware/proposals/edit.html.erb +7 -0
- data/app/views/open_conference_ware/proposals/index.atom.builder +63 -0
- data/app/views/open_conference_ware/proposals/index.html.erb +46 -0
- data/app/views/open_conference_ware/proposals/new.html.erb +3 -0
- data/app/views/open_conference_ware/proposals/schedule.html.erb +108 -0
- data/app/views/open_conference_ware/proposals/sessions_index_terse.html.erb +22 -0
- data/app/views/open_conference_ware/proposals/show.html.erb +316 -0
- data/app/views/open_conference_ware/proposals/stats.html.erb +72 -0
- data/app/views/open_conference_ware/rooms/_form.html.erb +36 -0
- data/app/views/open_conference_ware/rooms/edit.html.erb +3 -0
- data/app/views/open_conference_ware/rooms/index.html.erb +13 -0
- data/app/views/open_conference_ware/rooms/new.html.erb +3 -0
- data/app/views/open_conference_ware/rooms/show.html.erb +27 -0
- data/app/views/open_conference_ware/schedule_items/_form.html.erb +35 -0
- data/app/views/open_conference_ware/schedule_items/edit.html.erb +3 -0
- data/app/views/open_conference_ware/schedule_items/index.html.erb +31 -0
- data/app/views/open_conference_ware/schedule_items/new.html.erb +3 -0
- data/app/views/open_conference_ware/schedule_items/show.html.erb +30 -0
- data/app/views/open_conference_ware/selector_votes/index.html.erb +81 -0
- data/app/views/open_conference_ware/session_types/_form.html.erb +23 -0
- data/app/views/open_conference_ware/session_types/edit.html.erb +3 -0
- data/app/views/open_conference_ware/session_types/index.html.erb +18 -0
- data/app/views/open_conference_ware/session_types/new.html.erb +3 -0
- data/app/views/open_conference_ware/session_types/show.html.erb +14 -0
- data/app/views/open_conference_ware/speaker_mailer/speaker_email.text.erb +14 -0
- data/app/views/open_conference_ware/tracks/_colors.css.erb +7 -0
- data/app/views/open_conference_ware/tracks/_form.html.erb +36 -0
- data/app/views/open_conference_ware/tracks/edit.html.erb +3 -0
- data/app/views/open_conference_ware/tracks/index.html.erb +25 -0
- data/app/views/open_conference_ware/tracks/new.html.erb +3 -0
- data/app/views/open_conference_ware/tracks/show.html.erb +19 -0
- data/app/views/open_conference_ware/user_favorites/index.html.erb +12 -0
- data/app/views/open_conference_ware/users/_account_box.html.erb +10 -0
- data/app/views/open_conference_ware/users/_block.html.erb +80 -0
- data/app/views/open_conference_ware/users/_list.html.erb +17 -0
- data/app/views/open_conference_ware/users/edit.html.erb +73 -0
- data/app/views/open_conference_ware/users/index.html.erb +28 -0
- data/app/views/open_conference_ware/users/new.html.erb +7 -0
- data/app/views/open_conference_ware/users/proposals.html.erb +24 -0
- data/app/views/open_conference_ware/users/show.html.erb +5 -0
- data/app/views/open_conference_ware/welcome/test.html.haml +8 -0
- data/bin/rails +8 -0
- data/ci/Gemfile.ci +13 -0
- data/ci/copy_database_config.rb +6 -0
- data/ci/database.mysql.yml +5 -0
- data/ci/database.postgresql.yml +4 -0
- data/ci/database.sqlite.yml +5 -0
- data/config/initializers/acts_as_taggable_on.rb +2 -0
- data/config/initializers/date_time_formats.rb +9 -0
- data/config/routes.rb +74 -0
- data/db/migrate/20131203235128_create_open_conference_ware_authentications.rb +14 -0
- data/db/migrate/20131203235216_create_open_conference_ware_comments.rb +14 -0
- data/db/migrate/20131203235418_create_open_conference_ware_events.rb +27 -0
- data/db/migrate/20131203235524_create_open_conference_ware_proposals.rb +36 -0
- data/db/migrate/20131203235723_create_open_conference_ware_rooms.rb +20 -0
- data/db/migrate/20131203235831_create_open_conference_ware_schedule_items.rb +18 -0
- data/db/migrate/20131203235910_create_open_conference_ware_selector_votes.rb +10 -0
- data/db/migrate/20131203235934_create_open_conference_ware_session_types.rb +14 -0
- data/db/migrate/20131204000008_create_open_conference_ware_snippets.rb +15 -0
- data/db/migrate/20131204000048_create_open_conference_ware_taggings.rb +16 -0
- data/db/migrate/20131204000129_create_open_conference_ware_tags.rb +7 -0
- data/db/migrate/20131204000147_create_open_conference_ware_tracks.rb +15 -0
- data/db/migrate/20131204000230_create_open_conference_ware_user_favorites.rb +10 -0
- data/db/migrate/20131204000251_create_open_conference_ware_users.rb +24 -0
- data/db/migrate/20131204000355_create_proposals_users_join_table.rb +8 -0
- data/db/seeds.rb +31 -0
- data/features/comment_create.feature +9 -0
- data/features/comment_destroy.feature +22 -0
- data/features/comment_new.feature +22 -0
- data/features/step_definitions/authentication_steps.rb +22 -0
- data/features/step_definitions/comment_create_steps.rb +5 -0
- data/features/step_definitions/comment_destroy_steps.rb +13 -0
- data/features/step_definitions/comment_new_steps.rb +41 -0
- data/features/step_definitions/notification_steps.rb +3 -0
- data/features/step_definitions/web_steps.rb +263 -0
- data/features/support/env.rb +58 -0
- data/features/support/helpers.rb +17 -0
- data/features/support/paths.rb +35 -0
- data/gem-public_cert.pem +22 -0
- data/lib/defer_proxy.rb +127 -0
- data/lib/ext/color_rgb_serializer_fix.rb +18 -0
- data/lib/ext/string_possessiveize.rb +7 -0
- data/lib/ext/vpim_icalendar_extra_properties.rb +25 -0
- data/lib/generators/open_conference_ware/install/USAGE +12 -0
- data/lib/generators/open_conference_ware/install/install_generator.rb +35 -0
- data/lib/generators/open_conference_ware/install/templates/config_initializer.rb +110 -0
- data/lib/generators/open_conference_ware/install/templates/omniauth_initializer.rb +33 -0
- data/lib/open_conference_ware.rb +156 -0
- data/lib/open_conference_ware/dependencies.rb +38 -0
- data/lib/open_conference_ware/engine.rb +38 -0
- data/lib/open_conference_ware/omni_auth_builder.rb +8 -0
- data/lib/open_conference_ware/version.rb +3 -0
- data/lib/rwikibot_page_drone.rb +70 -0
- data/lib/tasks/.gitkeep +0 -0
- data/lib/tasks/audio.rake +53 -0
- data/lib/tasks/cucumber.rake +65 -0
- data/lib/tasks/export.rake +170 -0
- data/lib/tasks/mediawiki.rake +96 -0
- data/lib/tasks/open_conference_ware_tasks.rake +16 -0
- data/lib/tasks/schedule.rake +103 -0
- data/lib/tasks/snippets.rake +23 -0
- data/open_conference_ware.gemspec +67 -0
- data/original_graphics/favorite.psd +0 -0
- data/spec/controllers/open_conference_ware/application_controller_spec.rb +309 -0
- data/spec/controllers/open_conference_ware/authentications_controller_spec.rb +87 -0
- data/spec/controllers/open_conference_ware/comments_controller_spec.rb +146 -0
- data/spec/controllers/open_conference_ware/events_controller_spec.rb +102 -0
- data/spec/controllers/open_conference_ware/manage_events_controller_spec.rb +103 -0
- data/spec/controllers/open_conference_ware/proposals_controller_spec.rb +1273 -0
- data/spec/controllers/open_conference_ware/rooms_controller_spec.rb +190 -0
- data/spec/controllers/open_conference_ware/selector_votes_controller_spec.rb +263 -0
- data/spec/controllers/open_conference_ware/session_types_controller_spec.rb +190 -0
- data/spec/controllers/open_conference_ware/sessions_routing_spec.rb +13 -0
- data/spec/controllers/open_conference_ware/tracks_controller_spec.rb +190 -0
- data/spec/controllers/open_conference_ware/user_favorites_controller_spec.rb +127 -0
- data/spec/controllers/open_conference_ware/users_controller_spec.rb +166 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +30 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/01_open_conference_ware.rb +110 -0
- data/spec/dummy/config/initializers/02_omniauth.rb +17 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/db/schema.rb +219 -0
- data/spec/dummy/db/seeds.rb +10 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/factories/authentication_factory.rb +16 -0
- data/spec/factories/common_factory.rb +4 -0
- data/spec/factories/event_factory.rb +26 -0
- data/spec/factories/proposal_factory.rb +57 -0
- data/spec/factories/proposal_user_factory.rb +7 -0
- data/spec/factories/room_factory.rb +11 -0
- data/spec/factories/schedule_item_factory.rb +13 -0
- data/spec/factories/session_types_factory.rb +10 -0
- data/spec/factories/snippet_factory.rb +7 -0
- data/spec/factories/track_factory.rb +12 -0
- data/spec/factories/user_factory.rb +22 -0
- data/spec/factories/user_favorite_factory.rb +7 -0
- data/spec/features/sign_in_spec.rb +11 -0
- data/spec/features/snippets_spec.rb +38 -0
- data/spec/fixtures/open_conference_ware_comments.yml +27 -0
- data/spec/fixtures/open_conference_ware_events.yml +56 -0
- data/spec/fixtures/open_conference_ware_proposals.yml +256 -0
- data/spec/fixtures/open_conference_ware_rooms.yml +13 -0
- data/spec/fixtures/open_conference_ware_schedule_items.yml +23 -0
- data/spec/fixtures/open_conference_ware_session_types.yml +19 -0
- data/spec/fixtures/open_conference_ware_snippets.yml +62 -0
- data/spec/fixtures/open_conference_ware_tracks.yml +65 -0
- data/spec/fixtures/open_conference_ware_user_favorites.yml +7 -0
- data/spec/fixtures/open_conference_ware_users.yml +87 -0
- data/spec/helpers/open_conference_ware/application_helper_spec.rb +58 -0
- data/spec/helpers/open_conference_ware/authentications_helper_spec.rb +15 -0
- data/spec/helpers/open_conference_ware/display_link_to_helper_spec.rb +52 -0
- data/spec/helpers/open_conference_ware/proposals_helper_spec.rb +32 -0
- data/spec/helpers/open_conference_ware/rooms_helper_spec.rb +11 -0
- data/spec/helpers/open_conference_ware/session_types_helper_spec.rb +15 -0
- data/spec/helpers/open_conference_ware/time_range_helper_spec.rb +56 -0
- data/spec/helpers/open_conference_ware/tracks_helper_spec.rb +11 -0
- data/spec/helpers/open_conference_ware/user_favorites_helper_spec.rb +11 -0
- data/spec/integration/open_conference_ware/cache_lookups_mixin_spec.rb +122 -0
- data/spec/mixins/open_conference_ware/normalize_url_mixin_spec.rb +65 -0
- data/spec/models/open_conference_ware/authentication_spec.rb +67 -0
- data/spec/models/open_conference_ware/event_spec.rb +211 -0
- data/spec/models/open_conference_ware/proposal_spec.rb +606 -0
- data/spec/models/open_conference_ware/room_spec.rb +14 -0
- data/spec/models/open_conference_ware/schedule_item_spec.rb +12 -0
- data/spec/models/open_conference_ware/schedule_spec.rb +358 -0
- data/spec/models/open_conference_ware/selector_vote_spec.rb +12 -0
- data/spec/models/open_conference_ware/session_type_spec.rb +15 -0
- data/spec/models/open_conference_ware/snippet_spec.rb +13 -0
- data/spec/models/open_conference_ware/speaker_mailer_spec.rb +91 -0
- data/spec/models/open_conference_ware/track_spec.rb +36 -0
- data/spec/models/open_conference_ware/user_favorite_spec.rb +41 -0
- data/spec/models/open_conference_ware/user_spec.rb +77 -0
- data/spec/ocw_config.rb +76 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_helper.rb +55 -0
- data/spec/spec_helper_customizations.rb +125 -0
- data/spec/support/add_all_helpers_to_view.rb +24 -0
- data/spec/support/authenticated_test_helper.rb +27 -0
- data/spec/support/fixture_shortcuts.rb +18 -0
- data/spec/support/omniauth.rb +34 -0
- data/spec/support/valid_params_extraction.rb +15 -0
- data/spec/views/open_conference_ware/proposals/_room_control.html.erb_spec.rb +23 -0
- data/spec/views/open_conference_ware/proposals/_transition_control.html.erb_spec.rb +14 -0
- data/spec/views/open_conference_ware/proposals/show.html.erb_spec.rb +128 -0
- data/spec/views/open_conference_ware/rooms/index.html.erb_spec.rb +19 -0
- data/spec/views/open_conference_ware/rooms/show.html.erb_spec.rb +15 -0
- data/spec/views/open_conference_ware/selector_votes/index.html.erb_spec.rb +41 -0
- data/spec/views/open_conference_ware/session_types/edit.html.erb_spec.rb +25 -0
- data/spec/views/open_conference_ware/session_types/index.html.erb_spec.rb +19 -0
- data/spec/views/open_conference_ware/session_types/new.html.erb_spec.rb +24 -0
- data/spec/views/open_conference_ware/session_types/show.html.erb_spec.rb +18 -0
- data/spec/views/open_conference_ware/tracks/edit.html.erb_spec.rb +25 -0
- data/spec/views/open_conference_ware/tracks/index.html.erb_spec.rb +56 -0
- data/spec/views/open_conference_ware/tracks/new.html.erb_spec.rb +26 -0
- data/spec/views/open_conference_ware/tracks/show.html.erb_spec.rb +23 -0
- data/spec/views/open_conference_ware/user_favorites/index.html.erb_spec.rb +29 -0
- data/spec/views/open_conference_ware/users/index_spec.rb +24 -0
- data/util/add_id3_tags_to_mp3.rb +57 -0
- data/util/schedule_demo.rb +36 -0
- data/util/seed_schedule.rb +61 -0
- data/util/sessions_to_lanyrd.rb +166 -0
- data/util/transfer_schedule_items.rb +25 -0
- data/util/update_proposal_status_from_voting_spreadsheet.rb +26 -0
- data/util/user_favorites_contention_report.rb +42 -0
- data/util/user_favorites_contention_report.sh +9 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.svg +228 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/images/farbtastic/marker.png +0 -0
- data/vendor/assets/images/farbtastic/mask.png +0 -0
- data/vendor/assets/images/farbtastic/wheel.png +0 -0
- data/vendor/assets/images/idselector/aol.ico +0 -0
- data/vendor/assets/images/idselector/arrow.gif +0 -0
- data/vendor/assets/images/idselector/arrow_white_back.png +0 -0
- data/vendor/assets/images/idselector/arrow_white_forward.png +0 -0
- data/vendor/assets/images/idselector/blogger.ico +0 -0
- data/vendor/assets/images/idselector/claimid.ico +0 -0
- data/vendor/assets/images/idselector/flickr.ico +0 -0
- data/vendor/assets/images/idselector/google.ico +0 -0
- data/vendor/assets/images/idselector/lj.ico +0 -0
- data/vendor/assets/images/idselector/myopenid.ico +0 -0
- data/vendor/assets/images/idselector/openid.ico +0 -0
- data/vendor/assets/images/idselector/technorati.ico +0 -0
- data/vendor/assets/images/idselector/verisign.ico +0 -0
- data/vendor/assets/images/idselector/vidoop2.ico +0 -0
- data/vendor/assets/images/idselector/vox.ico +0 -0
- data/vendor/assets/images/idselector/yahoo.ico +0 -0
- data/vendor/assets/javascripts/audiojs/audio.min.js +23 -0
- data/vendor/assets/javascripts/audiojs/audiojs.swf +0 -0
- data/vendor/assets/javascripts/audiojs/player-graphics.gif +0 -0
- data/vendor/assets/javascripts/bootstrap.js +1999 -0
- data/vendor/assets/javascripts/farbtastic.js +329 -0
- data/vendor/assets/javascripts/html5shiv.js +8 -0
- data/vendor/assets/javascripts/idselector.js +538 -0
- data/vendor/assets/javascripts/idselector~original.js +532 -0
- data/vendor/assets/javascripts/jquery-migrate-1.2.1.js +521 -0
- data/vendor/assets/javascripts/jquery.localScroll.js +106 -0
- data/vendor/assets/javascripts/jquery.scrollTo.js +174 -0
- data/vendor/assets/javascripts/respond.min.js +6 -0
- data/vendor/assets/stylesheets/bootstrap-theme.css +384 -0
- data/vendor/assets/stylesheets/bootstrap.css +6805 -0
- data/vendor/assets/stylesheets/farbtastic.css.scss +38 -0
- data/vendor/assets/stylesheets/persona-buttons.css +229 -0
- data/vendor/assets/stylesheets/reset-fonts-grids.css +7 -0
- metadata +1174 -0
- metadata.gz.sig +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe OpenConferenceWare::Track do
|
|
4
|
+
fixtures :all
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@valid_attributes = {
|
|
8
|
+
title: "value for title",
|
|
9
|
+
description: "value for description",
|
|
10
|
+
excerpt: "value for excerpt",
|
|
11
|
+
color: "#00CC00",
|
|
12
|
+
event_id: 1
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should build a new instance given valid attributes" do
|
|
17
|
+
build(:track, @valid_attributes).should be_valid
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should not be valid without an event" do
|
|
21
|
+
build(:track, event: nil).should_not be_valid
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should sort alphabetically by title" do
|
|
25
|
+
tracks = [ build(:track, title: 'Blues'),
|
|
26
|
+
build(:track, title: 'Punk'),
|
|
27
|
+
build(:track, title: 'Folk'),
|
|
28
|
+
nil ]
|
|
29
|
+
|
|
30
|
+
sorted_tracks = tracks.sort
|
|
31
|
+
sorted_tracks[0].should be_nil
|
|
32
|
+
sorted_tracks[1].title.should == 'Blues'
|
|
33
|
+
sorted_tracks[2].title.should == 'Folk'
|
|
34
|
+
sorted_tracks[3].title.should == 'Punk'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe OpenConferenceWare::UserFavorite do
|
|
4
|
+
fixtures :all
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@user = users(:quentin)
|
|
8
|
+
@proposal = proposals(:clio_chupacabras)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def add_favorite
|
|
12
|
+
return UserFavorite.add(@user.id, @proposal.id)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def remove_favorite
|
|
16
|
+
return UserFavorite.remove(@user.id, @proposal.id)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should add and create new record" do
|
|
20
|
+
proc { add_favorite }.should change(UserFavorite, :count).by(1)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should add and accept existing record" do
|
|
24
|
+
add_favorite
|
|
25
|
+
proc { add_favorite }.should_not change(UserFavorite, :count)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should remove and destroy existing record" do
|
|
29
|
+
add_favorite
|
|
30
|
+
proc { remove_favorite }.should change(UserFavorite, :count).by(-1)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should remove and do nothing if no existing record" do
|
|
34
|
+
proc { remove_favorite }.should_not change(UserFavorite, :count)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should return ids of user's favorite proposals" do
|
|
38
|
+
add_favorite
|
|
39
|
+
UserFavorite.proposal_ids_for(@user).should == [@proposal.id]
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe OpenConferenceWare::User do
|
|
4
|
+
describe "get" do
|
|
5
|
+
before(:each) do
|
|
6
|
+
@user = stub_model(User)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should return a given user instance" do
|
|
10
|
+
User.get(@user).should == @user
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should return a user instance for the given id string" do
|
|
14
|
+
User.should_receive(:find).with(42).and_return(@user)
|
|
15
|
+
User.get("42").should == @user
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should return a user instance for the given id" do
|
|
19
|
+
User.should_receive(:find).with(42).and_return(@user)
|
|
20
|
+
User.get(42).should == @user
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should fail when given a nil" do
|
|
24
|
+
lambda { User.get(nil) }.should raise_error(TypeError)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "blog links" do
|
|
29
|
+
fixtures :open_conference_ware_users
|
|
30
|
+
|
|
31
|
+
before(:each) do
|
|
32
|
+
@user = users(:quentin)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should validate blog_url" do
|
|
36
|
+
@user.blog_url = "http://foo.bar/"
|
|
37
|
+
@user.should be_valid
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should invalidate bad blog_url" do
|
|
41
|
+
@user.blog_url = "omg://"
|
|
42
|
+
@user.should_not be_valid
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should return twitter url" do
|
|
46
|
+
@user.twitter = "bubba"
|
|
47
|
+
@user.twitter_url.should == "http://twitter.com/bubba"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should return nil if no twitter" do
|
|
51
|
+
@user.twitter = nil
|
|
52
|
+
@user.twitter_url.should be_blank
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should return identica url" do
|
|
56
|
+
@user.identica = "bubba"
|
|
57
|
+
@user.identica_url.should == "http://identi.ca/bubba"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should return nil if no identica" do
|
|
61
|
+
@user.identica = nil
|
|
62
|
+
@user.identica_url.should be_blank
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "created from an authentication" do
|
|
67
|
+
let(:authentication) { build(:authentication) }
|
|
68
|
+
subject(:user) { User.create_from_authentication(authentication) }
|
|
69
|
+
|
|
70
|
+
it { expect(user).to be_valid }
|
|
71
|
+
it { expect(user).to be_persisted }
|
|
72
|
+
it { expect(user.fullname).to eq authentication.name }
|
|
73
|
+
it { expect(user.biography).to eq authentication.info["description"] }
|
|
74
|
+
it { expect(user.website).to eq authentication.info["urls"]["wikipedia"] }
|
|
75
|
+
it { expect(user.authentications).to include(authentication) }
|
|
76
|
+
end
|
|
77
|
+
end
|
data/spec/ocw_config.rb
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
OpenConferenceWare.configure do |config|
|
|
2
|
+
# Public URL of website:
|
|
3
|
+
config.public_url = 'http://opensourcebridge.org/'
|
|
4
|
+
|
|
5
|
+
# URL where OCW is installed
|
|
6
|
+
config.app_root_url = 'http://opensourcebridge.org/'
|
|
7
|
+
|
|
8
|
+
# URL of wiki with session notes (optional). This 'printf' format contains
|
|
9
|
+
# positional variables that filled by Proposal#session_notes_url:
|
|
10
|
+
# * %1 => site's public URL
|
|
11
|
+
# * %2 => parent OR event slug
|
|
12
|
+
# * %3 => event slug
|
|
13
|
+
# E.g., '%1$s%2$s/wiki/' may translate to 'http://my_site.com/my_parent_slug/wiki'
|
|
14
|
+
config.session_notes_url_format = '%1$swiki/%2$s/'
|
|
15
|
+
|
|
16
|
+
# Organization running event:
|
|
17
|
+
config.organization = 'Open Source Bridge'
|
|
18
|
+
|
|
19
|
+
# Abbreviated name for use in URLs and proposal slugs.
|
|
20
|
+
config.organization_slug = 'osb'
|
|
21
|
+
|
|
22
|
+
# Top-level tagline or description.
|
|
23
|
+
config.tagline = 'The conference for open source citizens / June 26-29, 2012 / Portland, OR'
|
|
24
|
+
|
|
25
|
+
# Aggreement to show on proposal pages.
|
|
26
|
+
config.agreement = 'I have reviewed and agree to the <a href="http://opensourcebridge.org/about/recording-policy/" target="_blank">recording policy</a> and <a href="http://opensourcebridge.org/about/code-of-conduct/" target="_blank">code of conduct</a>. I understand that Open Source Bridge is not the appropriate place for commercial promotion ("spam") of a product, service or solution and this not welcomed by the audience.'
|
|
27
|
+
|
|
28
|
+
# Breadcrumbs that are always visible, each breadcrumb is a name and URI:
|
|
29
|
+
config.breadcrumbs = []
|
|
30
|
+
|
|
31
|
+
# What is the slug for the current event? E.g., if this is '2009' and the user visits the '/proposals' URI, then the system will try to lookup an Event with the '2009' slug and redirect to '/events/2009 proposals' if it's available.
|
|
32
|
+
# TODO: Setting the current event here is a short-term hack and will be replaced shortly with a Site record that tracks the current event in the database and provides a way to set it through an admin web UI.
|
|
33
|
+
config.current_event_slug = '2012'
|
|
34
|
+
|
|
35
|
+
# Can people create proposals without logging in?
|
|
36
|
+
config.have_anonymous_proposals = false
|
|
37
|
+
|
|
38
|
+
# Do proposals have excerpts?
|
|
39
|
+
config.have_proposal_excerpts = true
|
|
40
|
+
|
|
41
|
+
# Do events have tracks?
|
|
42
|
+
config.have_event_tracks = true
|
|
43
|
+
|
|
44
|
+
# Do events have session types?
|
|
45
|
+
config.have_event_session_types = true
|
|
46
|
+
|
|
47
|
+
# Display events picker so user can pick between multiple events?
|
|
48
|
+
config.have_events_picker = false
|
|
49
|
+
|
|
50
|
+
# Are proposals associated with multiple presenters?
|
|
51
|
+
config.have_multiple_presenters = true
|
|
52
|
+
|
|
53
|
+
# Can people upload pictures of themselves?
|
|
54
|
+
config.have_user_pictures = true
|
|
55
|
+
|
|
56
|
+
# Is profile information, like biography, stored in the User record? Else stored in Proposal.
|
|
57
|
+
config.have_user_profiles = true
|
|
58
|
+
|
|
59
|
+
# Do events have rooms?
|
|
60
|
+
config.have_event_rooms = true
|
|
61
|
+
|
|
62
|
+
# Should a proposal ask for the submitter's speaking experience?
|
|
63
|
+
config.have_proposal_speaking_experience = true
|
|
64
|
+
|
|
65
|
+
# Can proposals have start times?
|
|
66
|
+
config.have_proposal_start_times = true
|
|
67
|
+
|
|
68
|
+
# Can proposals have statuses?
|
|
69
|
+
config.have_proposal_statuses = true
|
|
70
|
+
|
|
71
|
+
# Can users add comments until a toggle is flipped on the event?
|
|
72
|
+
config.have_event_proposal_comments_after_deadline = true
|
|
73
|
+
|
|
74
|
+
# What message is displayed as a hint to explain the audience level?
|
|
75
|
+
config.proposal_audience_level_hint = "(Tell us the intended audience experience level for this talk)"
|
|
76
|
+
end
|
data/spec/rcov.opts
ADDED
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'simplecov'
|
|
2
|
+
require 'cadre/simplecov'
|
|
3
|
+
require 'coveralls'
|
|
4
|
+
|
|
5
|
+
SimpleCov.start 'rails' do
|
|
6
|
+
formatter SimpleCov::Formatter::MultiFormatter[
|
|
7
|
+
Coveralls::SimpleCov::Formatter,
|
|
8
|
+
SimpleCov::Formatter::HTMLFormatter,
|
|
9
|
+
Cadre::SimpleCov::VimFormatter
|
|
10
|
+
]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Coveralls.wear!('rails')
|
|
14
|
+
|
|
15
|
+
ENV['RAILS_ENV'] ||= 'test'
|
|
16
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
|
17
|
+
require 'rspec/rails'
|
|
18
|
+
require 'rspec/autorun'
|
|
19
|
+
require 'factory_girl_rails'
|
|
20
|
+
|
|
21
|
+
Rails.backtrace_cleaner.remove_silencers!
|
|
22
|
+
|
|
23
|
+
# Load support files
|
|
24
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
|
25
|
+
|
|
26
|
+
RSpec.configure do |config|
|
|
27
|
+
# ## Mock Framework
|
|
28
|
+
#
|
|
29
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
|
30
|
+
#
|
|
31
|
+
# config.mock_with :mocha
|
|
32
|
+
# config.mock_with :flexmock
|
|
33
|
+
# config.mock_with :rr
|
|
34
|
+
|
|
35
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
|
36
|
+
config.fixture_path = "#{::OpenConferenceWare::Engine.root}/spec/fixtures"
|
|
37
|
+
|
|
38
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
|
39
|
+
# examples within a transaction, remove the following line or assign false
|
|
40
|
+
# instead of true.
|
|
41
|
+
config.use_transactional_fixtures = true
|
|
42
|
+
|
|
43
|
+
# If true, the base class of anonymous controllers will be inferred
|
|
44
|
+
# automatically. This will be the default behavior in future versions of
|
|
45
|
+
# rspec-rails.
|
|
46
|
+
config.infer_base_class_for_anonymous_controllers = false
|
|
47
|
+
|
|
48
|
+
# Run specs in random order to surface order dependencies. If you find an
|
|
49
|
+
# order dependency and want to debug it, you can fix the order by providing
|
|
50
|
+
# the seed, which is printed after each run.
|
|
51
|
+
# --seed 1234
|
|
52
|
+
config.order = "random"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
require File.dirname(__FILE__) + "/spec_helper_customizations"
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Customizations made to RSpec environment
|
|
2
|
+
|
|
3
|
+
#---[ Settings ]--------------------------------------------------------
|
|
4
|
+
|
|
5
|
+
# Use spec-specific settings
|
|
6
|
+
require 'ocw_config'
|
|
7
|
+
|
|
8
|
+
#---[ Libraries ]-------------------------------------------------------
|
|
9
|
+
|
|
10
|
+
include AuthenticatedTestHelper
|
|
11
|
+
|
|
12
|
+
require 'factory_girl'
|
|
13
|
+
require 'database_cleaner'
|
|
14
|
+
require 'capybara/rspec'
|
|
15
|
+
|
|
16
|
+
OpenConferenceWare::Engine.routes.default_url_options[:host] = 'test.host'
|
|
17
|
+
|
|
18
|
+
# rspec
|
|
19
|
+
RSpec.configure do |config|
|
|
20
|
+
config.include FactoryGirl::Syntax::Methods
|
|
21
|
+
config.include OpenConferenceWare::Engine.routes.url_helpers
|
|
22
|
+
config.use_transactional_fixtures = false
|
|
23
|
+
|
|
24
|
+
config.before(:suite) do
|
|
25
|
+
if ActiveRecord::Base.configurations[Rails.env]['adapter'] == "sqlite3"
|
|
26
|
+
DatabaseCleaner.strategy = :truncation, {except: ['open_conference_ware_snippets']}
|
|
27
|
+
else
|
|
28
|
+
DatabaseCleaner.strategy = :transaction
|
|
29
|
+
end
|
|
30
|
+
DatabaseCleaner.clean_with(:truncation)
|
|
31
|
+
|
|
32
|
+
OpenConferenceWare::Engine.load_seed
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
config.before(:each) do
|
|
36
|
+
DatabaseCleaner.start
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
config.after(:each) do
|
|
40
|
+
DatabaseCleaner.clean
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# List all of the OpenConferenceWare models, so we can make namespaced tests a bit nicer
|
|
44
|
+
models = %w(Authentication Comment Event Proposal Room Schedule ScheduleItem SelectorVote SessionType Snippet Track User UserFavorite)
|
|
45
|
+
|
|
46
|
+
# Fixture file names need to match the database table names.
|
|
47
|
+
# Set the corresponding OpenConferenceWare model for each of them.
|
|
48
|
+
config.before(:all) do
|
|
49
|
+
self.class.set_fixture_class(
|
|
50
|
+
Hash[models.map do |model|
|
|
51
|
+
["open_conference_ware_#{model.underscore.pluralize}", OpenConferenceWare.const_get(model)]
|
|
52
|
+
end]
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Stub un-namespaced constants for OpenConferenceWare models, so that we can
|
|
57
|
+
# refer to things like User, instead of OpenConferenceWare::User in specs.
|
|
58
|
+
config.before(:each) do
|
|
59
|
+
models.each do |model|
|
|
60
|
+
stub_const(model, OpenConferenceWare.const_get(model))
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
#---[ Functions ]-------------------------------------------------------
|
|
66
|
+
|
|
67
|
+
module OCWHelpers
|
|
68
|
+
# Save the response.body to "/tmp/response.html", to aid manual debugging.
|
|
69
|
+
def save_body
|
|
70
|
+
filename = "/tmp/response.html"
|
|
71
|
+
bytes = File.open(filename, "w+"){|h| h.write(response.body)}
|
|
72
|
+
return [filename, bytes]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Stub the +controller+ to provide the current event. If the +event+ or
|
|
76
|
+
# +status+ aren't provided, reasonable defaults will be used.
|
|
77
|
+
#
|
|
78
|
+
# Options:
|
|
79
|
+
# * event: Event object to use, else a mock will be generated.
|
|
80
|
+
# * events: Array of events to use, else the :event or its mock will be used.
|
|
81
|
+
# * status: Assignment status to use, else :assigned_to_current will be used.
|
|
82
|
+
def stub_current_event!(opts={})
|
|
83
|
+
controller = opts[:controller] || @controller
|
|
84
|
+
event = opts[:event] || stub_model(Event, id: 1, title: "Current Event", slug: 'current')
|
|
85
|
+
events = opts[:events] || [event]
|
|
86
|
+
status = opts[:status] || :assigned_to_current
|
|
87
|
+
controller.stub(
|
|
88
|
+
get_current_event_and_assignment_status: [event, status],
|
|
89
|
+
assigned_event: event,
|
|
90
|
+
assigned_events: events)
|
|
91
|
+
|
|
92
|
+
if self.respond_to?(:assign)
|
|
93
|
+
assign(:event, event)
|
|
94
|
+
assign(:events, events)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
Event.stub(:lookup).and_return do |*args|
|
|
98
|
+
key = args.pop
|
|
99
|
+
key ? event : events
|
|
100
|
+
end
|
|
101
|
+
return event
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def stub_settings_accessors_on(view)
|
|
105
|
+
view.stub(:can_edit?).and_return(false)
|
|
106
|
+
view.stub(:selector?).and_return(false)
|
|
107
|
+
view.stub(:admin?).and_return(false)
|
|
108
|
+
view.stub(:current_user_is_proposal_speaker?).and_return(false)
|
|
109
|
+
view.stub(:proposal_statuses?).and_return(true)
|
|
110
|
+
view.stub(:multiple_presenters?).and_return(true)
|
|
111
|
+
view.stub(:user_profiles?).and_return(true)
|
|
112
|
+
view.stub(:event_tracks?).and_return(true)
|
|
113
|
+
view.stub(:event_session_types?).and_return(true)
|
|
114
|
+
view.stub(:proposal_excerpts?).and_return(true)
|
|
115
|
+
view.stub(:event_rooms?).and_return(true)
|
|
116
|
+
view.stub(:proposal_speaking_experience?).and_return(true)
|
|
117
|
+
view.stub(:schedule_visible?).and_return(true)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
RSpec.configure do |c|
|
|
122
|
+
c.include OCWHelpers
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
#---[ fin ]-------------------------------------------------------------
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module AddAllHelpersToView
|
|
2
|
+
HELPER_PATH = OpenConferenceWare::Engine.root.join('app', 'helpers', 'open_conference_ware', '*.rb')
|
|
3
|
+
def _all_helper_modules
|
|
4
|
+
@@_all_helper_modules ||= [
|
|
5
|
+
Dir.glob(HELPER_PATH).map {|f| "OpenConferenceWare::#{File.basename(f, '.rb').camelize}".constantize },
|
|
6
|
+
OpenConferenceWare::Engine.routes.url_helpers
|
|
7
|
+
].flatten
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def add_all_helpers_to(view)
|
|
11
|
+
_all_helper_modules.each do |helper_module|
|
|
12
|
+
view.extend(helper_module)
|
|
13
|
+
self.class.send(:include, helper_module)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
RSpec.configure do |c|
|
|
19
|
+
c.include AddAllHelpersToView
|
|
20
|
+
|
|
21
|
+
c.before :each, type: :view do
|
|
22
|
+
add_all_helpers_to(view)
|
|
23
|
+
end
|
|
24
|
+
end
|