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,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,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=\"<evil>&</evil>\"}
|
|
23
|
+
elem.inner_html.should_not == url
|
|
24
|
+
elem.inner_html.should == "<evil>&</evil>"
|
|
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, '–' --> '-')
|
|
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> – <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> – <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> – <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> – <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('–', '-') 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
|