droom 0.0.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -2
- data/app/assets/images/droom/Untitled-1.png +0 -0
- data/app/assets/images/droom/acceptance.png +0 -0
- data/app/assets/images/droom/add.png +0 -0
- data/app/assets/images/droom/asterisk.png +0 -0
- data/app/assets/images/droom/asterisk_up.png +0 -0
- data/app/assets/images/droom/checkboxes.png +0 -0
- data/app/assets/images/droom/clear.png +0 -0
- data/app/assets/images/droom/cog.png +0 -0
- data/app/assets/images/droom/copy.png +0 -0
- data/app/assets/images/droom/copy_to_dropbox.png +0 -0
- data/app/assets/images/droom/crosses.png +0 -0
- data/app/assets/images/droom/dark_scrap_icons.png +0 -0
- data/app/assets/images/droom/defilter.png +0 -0
- data/app/assets/images/droom/delete.png +0 -0
- data/app/assets/images/droom/dropbox.png +0 -0
- data/app/assets/images/droom/dropbox_button.png +0 -0
- data/app/assets/images/droom/dropbox_button_small.png +0 -0
- data/app/assets/images/droom/edit.png +0 -0
- data/app/assets/images/droom/expand.png +0 -0
- data/app/assets/images/droom/expander.png +0 -0
- data/app/assets/images/droom/folder.png +0 -0
- data/app/assets/images/droom/image_box.png +0 -0
- data/app/assets/images/droom/in_dropbox.png +0 -0
- data/app/assets/images/droom/integration_buttons.png +0 -0
- data/app/assets/images/droom/leftright.png +0 -0
- data/app/assets/images/droom/manage.png +0 -0
- data/app/assets/images/droom/medium_object_icons.png +0 -0
- data/app/assets/images/droom/object_icons.png +0 -0
- data/app/assets/images/droom/playable.png +0 -0
- data/app/assets/images/droom/revoke.png +0 -0
- data/app/assets/images/droom/scrap_icons.png +0 -0
- data/app/assets/images/droom/search.png +0 -0
- data/app/assets/images/droom/small_asterisk.png +0 -0
- data/app/assets/images/droom/small_cog.png +0 -0
- data/app/assets/images/droom/small_download.png +0 -0
- data/app/assets/images/droom/small_image_box.png +0 -0
- data/app/assets/images/droom/smalladd.png +0 -0
- data/app/assets/images/droom/smallarrows.png +0 -0
- data/app/assets/images/droom/smallcopy.png +0 -0
- data/app/assets/images/droom/smalldelete.png +0 -0
- data/app/assets/images/droom/smalldownload.png +0 -0
- data/app/assets/images/droom/smalledit.png +0 -0
- data/app/assets/images/droom/smallmanage.png +0 -0
- data/app/assets/images/droom/star.png +0 -0
- data/app/assets/images/droom/symbols.png +0 -0
- data/app/assets/images/droom/tinyarrows.png +0 -0
- data/app/assets/images/droom/to_dropbox.png +0 -0
- data/app/assets/images/droom/twisty.png +0 -0
- data/app/assets/images/droom/youtube_icon.png +0 -0
- data/app/assets/javascripts/droom.js.coffee +62 -65
- data/app/assets/javascripts/droom/actions.js.coffee +492 -0
- data/app/assets/javascripts/droom/ajax.js.coffee +84 -0
- data/app/assets/javascripts/droom/{lib/extensions.js.coffee → extensions.js.coffee} +22 -15
- data/app/assets/javascripts/droom/lib/ZeroClipboard.js +334 -0
- data/app/assets/javascripts/droom/lib/ZeroClipboard.swf +0 -0
- data/app/assets/javascripts/droom/lib/ZeroClipboard10.swf +0 -0
- data/app/assets/javascripts/droom/map.js.coffee +124 -86
- data/app/assets/javascripts/droom/popups.js.coffee +252 -0
- data/app/assets/javascripts/droom/stream.js.coffee +92 -0
- data/app/assets/javascripts/droom/utilities.js.coffee +120 -0
- data/app/assets/javascripts/droom/widgets.js.coffee +1209 -0
- data/app/assets/stylesheets/_definitions.css.sass +189 -0
- data/app/assets/stylesheets/droom.css.sass +1429 -376
- data/app/assets/stylesheets/lib/_kalendae.css.sass +2 -5
- data/app/assets/stylesheets/lib/_popups.css.sass +86 -0
- data/app/assets/stylesheets/lib/_toolbar.css.sass +17 -11
- data/app/controllers/droom/agenda_categories_controller.rb +24 -0
- data/app/controllers/droom/calendars_controller.rb +29 -0
- data/app/controllers/droom/confirmations_controller.rb +38 -0
- data/app/controllers/droom/dashboard_controller.rb +2 -0
- data/app/controllers/droom/documents_controller.rb +42 -51
- data/app/controllers/droom/dropbox_tokens_controller.rb +61 -0
- data/app/controllers/droom/engine_controller.rb +8 -23
- data/app/controllers/droom/events_controller.rb +39 -27
- data/app/controllers/droom/folders_controller.rb +106 -0
- data/app/controllers/droom/group_invitations_controller.rb +15 -7
- data/app/controllers/droom/groups_controller.rb +4 -4
- data/app/controllers/droom/invitations_controller.rb +37 -9
- data/app/controllers/droom/memberships_controller.rb +5 -3
- data/app/controllers/droom/organisations_controller.rb +53 -0
- data/app/controllers/droom/people_controller.rb +46 -27
- data/app/controllers/droom/preferences_controller.rb +34 -0
- data/app/controllers/droom/scraps_controller.rb +77 -0
- data/app/controllers/droom/search_controller.rb +66 -0
- data/app/controllers/droom/suggestions_controller.rb +22 -35
- data/app/controllers/droom/users_controller.rb +69 -0
- data/app/controllers/droom/venues_controller.rb +1 -2
- data/app/controllers/droom/youtube_controller.rb +22 -0
- data/app/helpers/droom/droom_helper.rb +93 -5
- data/app/models/droom/agenda_category.rb +8 -1
- data/app/models/droom/calendar.rb +19 -0
- data/app/models/droom/category.rb +4 -6
- data/app/models/droom/document.rb +103 -64
- data/app/models/droom/document_attachment.rb +13 -47
- data/app/models/droom/dropbox_document.rb +41 -0
- data/app/models/droom/dropbox_token.rb +29 -0
- data/app/models/droom/event.rb +125 -90
- data/app/models/droom/folder.rb +134 -0
- data/app/models/droom/group.rb +68 -27
- data/app/models/droom/group_invitation.rb +12 -3
- data/app/models/droom/invitation.rb +50 -8
- data/app/models/droom/mailing_list_membership.rb +128 -0
- data/app/models/droom/membership.rb +71 -9
- data/app/models/droom/organisation.rb +22 -0
- data/app/models/droom/page.rb +3 -3
- data/app/models/droom/person.rb +180 -166
- data/app/models/droom/personal_folder.rb +31 -0
- data/app/models/droom/preference.rb +35 -0
- data/app/models/droom/recurrence_rule.rb +1 -1
- data/app/models/droom/scrap.rb +110 -0
- data/app/models/droom/tag.rb +120 -0
- data/app/models/droom/tagging.rb +13 -0
- data/app/models/droom/user.rb +211 -0
- data/app/models/droom/user_action_observer.rb +12 -0
- data/app/models/droom/venue.rb +56 -39
- data/app/views/cropper/uploads/_crop.html.haml +46 -0
- data/app/views/devise/mailer/confirmation_instructions.en.html.haml +24 -0
- data/app/views/devise/mailer/reset_password_instructions.en.html.haml +21 -0
- data/app/views/devise/passwords/edit.html.haml +31 -0
- data/app/views/devise/passwords/new.html.haml +21 -0
- data/app/views/devise/sessions/new.html.haml +33 -0
- data/app/views/droom/agenda_categories/_form.html.haml +22 -0
- data/app/views/droom/agenda_categories/new.html.haml +6 -0
- data/app/views/droom/calendars/_action_menu.html.haml +6 -0
- data/app/views/droom/calendars/index.html.haml +12 -0
- data/app/views/droom/calendars/show.rss.builder +0 -0
- data/app/views/droom/confirmations/show.html.haml +40 -0
- data/app/views/droom/dashboard/_calendar.html.haml +1 -0
- data/app/views/droom/dashboard/_folders.html.haml +5 -0
- data/app/views/droom/dashboard/_future_events.html.haml +18 -0
- data/app/views/droom/dashboard/_invitations.html.haml +1 -0
- data/app/views/droom/dashboard/_past_events.haml +14 -0
- data/app/views/droom/dashboard/_quicksearch.html.haml +6 -0
- data/app/views/droom/dashboard/_stream.html.haml +9 -0
- data/app/views/droom/dashboard/index.html.haml +5 -3
- data/app/views/droom/documents/_action_menu.html.haml +7 -0
- data/app/views/droom/documents/_documents.html.haml +5 -0
- data/app/views/droom/documents/_documents_list.html.haml +6 -6
- data/app/views/droom/documents/_documents_table.html.haml +29 -10
- data/app/views/droom/documents/_form.html.haml +3 -7
- data/app/views/droom/documents/_listing.html.haml +5 -6
- data/app/views/droom/documents/_pagination.html.haml +8 -0
- data/app/views/droom/documents/_search_result.html.haml +14 -0
- data/app/views/droom/documents/_suggested.html.haml +0 -5
- data/app/views/droom/documents/_table_document.html.haml +2 -8
- data/app/views/droom/documents/edit.html.haml +7 -1
- data/app/views/droom/documents/index.html.haml +10 -27
- data/app/views/droom/documents/new.html.haml +10 -1
- data/app/views/droom/dropbox_tokens/new.html.haml +6 -0
- data/app/views/droom/events/_action_menu.html.haml +15 -0
- data/app/views/droom/events/_event.html.haml +67 -57
- data/app/views/droom/events/_form.html.haml +15 -4
- data/app/views/droom/events/_invitations.html.haml +4 -19
- data/app/views/droom/events/_search_result.html.haml +19 -0
- data/app/views/droom/events/_views.html.haml +2 -2
- data/app/views/droom/events/edit.html.haml +7 -1
- data/app/views/droom/events/index.html.haml +27 -10
- data/app/views/droom/events/index.rss.builder +1 -1
- data/app/views/droom/events/new.html.haml +6 -1
- data/app/views/droom/events/show.html.haml +5 -1
- data/app/views/droom/folders/_action_menu.html.haml +14 -0
- data/app/views/droom/folders/_attachments.html.haml +3 -0
- data/app/views/droom/folders/_contents.html.haml +6 -0
- data/app/views/droom/folders/_folder.html.haml +20 -0
- data/app/views/droom/folders/_folders.html.haml +2 -0
- data/app/views/droom/folders/_form.html.haml +18 -0
- data/app/views/droom/folders/edit.html.haml +6 -0
- data/app/views/droom/folders/index.html.haml +32 -0
- data/app/views/droom/folders/new.html.haml +6 -0
- data/app/views/droom/folders/show.html.haml +1 -0
- data/app/views/droom/group_invitations/_form.html.haml +15 -4
- data/app/views/droom/group_invitations/new.html.haml +6 -1
- data/app/views/droom/groups/_action_menu.haml +11 -0
- data/app/views/droom/groups/_form.html.haml +10 -11
- data/app/views/droom/groups/_group.html.haml +9 -10
- data/app/views/droom/groups/_groups.html.haml +2 -3
- data/app/views/droom/groups/_search_result.html.haml +16 -0
- data/app/views/droom/groups/_suggested.html.haml +7 -0
- data/app/views/droom/groups/edit.html.haml +7 -1
- data/app/views/droom/groups/index.html.haml +6 -3
- data/app/views/droom/groups/new.html.haml +7 -0
- data/app/views/droom/groups/show.html.haml +1 -1
- data/app/views/droom/invitations/_created.html.haml +1 -1
- data/app/views/droom/invitations/_form.html.haml +9 -5
- data/app/views/droom/invitations/_invitation.html.haml +9 -0
- data/app/views/droom/invitations/_invitations.html.haml +8 -0
- data/app/views/droom/invitations/new.html.haml +6 -1
- data/app/views/droom/memberships/_member.html.haml +1 -1
- data/app/views/droom/memberships/_membership_toggle.html.haml +10 -0
- data/app/views/droom/memberships/new.html.haml +10 -0
- data/app/views/droom/organisations/_action_menu.html.haml +7 -0
- data/app/views/droom/organisations/_form.html.haml +25 -0
- data/app/views/droom/organisations/_organisation.html.haml +23 -0
- data/app/views/droom/organisations/_organisations.html.haml +2 -0
- data/app/views/droom/organisations/_suggested.html.haml +7 -0
- data/app/views/droom/organisations/edit.html.haml +6 -0
- data/app/views/droom/organisations/index.html.haml +20 -0
- data/app/views/droom/organisations/new.html.haml +6 -0
- data/app/views/droom/organisations/show.html.haml +1 -0
- data/app/views/droom/pages/_full_page.html.haml +1 -1
- data/app/views/droom/pages/index.html.haml +1 -1
- data/app/views/droom/panels/_account.html.haml +16 -0
- data/app/views/droom/panels/_admin.html.haml +23 -0
- data/app/views/droom/panels/_devices.html.haml +19 -0
- data/app/views/droom/panels/_dropbox.html.haml +17 -0
- data/app/views/droom/panels/_email.html.haml +16 -0
- data/app/views/droom/panels/_keywords.html.haml +3 -0
- data/app/views/droom/panels/_networks.html.haml +3 -0
- data/app/views/droom/panels/_readers.html.haml +18 -0
- data/app/views/droom/panels/_rss.html.haml +10 -0
- data/app/views/droom/panels/_search.html.haml +16 -0
- data/app/views/droom/panels/_vcal.html.haml +3 -0
- data/app/views/droom/people/_action_menu.html.haml +22 -0
- data/app/views/droom/people/_form.html.haml +69 -39
- data/app/views/droom/people/_listing.html.haml +19 -0
- data/app/views/droom/people/_memberships.html.haml +24 -0
- data/app/views/droom/people/_people.html.haml +5 -29
- data/app/views/droom/people/_person.html.haml +30 -32
- data/app/views/droom/people/_search_result.html.haml +14 -0
- data/app/views/droom/people/_suggested.html.haml +10 -5
- data/app/views/droom/people/edit.html.haml +9 -1
- data/app/views/droom/people/index.html.haml +6 -9
- data/app/views/droom/people/new.html.haml +6 -1
- data/app/views/droom/people/show.html.haml +1 -1
- data/app/views/droom/preferences/_checkbox.html.haml +7 -0
- data/app/views/droom/preferences/_radio_set.html.haml +9 -0
- data/app/views/droom/scraps/_action_menu.html.haml +9 -0
- data/app/views/droom/scraps/_caption.html.haml +9 -0
- data/app/views/droom/scraps/_credit.html.haml +10 -0
- data/app/views/droom/scraps/_form.html.haml +77 -0
- data/app/views/droom/scraps/_heading.html.haml +16 -0
- data/app/views/droom/scraps/_scrap.html.haml +17 -0
- data/app/views/droom/scraps/_search_result.html.haml +5 -0
- data/app/views/droom/scraps/_stream.html.haml +4 -0
- data/app/views/droom/scraps/_suggested.html.haml +5 -0
- data/app/views/droom/scraps/_thumb.html.haml +5 -0
- data/app/views/droom/scraps/edit.html.haml +2 -0
- data/app/views/droom/scraps/full/_document.html.haml +6 -0
- data/app/views/droom/scraps/full/_event.html.haml +20 -0
- data/app/views/droom/scraps/full/_image.html.haml +4 -0
- data/app/views/droom/scraps/full/_link.html.haml +5 -0
- data/app/views/droom/scraps/full/_quote.html.haml +8 -0
- data/app/views/droom/scraps/full/_text.html.haml +4 -0
- data/app/views/droom/scraps/full/_video.html.haml +4 -0
- data/app/views/droom/scraps/index.atom.builder +26 -0
- data/app/views/droom/scraps/index.html.haml +15 -0
- data/app/views/droom/scraps/new.html.haml +2 -0
- data/app/views/droom/scraps/show.html.haml +4 -0
- data/app/views/droom/scraps/thumbs/_document.html.haml +9 -0
- data/app/views/droom/scraps/thumbs/_event.html.haml +17 -0
- data/app/views/droom/scraps/thumbs/_image.html.haml +6 -0
- data/app/views/droom/scraps/thumbs/_link.html.haml +10 -0
- data/app/views/droom/scraps/thumbs/_quote.html.haml +8 -0
- data/app/views/droom/scraps/thumbs/_text.html.haml +8 -0
- data/app/views/droom/scraps/thumbs/_video.html.haml +6 -0
- data/app/views/droom/shared/_controls.html.haml +5 -3
- data/app/views/droom/shared/_excerpt.html.haml +2 -0
- data/app/views/droom/shared/_navigation.html.haml +4 -4
- data/app/views/droom/shared/_panels.html.haml +4 -0
- data/app/views/droom/shared/_quicklinks.html.haml +5 -0
- data/app/views/droom/shared/_search_form.html.haml +2 -1
- data/app/views/droom/shared/_search_results.html.haml +9 -0
- data/app/views/droom/shared/_suggestions.html.haml +13 -9
- data/app/views/droom/shared/_title_excerpt.haml +2 -0
- data/app/views/droom/shared/search.html.haml +18 -0
- data/app/views/droom/users/_confirmation.html.haml +2 -0
- data/app/views/droom/users/_dropbox_status.html.haml +2 -0
- data/app/views/droom/users/_form.html.haml +34 -0
- data/app/views/droom/users/_user.html.haml +2 -0
- data/app/views/droom/users/_user_or_person.html.haml +63 -0
- data/app/views/droom/users/_users_table.html.haml +17 -0
- data/app/views/droom/users/edit.html.haml +10 -0
- data/app/views/droom/users/index.html.haml +42 -0
- data/app/views/droom/users/unwelcome.en.html.haml +17 -0
- data/app/views/droom/venues/_search_result.html.haml +17 -0
- data/app/views/droom/youtube/show.html.haml +12 -0
- data/app/views/kaminari/_paginator.html.haml +16 -0
- data/app/views/layouts/droom/application.html.haml +17 -17
- data/app/views/layouts/droom/email.html.haml +59 -0
- data/config/cucumber.yml +8 -0
- data/config/initializers/devise.rb +240 -0
- data/config/locales/devise.en.yml +58 -0
- data/config/locales/en.yml +203 -32
- data/config/routes.rb +55 -16
- data/config/sunspot.yml +17 -0
- data/db/migrate/20121120115447_tags.rb +18 -0
- data/db/migrate/20130116155331_dropbox_tokens.rb +9 -0
- data/db/migrate/20130118103540_folders.rb +47 -0
- data/db/migrate/20130124113715_preferences.rb +10 -0
- data/db/migrate/20130125132427_users_in_droom.rb +58 -0
- data/db/migrate/20130129142307_mobile_phones.rb +7 -0
- data/db/migrate/20130130120124_folder_ancestry_to_parents.rb +7 -0
- data/db/migrate/20130131161430_mailing_lists.rb +37 -0
- data/db/migrate/20130207091903_preference_uuids.rb +5 -0
- data/db/migrate/20130207123614_stream.rb +13 -0
- data/db/migrate/20130208035113_access_token_secret.rb +5 -0
- data/db/migrate/20130214145014_person_image.rb +9 -0
- data/db/migrate/20130217152644_devise_confirmable.rb +13 -0
- data/db/migrate/20130225095328_create_droom_calendars.rb +20 -0
- data/db/migrate/20130226092944_give_scraps_document.rb +5 -0
- data/db/migrate/20130228083509_privateness.rb +9 -0
- data/db/migrate/20130228134143_store_metadata.rb +5 -0
- data/db/migrate/20130305150648_folders_nicely.rb +6 -0
- data/db/migrate/20130305151936_niceties.rb +7 -0
- data/db/migrate/20130308103807_create_droom_dropbox_documents.rb +11 -0
- data/db/migrate/20130308154552_dropbox_documents_changed.rb +5 -0
- data/db/migrate/20130326135738_user_titles.rb +5 -0
- data/lib/droom.rb +189 -22
- data/lib/droom/engine.rb +6 -1
- data/lib/droom/folders.rb +106 -0
- data/lib/droom/lazy_hash.rb +73 -0
- data/lib/droom/{helpers.rb → model_helpers.rb} +1 -1
- data/lib/droom/monkeys.rb +21 -2
- data/lib/droom/routing.rb +13 -0
- data/lib/droom/searchability.rb +25 -0
- data/lib/droom/taggability.rb +60 -0
- data/lib/droom/title_case.rb +101 -0
- data/lib/droom/user_config.rb +67 -0
- data/lib/droom/validators.rb +6 -0
- data/lib/droom/version.rb +1 -1
- data/lib/generators/droom/install/templates/droom_initializer.rb +0 -1
- data/lib/tasks/cucumber.rake +65 -0
- data/spec/datasets/calendar_events_dataset.rb +44 -0
- data/spec/datasets/calendar_pages_dataset.rb +8 -0
- data/spec/datasets/calendar_sites_dataset.rb +6 -0
- data/spec/datasets/calendars_dataset.rb +34 -0
- data/spec/datasets/documents_dataset.rb +28 -0
- data/spec/datasets/recurrence_dataset.rb +7 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +65 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +21 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +38 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +38 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +7 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/config/sunspot.yml +17 -0
- data/spec/dummy/db/migrate/20120911070124_create_droom_data.droom.rb +135 -0
- data/spec/dummy/db/migrate/20120921094604_agenda_sections.droom.rb +14 -0
- data/spec/dummy/db/migrate/20120921094605_add_postal_address_to_people.droom.rb +11 -0
- data/spec/dummy/db/migrate/20121102064845_give_groups_descriptions.droom.rb +6 -0
- data/spec/dummy/db/migrate/20121102064846_more_names.droom.rb +6 -0
- data/spec/dummy/db/migrate/20121102064847_event_agenda_sections.droom.rb +14 -0
- data/spec/dummy/db/migrate/20121102064848_create_group_invitations.droom.rb +11 -0
- data/spec/dummy/db/migrate/20121102064849_give_people_positions.droom.rb +6 -0
- data/spec/dummy/db/migrate/20121102064850_help_pages.droom.rb +14 -0
- data/spec/dummy/db/migrate/20121102064851_category_slugs.droom.rb +6 -0
- data/spec/dummy/db/migrate/20121102064852_document_links.droom.rb +15 -0
- data/spec/dummy/db/migrate/20121102064853_people_visibility.droom.rb +8 -0
- data/spec/dummy/db/migrate/20121102094820_shy_people.droom.rb +6 -0
- data/spec/dummy/db/migrate/20121102095927_visibility_defaults.droom.rb +10 -0
- data/spec/dummy/db/migrate/20130121122352_tags.droom.rb +19 -0
- data/spec/dummy/db/migrate/20130121122353_dropbox.droom.rb +10 -0
- data/spec/dummy/db/migrate/20130121122354_folders.droom.rb +48 -0
- data/spec/dummy/db/migrate/20130128142902_memberships_expire.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130128142903_give_documents_extracted_text.droom.rb +6 -0
- data/spec/dummy/db/migrate/20130128142904_preferences.droom.rb +11 -0
- data/spec/dummy/db/migrate/20130128142905_users_in_droom.droom.rb +59 -0
- data/spec/dummy/db/migrate/20130130120631_folder_ancestry_to_parents.droom.rb +8 -0
- data/spec/dummy/db/migrate/20130201103737_mobile_phones.droom.rb +8 -0
- data/spec/dummy/db/migrate/20130201103738_mailing_lists.droom.rb +38 -0
- data/spec/dummy/db/schema.rb +327 -0
- data/spec/dummy/log/sunspot-solr-test.log.1 +222 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/system/droom/documents/files/000/000/001/original/frog.png +0 -0
- data/spec/dummy/public/system/droom/documents/files/000/000/001/original/rat.png +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/solr/conf/admin-extra.html +31 -0
- data/spec/dummy/solr/conf/elevate.xml +36 -0
- data/spec/dummy/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/spec/dummy/solr/conf/protwords.txt +21 -0
- data/spec/dummy/solr/conf/schema.xml +238 -0
- data/spec/dummy/solr/conf/scripts.conf +24 -0
- data/spec/dummy/solr/conf/solrconfig.xml +934 -0
- data/spec/dummy/solr/conf/spellings.txt +2 -0
- data/spec/dummy/solr/conf/stopwords.txt +58 -0
- data/spec/dummy/solr/conf/synonyms.txt +31 -0
- data/spec/dummy/solr/data/development/index/segments.gen +0 -0
- data/spec/dummy/solr/data/development/index/segments_1 +0 -0
- data/spec/dummy/solr/data/development/spellchecker/segments.gen +0 -0
- data/spec/dummy/solr/data/development/spellchecker/segments_1 +0 -0
- data/spec/dummy/solr/data/test/index/segments.gen +0 -0
- data/spec/dummy/solr/data/test/index/segments_3nu +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments.gen +0 -0
- data/spec/dummy/solr/data/test/spellchecker/segments_1 +0 -0
- data/spec/dummy/webdav/1/group/rat.png +0 -0
- data/spec/dummy/webdav/1/unattached/rat.png +0 -0
- data/spec/dummy/webdav/group/rat.png +0 -0
- data/spec/dummy/webdav/unattached/rat.png +0 -0
- data/spec/dummy/webdav/unattached/rat_v1.png +0 -0
- data/spec/factories/agenda_categories.rb +5 -0
- data/spec/factories/categories.rb +5 -0
- data/spec/factories/documents.rb +16 -0
- data/spec/factories/events.rb +41 -0
- data/spec/factories/folders.rb +5 -0
- data/spec/factories/groups.rb +6 -0
- data/spec/factories/memberships.rb +5 -0
- data/spec/factories/people.rb +16 -0
- data/spec/factories/recurrence_rules.rb +25 -0
- data/spec/factories/user.rb +6 -0
- data/spec/fixtures/dummy.ics +59 -0
- data/spec/fixtures/images/frog.png +0 -0
- data/spec/fixtures/images/rat.png +0 -0
- data/spec/fixtures/ny.ics +36 -0
- data/spec/lib/droom/folders_spec.rb +46 -0
- data/spec/lib/droom/lazy_hash_spec.rb +33 -0
- data/spec/models/droom/agenda_category_spec.rb +15 -0
- data/spec/models/droom/document_spec.rb +76 -0
- data/spec/models/droom/event_spec.rb +154 -0
- data/spec/models/droom/folder_spec.rb +5 -0
- data/spec/models/droom/ical_spec.rb +62 -0
- data/spec/models/droom/mailing_list_membership_spec.rb +81 -0
- data/spec/models/droom/membership_spec.rb +22 -0
- data/spec/models/droom/person_spec.rb +72 -0
- data/spec/models/droom/recurrence_rule_spec.rb +81 -0
- data/spec/models/droom/user_spec.rb +27 -0
- data/spec/models/droom/visibility_spec.rb +6 -0
- data/spec/spec_helper.rb +119 -0
- data/spec/support/matchers/content_type_matcher.rb +17 -0
- metadata +591 -36
- data/app/assets/javascripts/droom/calendar.js.coffee +0 -121
- data/app/assets/javascripts/droom/drag_sort.js.coffee +0 -22
- data/app/assets/javascripts/droom/forms.js.coffee +0 -746
- data/app/assets/javascripts/droom/sort.js.coffee +0 -126
- data/app/assets/javascripts/droom/suggester.js.coffee +0 -230
- data/app/controllers/droom/document_attachments_controller.rb +0 -19
- data/app/models/droom/document_link.rb +0 -31
- data/app/models/droom/personal_document.rb +0 -98
- data/app/views/droom/dashboard/_marginalia.html.haml +0 -3
- data/app/views/droom/dashboard/_my_future_events.html.haml +0 -9
- data/app/views/droom/dashboard/_my_group_documents.html.haml +0 -6
- data/app/views/droom/dashboard/_my_past_events.haml +0 -6
- data/app/views/droom/documents/_event_document_form.html.haml +0 -15
- data/app/views/droom/errors/bang.html.haml +0 -12
- data/app/views/droom/errors/not_allowed.html.haml +0 -12
- data/app/views/droom/errors/not_found.html.haml +0 -12
- data/app/views/droom/events/_attachment.html.haml +0 -1
- data/app/views/droom/events/_attachment_list.html.haml +0 -4
- data/app/views/droom/invitations/_attending_people.html.haml +0 -8
- data/config/initializers/dav.rb +0 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::AgendaCategory do
|
|
4
|
+
context "Creation" do
|
|
5
|
+
before :each do
|
|
6
|
+
@event = FactoryGirl.create(:simple_event)
|
|
7
|
+
@category = FactoryGirl.create(:category)
|
|
8
|
+
@agenda = FactoryGirl.create(:agenda_category, :event => @event, :category => @category)
|
|
9
|
+
end
|
|
10
|
+
it "should create a subfolder of the event's folder" do
|
|
11
|
+
@agenda.folder.parent.should eq @event.folder
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::Document, :solr => true do
|
|
4
|
+
|
|
5
|
+
context "Housekeeping:" do
|
|
6
|
+
before :each do
|
|
7
|
+
@document = FactoryGirl.create(:document)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "on creation" do
|
|
11
|
+
it "should get a version number of 1" do
|
|
12
|
+
@document.version.should == 1
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "on update" do
|
|
17
|
+
describe "if its file has changed" do
|
|
18
|
+
it "should trigger a version update" do
|
|
19
|
+
@document.file = Rack::Test::UploadedFile.new(Droom::Engine.root() + 'spec/fixtures/images/frog.png', 'image/png')
|
|
20
|
+
@document.save
|
|
21
|
+
@document.version.should == 2
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "if its file has not changed" do
|
|
26
|
+
it "should not trigger a version update" do
|
|
27
|
+
@document.name = "something else"
|
|
28
|
+
@document.save
|
|
29
|
+
@document.version.should == 1
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "Visibility:" do
|
|
36
|
+
before :each do
|
|
37
|
+
@document = FactoryGirl.create(:document)
|
|
38
|
+
@public_document = FactoryGirl.create(:public_document)
|
|
39
|
+
@person = FactoryGirl.create(:person)
|
|
40
|
+
@event = FactoryGirl.create(:simple_event)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should not be visible to unlinked people" do
|
|
44
|
+
Droom::Document.visible_to(@person).should_not include(@document)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "when public" do
|
|
48
|
+
it "should be visible to unlinked people" do
|
|
49
|
+
Droom::Document.visible_to(@person).should include(@public_document)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "when linked" do
|
|
54
|
+
before do
|
|
55
|
+
@document.attach_to(@event)
|
|
56
|
+
@invitation = @person.invite_to(@event)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should be visible to linked people" do
|
|
60
|
+
pending "change to rules on who can see what"
|
|
61
|
+
Droom::Document.visible_to(@person).should include(@document)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should become invisible when people are deinvited" do
|
|
65
|
+
@invitation.destroy
|
|
66
|
+
Droom::Document.visible_to(@person).should_not include(@document)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should become invisible when detached" do
|
|
70
|
+
@document.detach_from(@event)
|
|
71
|
+
Droom::Document.visible_to(@person).should_not include(@document)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::Event, :solr => true do
|
|
4
|
+
|
|
5
|
+
describe "A simple event" do
|
|
6
|
+
before :each do
|
|
7
|
+
@event = FactoryGirl.create(:simple_event)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should be valid" do
|
|
11
|
+
@event.valid?.should be_true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
[:name, :start].each do |field|
|
|
15
|
+
it "should not be valid without a #{field}" do
|
|
16
|
+
@event.send "#{field}=".intern, nil
|
|
17
|
+
@event.valid?.should be_false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should not mind if it has no end date" do
|
|
22
|
+
@event.finish.should be_nil
|
|
23
|
+
@event.duration.should == 0
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "can change its" do
|
|
27
|
+
|
|
28
|
+
it "start time" do
|
|
29
|
+
@event.start_time.should == Time.new(2009,11,03,18,30,00)
|
|
30
|
+
@event.start_time = "01:00"
|
|
31
|
+
@event.start_time.should == Time.new(2009,11,03,01,00,00)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "start date" do
|
|
35
|
+
@event.start_date.should == Date.new(2009,11,03)
|
|
36
|
+
@event.start_date = "20 March 2013"
|
|
37
|
+
@event.start_date.should == Date.new(2013,03,20)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "finish time" do
|
|
41
|
+
@event.finish_time.should == nil
|
|
42
|
+
@event.finish_time = "9pm"
|
|
43
|
+
@event.finish_time.should == Time.new(2009, 11, 3, 21, 0, 0)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "finish date" do
|
|
47
|
+
@event.finish_date.should == nil
|
|
48
|
+
@event.finish_date = "30 April 2014"
|
|
49
|
+
@event.finish_date.should == Date.new(2014,04,30)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "A spanning event" do
|
|
55
|
+
before :each do
|
|
56
|
+
@event = FactoryGirl.create(:spanning_event)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should have the right duration" do
|
|
60
|
+
@event.duration.should == 32.hours
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should not be marked as all day" do
|
|
64
|
+
@event.all_day?.should be_false
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "A repeating event" do
|
|
69
|
+
before :each do
|
|
70
|
+
@event = FactoryGirl.create(:repeating_event)
|
|
71
|
+
@event.send :update_occurrences
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should have the right duration" do
|
|
75
|
+
@event.duration.should == 90.minutes
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should not be marked as all day" do
|
|
79
|
+
@event.all_day?.should be_false
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should have a recurrence rule" do
|
|
83
|
+
@event.recurrence_rules.should_not be_empty
|
|
84
|
+
@event.recurrence_rules.first.period.should == 'weekly'
|
|
85
|
+
@event.recurrence_rules.first.interval.should == 1
|
|
86
|
+
@event.recurrence_rules.first.limiting_count.should == 4
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should have occurrences" do
|
|
90
|
+
@event.occurrences.should_not be_empty
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe "recurring" do
|
|
94
|
+
before do
|
|
95
|
+
@occurrence = @event.occurrences.last
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should have the right master" do
|
|
99
|
+
@occurrence.master.should == @event
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "should resemble its master in most ways" do
|
|
103
|
+
[:name, :description, :venue, :url, :duration].each do |att|
|
|
104
|
+
@occurrence.send(att).should == @event.send(att)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "should have a different date and uuid" do
|
|
109
|
+
[:start, :finish, :uuid].each do |att|
|
|
110
|
+
@occurrence.send(att).should_not == @event.send(att)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
describe "retrieval" do
|
|
118
|
+
before :each do
|
|
119
|
+
base = Time.new(2013, 1, 1, 9, 0, 0)
|
|
120
|
+
40.times { |i| FactoryGirl.create(:closed_event, :start => base + i.days, :finish => base + i.days + 1.hour) }
|
|
121
|
+
FactoryGirl.create(:closed_event, :start => base + 28.days, :finish => base + 32.days)
|
|
122
|
+
|
|
123
|
+
@beg = Time.new(2013, 1, 5, 12, 0, 0)
|
|
124
|
+
@end = Time.new(2013, 1, 15, 12, 0, 0)
|
|
125
|
+
@span = Chronic.parse("January 2013", :guess => false)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "should return all the events falling before a date" do
|
|
129
|
+
|
|
130
|
+
# p "before beg: #{Droom::Event.before(@beg).map(&:name).join(',')}"
|
|
131
|
+
|
|
132
|
+
Droom::Event.before(@beg).count.should == 5
|
|
133
|
+
Droom::Event.before(@end).count.should == 15
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "should return all the events falling after a date" do
|
|
137
|
+
Droom::Event.after(@beg).count.should == 36
|
|
138
|
+
Droom::Event.after(@end).count.should == 26
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "should return all the events that start or end between two dates" do
|
|
142
|
+
Droom::Event.coincident_with(@beg, @end).count.should == 10
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "should return all the events that overlap with a span" do
|
|
146
|
+
Droom::Event.falling_within(@span).count.should == 32
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "should return all the events that lie within a span" do
|
|
150
|
+
Droom::Event.in_span(@span).count.should == 31
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
#
|
|
3
|
+
# describe Ical do
|
|
4
|
+
#
|
|
5
|
+
# before do
|
|
6
|
+
# @ical = calendars(:dummy).ical
|
|
7
|
+
# end
|
|
8
|
+
#
|
|
9
|
+
# describe "reading an ics file with GMT times" do
|
|
10
|
+
# before do
|
|
11
|
+
# lambda {@ical.parse_file(File.dirname(__FILE__) + "/../files/dummy.ics")}.should_not raise_error
|
|
12
|
+
# @test = @ical.calendar.events.find_by_title("Test Event")
|
|
13
|
+
# @allday = @ical.calendar.events.find_by_title("All Day")
|
|
14
|
+
# @repeating = @ical.calendar.events.find_by_title("Repeating Event")
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# it "should import events" do
|
|
18
|
+
# @ical.calendar.events.should_not be_empty
|
|
19
|
+
# @test.title.should_not be_nil
|
|
20
|
+
# @allday.title.should_not be_nil
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# it "should record timed events (with GMT times)" do
|
|
24
|
+
# @test.start_date.should == DateTime.civil(2009, 2, 24, 9, 0, 0)
|
|
25
|
+
# @test.all_day?.should be_false
|
|
26
|
+
# end
|
|
27
|
+
#
|
|
28
|
+
# it "should record all-day events (with GMT times set to midnight)" do
|
|
29
|
+
# @allday.start_date.should == DateTime.civil(2009, 2, 24)
|
|
30
|
+
# @allday.end_date.should == DateTime.civil(2009, 2, 24)
|
|
31
|
+
# @allday.all_day?.should be_true
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# it "should record repeating events" do
|
|
35
|
+
# @repeating.recurrence_rules.should_not be_empty
|
|
36
|
+
# rrule = @repeating.recurrence_rules.first
|
|
37
|
+
# rrule.period.downcase.should == 'daily'
|
|
38
|
+
# rrule.interval.should == 1
|
|
39
|
+
# rrule.limiting_date.should == DateTime.civil(2009, 2, 28, 4, 59, 59)
|
|
40
|
+
# end
|
|
41
|
+
#
|
|
42
|
+
# end
|
|
43
|
+
# describe "reading an ics file from another timezone" do
|
|
44
|
+
# before do
|
|
45
|
+
# lambda {@ical.parse_file(File.dirname(__FILE__) + "/../files/ny.ics")}.should_not raise_error
|
|
46
|
+
# end
|
|
47
|
+
#
|
|
48
|
+
# it "should import events" do
|
|
49
|
+
# @ical.calendar.events.should_not be_empty
|
|
50
|
+
# @ical.calendar.events.first.title.should == "Test Event"
|
|
51
|
+
# end
|
|
52
|
+
#
|
|
53
|
+
# it "should record events (with adjusted GMT times)" do
|
|
54
|
+
# @ical.calendar.events.first.start_date.should == DateTime.civil(2009, 2, 24, 14, 0, 0)
|
|
55
|
+
# end
|
|
56
|
+
#
|
|
57
|
+
# end
|
|
58
|
+
#
|
|
59
|
+
#
|
|
60
|
+
#
|
|
61
|
+
# end
|
|
62
|
+
#
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::MailingListMembership do
|
|
4
|
+
before :each do
|
|
5
|
+
@person = FactoryGirl.create(:person)
|
|
6
|
+
@group = FactoryGirl.create(:group)
|
|
7
|
+
@membership = FactoryGirl.create(:membership, :person => @person, :group => @group)
|
|
8
|
+
@mlm = @membership.mailing_list_membership
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "configuration:" do
|
|
12
|
+
it "should try to open a custom mailman connection"
|
|
13
|
+
it "should revert to the local mlm table if that doesn't work"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "associations:" do
|
|
17
|
+
it "should have a membership" do
|
|
18
|
+
@mlm.membership.should_not be_nil
|
|
19
|
+
@mlm.membership.should eq @membership
|
|
20
|
+
end
|
|
21
|
+
it "should get an address from the membership's person" do
|
|
22
|
+
@mlm.address.should_not be_nil
|
|
23
|
+
@mlm.address.should eq @person.email
|
|
24
|
+
end
|
|
25
|
+
it "should get a listname from the membership's group" do
|
|
26
|
+
@mlm.listname.should_not be_nil
|
|
27
|
+
@mlm.listname.should eq @group.name
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context "creation:" do
|
|
32
|
+
it "should get sensible default values" do
|
|
33
|
+
@mlm.bi_lastnotice.should eq 0
|
|
34
|
+
@mlm.bi_date.should eq 0
|
|
35
|
+
@mlm.ack.should be_true
|
|
36
|
+
end
|
|
37
|
+
it "should get configured digest and nomail values" do
|
|
38
|
+
@mlm.digest.should_not be_nil
|
|
39
|
+
@mlm.nomail.should_not be_nil
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context "translation" do
|
|
44
|
+
context "setting a Y/N column" do
|
|
45
|
+
it "should translate false to N" do
|
|
46
|
+
@mlm.nomail = false
|
|
47
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "N"
|
|
48
|
+
end
|
|
49
|
+
it "should translate true to Y" do
|
|
50
|
+
@mlm.nomail = true
|
|
51
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "Y"
|
|
52
|
+
end
|
|
53
|
+
it "should translate 0 to N" do
|
|
54
|
+
@mlm.nomail = 0
|
|
55
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "N"
|
|
56
|
+
end
|
|
57
|
+
it "should translate 1 to Y" do
|
|
58
|
+
@mlm.nomail = 1
|
|
59
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "Y"
|
|
60
|
+
end
|
|
61
|
+
it "should let N through" do
|
|
62
|
+
@mlm.nomail = "N"
|
|
63
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "N"
|
|
64
|
+
end
|
|
65
|
+
it "should let Y through" do
|
|
66
|
+
@mlm.nomail = "Y"
|
|
67
|
+
@mlm.attributes_before_type_cast["nomail"].should eq "Y"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
context "getting a Y/N column" do
|
|
71
|
+
it "should translate N to false" do
|
|
72
|
+
@mlm.nomail = "N"
|
|
73
|
+
@mlm.nomail.should be_false
|
|
74
|
+
end
|
|
75
|
+
it "should translate Y to true" do
|
|
76
|
+
@mlm.nomail = "Y"
|
|
77
|
+
@mlm.nomail.should be_true
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::Membership do
|
|
4
|
+
before :each do
|
|
5
|
+
@person = FactoryGirl.create(:person)
|
|
6
|
+
@group = FactoryGirl.create(:group)
|
|
7
|
+
@membership = FactoryGirl.create(:membership, :person => @person, :group => @group)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "on creation" do
|
|
11
|
+
it "should create a mailing list membership"
|
|
12
|
+
it "should create personal folders"
|
|
13
|
+
it "should cause documents to become visible_to people"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "on destruction" do
|
|
17
|
+
it "should destroy its mailing list membership"
|
|
18
|
+
it "should destroy its personal folders"
|
|
19
|
+
it "should cause documetns to stop being visible_to people"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Droom::Person, :solr => true do
|
|
4
|
+
|
|
5
|
+
before :each do
|
|
6
|
+
@person = FactoryGirl.create(:person, :name => "Tester")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "DAV storage" do
|
|
10
|
+
it "should be able to create a single DAV folder", :solr => true do
|
|
11
|
+
pending "create_dav_directory moved to personal folder and awaiting translation"
|
|
12
|
+
filename = rand(36**12).to_s(36)
|
|
13
|
+
@person.create_dav_directory("just_testing")
|
|
14
|
+
File.exist?(Rails.root + "#{Droom.dav_root}/#{@person.id}/just_testing").should be_true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should be able to create folders for all of its events and groups" do
|
|
18
|
+
pending "create_and_update_dav_directories moved to personal folder and awaiting translation"
|
|
19
|
+
event = FactoryGirl.create(:simple_event, :name => "Event something")
|
|
20
|
+
group = FactoryGirl.create(:group, :name => "Group something")
|
|
21
|
+
|
|
22
|
+
group.attach(FactoryGirl.create(:document, :name => "Attached to group"))
|
|
23
|
+
event.attach(FactoryGirl.create(:document, :name => "Attached to event"))
|
|
24
|
+
|
|
25
|
+
@person.invite_to(event)
|
|
26
|
+
@person.admit_to(group)
|
|
27
|
+
@person.create_and_update_dav_directories
|
|
28
|
+
File.exist?(Rails.root + "#{Droom.dav_root}/#{@person.id}/#{event.slug}").should be_true
|
|
29
|
+
File.exist?(Rails.root + "#{Droom.dav_root}/#{@person.id}/#{group.slug}").should be_true
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should be able to create a folder for directly-attached documents" do
|
|
33
|
+
pending "create_and_update_dav_directories moved to personal folder and awaiting translation. attach method gone"
|
|
34
|
+
document = FactoryGirl.create(:document, :name => "Loose Document")
|
|
35
|
+
@person.attach(document)
|
|
36
|
+
@person.create_and_update_dav_directories
|
|
37
|
+
File.exist?(Rails.root + "#{Droom.dav_root}/#{@person.id}/Unattached").should be_true
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "visibility" do
|
|
42
|
+
before do
|
|
43
|
+
@friend = FactoryGirl.create(:person, :name => "Friend")
|
|
44
|
+
@stranger = FactoryGirl.create(:person, :name => "Stranger")
|
|
45
|
+
@publicist = FactoryGirl.create(:public_person, :name => "Public figure")
|
|
46
|
+
@elvis = FactoryGirl.create(:private_person, :name => "Elvis")
|
|
47
|
+
@group = FactoryGirl.create(:group)
|
|
48
|
+
@person.admit_to(@group)
|
|
49
|
+
@friend.admit_to(@group)
|
|
50
|
+
@elvis.admit_to(@group)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should be able to see people with whom groups are shared" do
|
|
54
|
+
Droom::Person.visible_to(@person).should include(@friend)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should not be able to see people without shared groups" do
|
|
58
|
+
Droom::Person.visible_to(@person).should_not include(@stranger)
|
|
59
|
+
@friend.expel_from(@group)
|
|
60
|
+
Droom::Person.visible_to(@person).should_not include(@friend)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should always be able to see public people" do
|
|
64
|
+
Droom::Person.visible_to(@person).should include(@publicist)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "should never be able to see private people" do
|
|
68
|
+
Droom::Person.visible_to(@person).should_not include(@elvis)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|