wagn 1.13.0 → 1.14.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +3 -2
- data/VERSION +1 -1
- data/app/controllers/card_controller.rb +33 -38
- data/config/routes.rb +2 -2
- data/config/version.txt +1 -1
- data/db/bootstrap/card_actions.yml +3543 -0
- data/db/bootstrap/card_acts.yml +7 -0
- data/db/bootstrap/card_changes.yml +9150 -0
- data/db/bootstrap/card_references.yml +666 -344
- data/db/bootstrap/cards.yml +3256 -1702
- data/db/migrate/20140822073704_create_new_revision_tables.rb +43 -0
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +62 -0
- data/db/migrate_cards/20130411191151_renaming_for_menu.rb +42 -45
- data/db/migrate_cards/20130411211600_delete_old_related_tab_cards.rb +13 -16
- data/db/migrate_cards/20130419215612_import_help_text.rb +7 -10
- data/db/migrate_cards/20130823192433_add_style_cards.rb +77 -81
- data/db/migrate_cards/20130910183318_move_styles_to_content.rb +4 -7
- data/db/migrate_cards/20130920214038_jsonize_tinymce.rb +9 -12
- data/db/migrate_cards/20130920291703_update_stylesheets.rb +10 -13
- data/db/migrate_cards/20130927191728_account_events.rb +15 -18
- data/db/migrate_cards/20131016172445_common_css_patch.rb +5 -8
- data/db/migrate_cards/20140110193325_reset_account_request_type.rb +4 -7
- data/db/migrate_cards/20140307231621_user_data_to_cards.rb +50 -53
- data/db/migrate_cards/20140317035504_account_requests_to_signups.rb +39 -42
- data/db/migrate_cards/20140512155840_add_script_cards.rb +56 -59
- data/db/migrate_cards/20140629222005_add_email_cards.rb +168 -0
- data/db/migrate_cards/20140725180118_config_card_updates.rb +4 -7
- data/db/migrate_cards/data/mailer/follower_notification_email.html +9 -0
- data/db/migrate_cards/data/mailer/follower_notification_email.txt +11 -0
- data/db/migrate_cards/data/mailer/mail_config.json +22 -0
- data/db/migrate_cards/data/mailer/password_reset_email.html +10 -0
- data/db/migrate_cards/data/mailer/password_reset_email.txt +11 -0
- data/db/migrate_cards/data/mailer/signup_alert_email.html +7 -0
- data/db/migrate_cards/data/mailer/signup_alert_email.txt +5 -0
- data/db/migrate_cards/data/mailer/verification_email.html +9 -0
- data/db/migrate_cards/data/mailer/verification_email.txt +8 -0
- data/db/schema.rb +31 -1
- data/features/conflict.feature +39 -0
- data/features/flexmail.feature +54 -54
- data/features/notifications.feature +4 -2
- data/features/reset_password.feature +1 -1
- data/features/step_definitions/wagn_steps.rb +20 -2
- data/features/step_definitions/window_steps.rb +23 -0
- data/features/support/env.rb +1 -0
- data/features/update_includers.feature +16 -10
- data/features/watch.feature +2 -2
- data/lib/card.rb +11 -10
- data/lib/card/act.rb +63 -0
- data/lib/card/action.rb +194 -0
- data/lib/card/change.rb +29 -0
- data/lib/card/content.rb +1 -1
- data/lib/card/diff.rb +229 -276
- data/lib/card/env.rb +4 -3
- data/lib/card/format.rb +2 -5
- data/lib/card/generators/card_migration/USAGE +15 -3
- data/lib/card/generators/card_migration/card_migration_generator.rb +22 -2
- data/lib/card/generators/card_migration/templates/card_migration.erb +4 -5
- data/lib/card/generators/format/USAGE +2 -2
- data/lib/card/generators/format/format_generator.rb +2 -2
- data/lib/card/generators/set/USAGE +2 -2
- data/lib/card/mailer.rb +21 -100
- data/lib/card/name.rb +4 -3
- data/lib/card/query.rb +2 -2
- data/lib/card/query/card_spec.rb +20 -30
- data/lib/card/query/value_spec.rb +2 -3
- data/lib/card/set.rb +3 -0
- data/lib/wagn/all.rb +6 -0
- data/lib/wagn/application.rb +16 -6
- data/lib/wagn/commands.rb +87 -27
- data/lib/wagn/config/environments/development.rb +17 -0
- data/lib/wagn/config/environments/test.rb +14 -1
- data/lib/wagn/config/initializers/airbrake.rb +1 -1
- data/lib/wagn/generators/wagn/templates/Gemfile +27 -9
- data/lib/wagn/generators/wagn/templates/config/application.rb +12 -3
- data/lib/wagn/generators/wagn/templates/simplecov +5 -0
- data/lib/wagn/generators/wagn/templates/spec/spec_helper.rb +1 -0
- data/lib/wagn/generators/wagn/wagn_generator.rb +75 -45
- data/lib/wagn/location.rb +9 -0
- data/lib/wagn/migration.rb +96 -0
- data/lib/wagn/mods_spec_helper.rb +16 -8
- data/lib/wagn/simplecov_helper.rb +61 -0
- data/lib/wagn/{wagn_spec_helper.rb → spec_helper.rb} +11 -3
- data/lib/wagn/tasks/test.rake +1 -1
- data/lib/wagn/tasks/wagn.rake +100 -34
- data/lib/wagn/version.rb +7 -2
- data/mod/{core → 01_core}/chunk/include.rb +0 -0
- data/mod/{core → 01_core}/chunk/link.rb +0 -0
- data/mod/{core → 01_core}/chunk/literal.rb +0 -0
- data/mod/{core → 01_core}/chunk/reference.rb +15 -3
- data/mod/{core → 01_core}/chunk/uri.rb +0 -0
- data/mod/{core → 01_core}/format/data_format.rb +0 -0
- data/mod/{core → 01_core}/format/html_format.rb +5 -2
- data/mod/{core → 01_core}/format/text_format.rb +0 -0
- data/mod/{core → 01_core}/layout/blank.html +0 -0
- data/mod/{core → 01_core}/layout/default.html +0 -0
- data/mod/{core → 01_core}/layout/noside.html +0 -0
- data/mod/{core → 01_core}/layout/pre.html +0 -0
- data/mod/{core → 01_core}/layout/simple.html +0 -0
- data/mod/{core → 01_core}/set/all/active_card.rb +0 -0
- data/mod/{core → 01_core}/set/all/collection.rb +33 -5
- data/mod/01_core/set/all/content.rb +144 -0
- data/mod/01_core/set/all/erb.rb +11 -0
- data/mod/{core → 01_core}/set/all/fetch.rb +8 -1
- data/mod/01_core/set/all/haml.rb +7 -0
- data/mod/{core → 01_core}/set/all/initialize.rb +4 -2
- data/mod/{core → 01_core}/set/all/name.rb +2 -3
- data/mod/01_core/set/all/notify.rb +215 -0
- data/mod/{core → 01_core}/set/all/pattern.rb +0 -0
- data/mod/{core → 01_core}/set/all/permissions.rb +1 -1
- data/mod/{core → 01_core}/set/all/phases.rb +24 -8
- data/mod/{core → 01_core}/set/all/references.rb +2 -2
- data/mod/{core → 01_core}/set/all/rules.rb +2 -2
- data/mod/{core → 01_core}/set/all/states.rb +1 -1
- data/mod/{core → 01_core}/set/all/templating.rb +4 -4
- data/mod/{core → 01_core}/set/all/tracked_attributes.rb +15 -64
- data/mod/{core → 01_core}/set/all/trash.rb +6 -5
- data/mod/{core → 01_core}/set/all/type.rb +0 -0
- data/mod/{core → 01_core}/set/all/utils.rb +1 -1
- data/mod/{core → 01_core}/set_pattern/01_all.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/02_all_plus.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/03_type.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/04_star.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/05_rstar.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/06_right.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/07_type_plus_right.rb +0 -0
- data/mod/{core → 01_core}/set_pattern/08_self.rb +0 -0
- data/mod/01_core/spec/chunk/literal_spec.rb +14 -0
- data/{spec/mod/core → mod/01_core/spec}/chunk/uri_spec.rb +3 -3
- data/{spec/mod/core → mod/01_core/spec}/format/data_format_spec.rb +0 -0
- data/{spec/mod/core → mod/01_core/spec}/format/html_format_spec.rb +9 -8
- data/{spec/mod/core → mod/01_core/spec}/format/text_format_spec.rb +0 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/active_card_spec.rb +0 -0
- data/mod/01_core/spec/set/all/attribute_tracking_spec.rb +21 -0
- data/mod/01_core/spec/set/all/collection_spec.rb +65 -0
- data/mod/01_core/spec/set/all/content_spec.rb +15 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/fetch_spec.rb +70 -68
- data/{spec/mod/core → mod/01_core/spec}/set/all/initialize_spec.rb +12 -12
- data/{spec/mod/core → mod/01_core/spec}/set/all/name_spec.rb +7 -7
- data/mod/01_core/spec/set/all/notify_spec.rb +199 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/pattern_spec.rb +16 -16
- data/{spec/mod/core → mod/01_core/spec}/set/all/permissions_spec.rb +62 -62
- data/{spec/mod/core → mod/01_core/spec}/set/all/phases_spec.rb +0 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/references_spec.rb +1 -1
- data/{spec/mod/core → mod/01_core/spec}/set/all/rules2_spec.rb +57 -57
- data/mod/01_core/spec/set/all/rules_spec.rb +81 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/states_spec.rb +0 -0
- data/{spec/mod/core → mod/01_core/spec}/set/all/templating_spec.rb +16 -12
- data/{spec/mod/core → mod/01_core/spec}/set/all/tracked_attributes_spec.rb +24 -22
- data/{spec/mod/core → mod/01_core/spec}/set/all/trash_spec.rb +2 -2
- data/{spec/mod/core → mod/01_core/spec}/set/all/type_spec.rb +13 -13
- data/{spec/mod/core → mod/01_core/spec}/set/all/utils_spec.rb +0 -0
- data/mod/{core → 02_basic_types}/set/type/plain_text.rb +0 -0
- data/mod/{standard → 02_basic_types}/set/type/pointer.rb +21 -8
- data/{spec/mod/standard/set/type → mod/02_basic_types/spec/set}/plain_text_spec.rb +0 -0
- data/{spec/mod/standard/set/type → mod/02_basic_types/spec/set}/pointer_spec.rb +22 -9
- data/mod/{standard → 03_machines}/lib/card/machine.rb +3 -2
- data/mod/{standard → 03_machines}/lib/card/machine_input.rb +1 -1
- data/mod/{standard → 03_machines}/lib/javascript/html5shiv-printshiv.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery-ui.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery.autosize.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery.fileupload.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery.iframe-transport.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery.ui.autocomplete.html.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquery_ujs.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/jquerymobile.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/tinymce.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/wagn.js.coffee +17 -9
- data/mod/{standard → 03_machines}/lib/javascript/wagn_menu.js +0 -0
- data/mod/{standard → 03_machines}/lib/javascript/wagn_mod.js.coffee +1 -1
- data/mod/{standard → 03_machines}/lib/stylesheets/functional.scss +1 -1
- data/mod/{standard → 03_machines}/lib/stylesheets/jquery-ui-smoothness.css +0 -0
- data/mod/{standard → 03_machines}/lib/stylesheets/standard.scss +126 -21
- data/mod/{standard → 03_machines}/set/right/machine_output.rb +3 -2
- data/mod/{standard → 03_machines}/set/self/script_card_menu.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/script_html5shiv_printshiv.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/script_jquery.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/script_jquery_helper.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/script_slot.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/script_tinymce.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/style_functional.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/style_jquery_ui_smoothness.rb +1 -1
- data/mod/{standard → 03_machines}/set/self/style_standard.rb +1 -1
- data/mod/{standard → 03_machines}/set/type/coffee_script.rb +0 -0
- data/mod/{standard → 03_machines}/set/type/css.rb +0 -0
- data/mod/{standard → 03_machines}/set/type/java_script.rb +0 -0
- data/mod/{standard → 03_machines}/set/type/scss.rb +0 -0
- data/mod/{standard → 03_machines}/set/type/skin.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/lib/machine_input_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/lib/machine_spec.rb +4 -4
- data/{spec/mod/standard → mod/03_machines/spec}/set/right/machine_output_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_functional_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_jquery_ui_smoothness_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/self/style_standard_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/type/coffeescript_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/type/css_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/type/javascript_spec.rb +0 -0
- data/{spec/mod/standard → mod/03_machines/spec}/set/type/scss_spec.rb +1 -1
- data/{spec/mod/standard → mod/03_machines/spec}/set/type/skin_spec.rb +22 -0
- data/mod/04_settings/lib/card/setting.rb +57 -0
- data/mod/{core/set/right/structure.rb → 04_settings/set/right/add_help.rb} +0 -2
- data/mod/{standard → 04_settings}/set/right/comment.rb +0 -1
- data/mod/{standard → 04_settings}/set/right/create.rb +0 -1
- data/mod/04_settings/set/right/default.rb +3 -0
- data/mod/{standard → 04_settings}/set/right/delete.rb +2 -0
- data/mod/04_settings/set/right/help.rb +3 -0
- data/mod/{standard → 04_settings}/set/right/read.rb +0 -0
- data/mod/{standard → 04_settings}/set/right/script.rb +0 -0
- data/mod/04_settings/set/right/structure.rb +4 -0
- data/mod/{standard → 04_settings}/set/right/style.rb +0 -0
- data/mod/{standard → 04_settings}/set/right/update.rb +0 -0
- data/mod/04_settings/set/self/accountable.rb +2 -0
- data/mod/04_settings/set/self/add_help.rb +2 -0
- data/mod/04_settings/set/self/autoname.rb +2 -0
- data/mod/04_settings/set/self/captcha.rb +2 -0
- data/mod/04_settings/set/self/comment.rb +2 -0
- data/mod/04_settings/set/self/create.rb +2 -0
- data/mod/04_settings/set/self/default.rb +2 -0
- data/mod/04_settings/set/self/delete.rb +2 -0
- data/mod/04_settings/set/self/help.rb +2 -0
- data/mod/04_settings/set/self/input.rb +2 -0
- data/mod/04_settings/set/self/layout.rb +2 -0
- data/mod/04_settings/set/self/on_create.rb +2 -0
- data/mod/04_settings/set/self/on_delete.rb +2 -0
- data/mod/04_settings/set/self/on_update.rb +2 -0
- data/mod/04_settings/set/self/options.rb +2 -0
- data/mod/04_settings/set/self/options_label.rb +2 -0
- data/mod/04_settings/set/self/read.rb +2 -0
- data/mod/04_settings/set/self/script.rb +2 -0
- data/mod/04_settings/set/self/structure.rb +2 -0
- data/mod/04_settings/set/self/style.rb +2 -0
- data/mod/04_settings/set/self/table_of_contents.rb +2 -0
- data/mod/04_settings/set/self/thanks.rb +2 -0
- data/mod/04_settings/set/self/update.rb +2 -0
- data/mod/{standard → 04_settings}/set/type/setting.rb +8 -14
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/add_help_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/comment_spec.rb +5 -5
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/create_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/default_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/delete_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/help_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/read_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/script_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/structure_spec.rb +4 -2
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/style_spec.rb +1 -1
- data/{spec/mod/standard → mod/04_settings/spec}/set/right/update_spec.rb +0 -0
- data/{spec/mod/standard → mod/04_settings/spec}/set/type/setting_spec.rb +0 -0
- data/mod/{standard → 05_standard}/file/103/icon-6566.ico +0 -0
- data/mod/{standard → 05_standard}/file/103/large-6566.ico +0 -0
- data/mod/{standard → 05_standard}/file/103/medium-6566.ico +0 -0
- data/mod/{standard → 05_standard}/file/103/original-6566.ico +0 -0
- data/mod/{standard → 05_standard}/file/103/small-6566.ico +0 -0
- data/mod/{standard → 05_standard}/file/79/icon-6556.png +0 -0
- data/mod/{standard → 05_standard}/file/79/large-6556.png +0 -0
- data/mod/{standard → 05_standard}/file/79/medium-6556.png +0 -0
- data/mod/{standard → 05_standard}/file/79/original-6556.png +0 -0
- data/mod/{standard → 05_standard}/file/79/small-6556.png +0 -0
- data/mod/{standard → 05_standard}/file/790/icon-6419.png +0 -0
- data/mod/{standard → 05_standard}/file/790/large-6419.png +0 -0
- data/mod/{standard → 05_standard}/file/790/medium-6419.png +0 -0
- data/mod/{standard → 05_standard}/file/790/original-6419.png +0 -0
- data/mod/{standard → 05_standard}/file/790/small-6419.png +0 -0
- data/mod/{standard → 05_standard}/format/css_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/csv_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/file_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/js_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/json_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/rss_format.rb +0 -0
- data/mod/{standard → 05_standard}/format/xml_format.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/account.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/all_css.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/all_csv.rb +1 -1
- data/mod/05_standard/set/all/all_js.rb +7 -0
- data/mod/{standard → 05_standard}/set/all/attach.rb +33 -33
- data/mod/{standard → 05_standard}/set/all/base.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/comment.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/event_viz.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/file.rb +0 -0
- data/mod/05_standard/set/all/follow.rb +51 -0
- data/mod/05_standard/set/all/history.rb +294 -0
- data/mod/{standard → 05_standard}/set/all/json.rb +2 -1
- data/mod/05_standard/set/all/observer.rb +27 -0
- data/mod/{standard → 05_standard}/set/all/rich_html.rb +21 -28
- data/mod/{standard → 05_standard}/set/all/rss.rb +0 -0
- data/mod/{standard → 05_standard}/set/all/text.rb +0 -0
- data/mod/{standard → 05_standard}/set/right/account.rb +53 -7
- data/mod/{standard → 05_standard}/set/right/email.rb +0 -1
- data/mod/{standard → 05_standard}/set/right/password.rb +1 -1
- data/mod/{standard → 05_standard}/set/right/salt.rb +0 -0
- data/mod/{standard → 05_standard}/set/right/stats.rb +1 -1
- data/mod/{standard → 05_standard}/set/right/status.rb +0 -0
- data/mod/{standard → 05_standard}/set/right/token.rb +0 -0
- data/mod/{standard → 05_standard}/set/right/when_created.rb +0 -0
- data/mod/{standard → 05_standard}/set/right/when_last_edited.rb +0 -0
- data/mod/{standard → 05_standard}/set/rstar/rules.rb +8 -7
- data/mod/{standard → 05_standard}/set/self/account_links.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/alerts.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/all.rb +1 -1
- data/mod/{standard → 05_standard}/set/self/foot.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/head.rb +21 -6
- data/mod/{standard → 05_standard}/set/self/navbox.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/now.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/recent.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/search.rb +0 -0
- data/mod/{standard → 05_standard}/set/self/signin.rb +1 -1
- data/mod/{standard → 05_standard}/set/self/stats.rb +2 -2
- data/mod/{standard → 05_standard}/set/self/version.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/basic.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/cardtype.rb +4 -6
- data/mod/{standard → 05_standard}/set/type/date.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/file.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/html.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/image.rb +7 -6
- data/mod/{standard → 05_standard}/set/type/layout_type.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/number.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/phrase.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/search_type.rb +6 -3
- data/mod/{standard → 05_standard}/set/type/set.rb +16 -9
- data/mod/{standard → 05_standard}/set/type/signup.rb +16 -17
- data/mod/{standard → 05_standard}/set/type/toggle.rb +0 -0
- data/mod/{standard → 05_standard}/set/type/user.rb +10 -11
- data/{spec/mod/standard → mod/05_standard/spec}/chunk/include_spec.rb +39 -39
- data/mod/05_standard/spec/chunk/link_spec.rb +61 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/css_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/csv_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/email_html_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/file_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/js_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/json_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/rss_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/format/xml_format_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/account_spec.rb +16 -16
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/all_css_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/all_csv_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/attach_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/base_spec.rb +10 -10
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/comment_spec.rb +0 -0
- data/mod/05_standard/spec/set/all/email_html_spec.rb +15 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/event_viz_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/file_spec.rb +0 -0
- data/mod/05_standard/spec/set/all/follow_spec.rb +83 -0
- data/mod/05_standard/spec/set/all/history_spec.rb +161 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/json_spec.rb +4 -4
- data/mod/05_standard/spec/set/all/observer_spec.rb +74 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/rich_html_spec.rb +14 -14
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/rss_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/all/text_spec.rb +0 -0
- data/mod/05_standard/spec/set/right/account_spec.rb +162 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/email_spec.rb +7 -7
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/password_spec.rb +7 -7
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/salt_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/stats_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/status_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/token_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/when_created_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/right/when_last_edited_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/rstar/rules_spec.rb +4 -4
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/account_links_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/alerts_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/all_spec.rb +7 -6
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/foot_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/head_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/navbox_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/now_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/recent_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/search_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/signin_spec.rb +12 -12
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/stats_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/self/version_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/basic_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/cardtype_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/date_spec.rb +0 -0
- data/mod/05_standard/spec/set/type/email_template_spec.rb +130 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/file_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/html_spec.rb +3 -3
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/image_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/layout_type_spec.rb +1 -1
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/number_spec.rb +0 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/phrase_spec.rb +0 -0
- data/mod/05_standard/spec/set/type/search_type_spec.rb +27 -0
- data/mod/05_standard/spec/set/type/set_spec.rb +26 -0
- data/mod/05_standard/spec/set/type/signup_spec.rb +209 -0
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/toggle_spec.rb +2 -2
- data/{spec/mod/standard → mod/05_standard/spec}/set/type/user_spec.rb +0 -0
- data/mod/{standard → 06_email}/format/email_html_format.rb +0 -0
- data/mod/06_email/format/email_text_format.rb +7 -0
- data/mod/06_email/set/all/email_html.rb +9 -0
- data/mod/{standard/set/all/email_html.rb → 06_email/set/all/email_text.rb} +2 -1
- data/mod/06_email/set/right/bcc.rb +31 -0
- data/mod/06_email/set/right/cc.rb +2 -0
- data/mod/06_email/set/right/from.rb +2 -0
- data/mod/06_email/set/right/html_message.rb +3 -0
- data/mod/06_email/set/right/to.rb +2 -0
- data/mod/06_email/set/type/email_template.rb +99 -0
- data/spec/controllers/card_controller_spec.rb +34 -46
- data/spec/lib/card/action_spec.rb +14 -0
- data/spec/lib/card/chunk_spec.rb +3 -3
- data/spec/lib/card/codename_spec.rb +5 -5
- data/spec/lib/card/content_spec.rb +25 -25
- data/spec/lib/card/diff_spec.rb +107 -107
- data/spec/lib/card/format_spec.rb +11 -11
- data/spec/lib/card/loader_spec.rb +35 -29
- data/spec/lib/card/name_spec.rb +82 -82
- data/spec/lib/card/query_spec.rb +83 -82
- data/spec/lib/card/reference_spec.rb +30 -30
- data/spec/lib/card/set_pattern_spec.rb +1 -1
- data/spec/lib/card/set_spec.rb +86 -82
- data/spec/lib/wagn/cache_spec.rb +24 -24
- data/spec/mailers/mailer_spec.rb +41 -30
- data/spec/models/card/cardtype_spec.rb +19 -19
- data/spec/models/card/create_spec.rb +14 -14
- data/spec/models/card/trash_spec.rb +37 -36
- data/spec/models/card/type_transition_spec.rb +13 -13
- data/spec/models/card/validation_spec.rb +6 -6
- data/spec/models/card_spec.rb +40 -39
- data/spec/spec_helper.rb +37 -11
- data/test/fixtures/card_actions.yml +4726 -0
- data/test/fixtures/card_acts.yml +589 -0
- data/test/fixtures/card_changes.yml +12644 -0
- data/test/fixtures/card_references.yml +976 -591
- data/test/fixtures/cards.yml +4544 -2781
- data/test/seed.rb +14 -13
- data/wagn.gemspec +4 -0
- metadata +404 -403
- data/db/bootstrap/card_revisions.yml +0 -3379
- data/lib/card/flexmail.rb +0 -53
- data/lib/card/mailer/change_notice.html.erb +0 -32
- data/lib/card/mailer/confirmation_email.html.erb +0 -12
- data/lib/card/mailer/flexmail.html.erb +0 -6
- data/lib/card/mailer/password_reset.html.erb +0 -9
- data/lib/card/mailer/signup_alert.html.erb +0 -14
- data/lib/card/revision.rb +0 -47
- data/lib/wagn/migration_helper.rb +0 -34
- data/mod/core/set/all/attribute_tracking.rb +0 -85
- data/mod/core/set/all/content.rb +0 -94
- data/mod/standard/set/all/flexmail.rb +0 -3
- data/mod/standard/set/all/follow.rb +0 -119
- data/mod/standard/set/all/history.rb +0 -107
- data/mod/standard/set/right/add_help.rb +0 -3
- data/mod/standard/set/right/default.rb +0 -3
- data/mod/standard/set/right/help.rb +0 -3
- data/spec/lib/card/flexmail_spec.rb +0 -209
- data/spec/lib/card/revision_spec.rb +0 -30
- data/spec/mod/core/chunk/literal_spec.rb +0 -14
- data/spec/mod/core/set/all/attribute_tracking_spec.rb +0 -21
- data/spec/mod/core/set/all/collection_spec.rb +0 -45
- data/spec/mod/core/set/all/content_spec.rb +0 -14
- data/spec/mod/core/set/all/rules_spec.rb +0 -98
- data/spec/mod/standard/chunk/link_spec.rb +0 -59
- data/spec/mod/standard/set/all/email_html_spec.rb +0 -13
- data/spec/mod/standard/set/all/flexmail_spec.rb +0 -5
- data/spec/mod/standard/set/all/follow_spec.rb +0 -95
- data/spec/mod/standard/set/all/history_spec.rb +0 -10
- data/spec/mod/standard/set/right/account_spec.rb +0 -90
- data/spec/mod/standard/set/type/search_type_spec.rb +0 -27
- data/spec/mod/standard/set/type/set_spec.rb +0 -26
- data/spec/mod/standard/set/type/signup_spec.rb +0 -169
- data/test/fixtures/card_revisions.yml +0 -4560
@@ -0,0 +1,199 @@
|
|
1
|
+
shared_examples_for 'notifications' do
|
2
|
+
# describe '#change_notice' do
|
3
|
+
# context 'for new card with subcards' do
|
4
|
+
# name = "another card with subcards"
|
5
|
+
# content = "main content {{+s1}} {{+s2}}"
|
6
|
+
# sub1_content = 'new content of subcard 1'
|
7
|
+
# sub2_content = 'new content of subcard 2'
|
8
|
+
# before do
|
9
|
+
# Card::Auth.as_bot do
|
10
|
+
# @card = Card.create!(:name=>name, :content=>content,
|
11
|
+
# :subcards=>{ '+s1'=>{:content=>sub1_content},
|
12
|
+
# '+s2'=>{:content=>sub2_content} })
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
# subject { @card.format(:format=>format).render_change_notice }
|
16
|
+
# it { is_expected.to include content }
|
17
|
+
# it { is_expected.to include sub1_content }
|
18
|
+
# it { is_expected.to include sub2_content }
|
19
|
+
#
|
20
|
+
# context 'and missing permissions' do
|
21
|
+
# subject { Card.fetch(@card.name).format(:format=>format).render_change_notice }
|
22
|
+
# context 'for subcard' do
|
23
|
+
# before do
|
24
|
+
# Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
25
|
+
# end
|
26
|
+
# it "excludes subcard content" do
|
27
|
+
# Card::Auth.as(:joe_user) do
|
28
|
+
# is_expected.not_to include sub1_content
|
29
|
+
# is_expected.to include sub2_content
|
30
|
+
# end
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
# context 'for main card' do
|
34
|
+
# before do
|
35
|
+
# Card.create_or_update! "#{name}+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
36
|
+
# Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Anyone]]'
|
37
|
+
# end
|
38
|
+
# it 'includes subcard content' do
|
39
|
+
# Card::Auth.as(:joe_user) do
|
40
|
+
# is_expected.to include sub1_content
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
# it "excludes maincard content" do
|
44
|
+
# Card::Auth.as(:joe_user) do
|
45
|
+
# is_expected.not_to include content
|
46
|
+
# is_expected.not_to be_empty
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
# end
|
50
|
+
# context 'for all parts' do
|
51
|
+
# before do
|
52
|
+
# #Card.create_or_update! "#{name}+s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
53
|
+
# #Card.create_or_update! "#{name}+s2+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
54
|
+
# Card.create_or_update! "s1+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
55
|
+
# Card.create_or_update! "s2+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
56
|
+
# Card.create_or_update! "#{name}+*self+*read",:type=>'Pointer',:content=>'[[Administrator]]'
|
57
|
+
# end
|
58
|
+
# it { is_expected.to be_empty }
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
|
64
|
+
describe '#list_of_changes' do
|
65
|
+
name = 'subedit notice'
|
66
|
+
content = 'new content'
|
67
|
+
|
68
|
+
before do
|
69
|
+
@card = Card.create!(:name=>name, :content=>content)
|
70
|
+
end
|
71
|
+
subject { @card.format(:format=>format).render_list_of_changes }
|
72
|
+
|
73
|
+
context 'for a new card' do
|
74
|
+
it { is_expected.to include "content: #{content}" }
|
75
|
+
it { is_expected.to include 'cardtype: Basic' }
|
76
|
+
end
|
77
|
+
context 'for a updated card' do
|
78
|
+
before { @card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content') }
|
79
|
+
it { is_expected.to include 'new content: [[changed content]]' }
|
80
|
+
it { is_expected.to include 'new cardtype: Pointer' }
|
81
|
+
it { is_expected.to include 'new name: bnn card' }
|
82
|
+
end
|
83
|
+
context 'for a deleted card' do
|
84
|
+
before { @card.delete }
|
85
|
+
it { is_expected.to be_empty }
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'for a given action' do
|
89
|
+
subject do
|
90
|
+
action = @card.last_action
|
91
|
+
@card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content')
|
92
|
+
@card.format(:format=>format).render_list_of_changes(:action=>action)
|
93
|
+
end
|
94
|
+
it { is_expected.to include "content: #{content}" }
|
95
|
+
end
|
96
|
+
context 'for a given action id' do
|
97
|
+
subject do
|
98
|
+
action_id = @card.last_action.id
|
99
|
+
@card.update_attributes!(:name=>'bnn card', :type=>:pointer, :content=>'changed content')
|
100
|
+
@card.format(:format=>format).render_list_of_changes(:action_id=>action_id)
|
101
|
+
end
|
102
|
+
it { is_expected.to include "content: #{content}" }
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe 'subedit_notice' do
|
107
|
+
def list_of_changes_for card
|
108
|
+
card.db_content
|
109
|
+
end
|
110
|
+
name = 'subedit notice card'
|
111
|
+
content = 'new content'
|
112
|
+
before do
|
113
|
+
@card = Card.create!(:name=>name, :content=>content)
|
114
|
+
end
|
115
|
+
subject { @card.format(:format=>format).render_subedit_notice }
|
116
|
+
|
117
|
+
context 'for a new card' do
|
118
|
+
it { is_expected.to include name }
|
119
|
+
it { is_expected.to include 'created' }
|
120
|
+
it { is_expected.to include list_of_changes_for @card }
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'for a updated card' do
|
124
|
+
changed_name = 'changed subedit notice'
|
125
|
+
changed_content = 'changed content'
|
126
|
+
before { @card.update_attributes!(:name=>changed_name, :content=>changed_content) }
|
127
|
+
it { is_expected.to include changed_name }
|
128
|
+
it { is_expected.to include 'updated' }
|
129
|
+
it { is_expected.to include list_of_changes_for @card }
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'for a deleted card' do
|
133
|
+
before { @card.delete }
|
134
|
+
it { is_expected.to include name }
|
135
|
+
it { is_expected.to include 'deleted' }
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
describe Card::Set::All::Notify do
|
142
|
+
describe 'html format' do
|
143
|
+
include_examples 'notifications' do
|
144
|
+
let(:format) { 'email_html' }
|
145
|
+
end
|
146
|
+
|
147
|
+
# it 'contains html' do
|
148
|
+
# card = Card.create! :name=>'new card'
|
149
|
+
# expect(card.format(:format=>:email_html).render_change_notice).to include '<p>'
|
150
|
+
# end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe 'text format' do
|
154
|
+
include_examples 'notifications' do
|
155
|
+
let(:format) { 'email_text' }
|
156
|
+
end
|
157
|
+
|
158
|
+
# it 'does not contain html' do
|
159
|
+
# card = Card.create! :name=>'new card'
|
160
|
+
# expect(card.format(:format=>:email_text).render_change_notice).not_to match /<\w+>/
|
161
|
+
# end
|
162
|
+
# it 'creates well formatted text message' do
|
163
|
+
# name = "another card with subcards"
|
164
|
+
# content = "main content {{+s1}} {{+s2}}"
|
165
|
+
# sub1_content = 'new content of subcard 1'
|
166
|
+
# sub2_content = 'new content of subcard 2'
|
167
|
+
# Card::Auth.as_bot do
|
168
|
+
# @card = Card.create!(:name=>name, :content=>content,
|
169
|
+
# :subcards=>{ '+s1'=>{:content=>sub1_content},
|
170
|
+
# '+s2'=>{:content=>sub2_content} })
|
171
|
+
# end
|
172
|
+
# result = @card.format(:format=>:email_text).render_change_notice
|
173
|
+
# expect(result).to eq(%{Dear My Wagn user
|
174
|
+
#
|
175
|
+
# "another card with subcards"
|
176
|
+
# was just created by Joe User
|
177
|
+
# cardtype: Basic
|
178
|
+
# content: main content {{+s1}} {{+s2}}
|
179
|
+
#
|
180
|
+
# This update included the following changes:
|
181
|
+
#
|
182
|
+
# another card with subcards+s1 created
|
183
|
+
# cardtype: Basic
|
184
|
+
# content: new content of subcard 1
|
185
|
+
#
|
186
|
+
#
|
187
|
+
# another card with subcards+s2 created
|
188
|
+
# cardtype: Basic
|
189
|
+
# content: new content of subcard 2
|
190
|
+
#
|
191
|
+
#
|
192
|
+
# See the card: /another_card_with_subcards
|
193
|
+
#
|
194
|
+
# You received this email because you're following "".
|
195
|
+
# Visit /update/+*following?drop_item= to stop receiving these emails.})
|
196
|
+
# end
|
197
|
+
|
198
|
+
end
|
199
|
+
end
|
@@ -6,40 +6,40 @@ describe Card::Set::All::Pattern do
|
|
6
6
|
it "returns self, type, all for simple cards" do
|
7
7
|
Card::Auth.as_bot do
|
8
8
|
card = Card.new( :name => "AnewCard" )
|
9
|
-
card.set_names.
|
9
|
+
expect(card.set_names).to eq([ "Basic+*type","*all"])
|
10
10
|
card.save!
|
11
11
|
card = Card.fetch("AnewCard")
|
12
|
-
card.set_names.
|
12
|
+
expect(card.set_names).to eq([ "AnewCard+*self","Basic+*type","*all"])
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
it "returns set names for simple star cards" do
|
17
17
|
Card::Auth.as_bot do
|
18
|
-
Card.fetch('*update').set_names.
|
18
|
+
expect(Card.fetch('*update').set_names).to eq([
|
19
19
|
"*update+*self","*star","Setting+*type","*all"
|
20
|
-
]
|
20
|
+
])
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
it "returns set names for junction cards" do
|
25
25
|
Card::Auth.as_bot do
|
26
|
-
Card.new( :name=>"Iliad+author" ).set_names.
|
26
|
+
expect(Card.new( :name=>"Iliad+author" ).set_names).to eq([
|
27
27
|
"Book+author+*type plus right","author+*right","Basic+*type","*all plus","*all"
|
28
|
-
]
|
28
|
+
])
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
it "returns set names for compound star cards" do
|
33
33
|
Card::Auth.as_bot do
|
34
|
-
Card.new( :name=>"Iliad+*to" ).set_names.
|
35
|
-
"Book+*to+*type plus right","*to+*right","*rstar","
|
36
|
-
]
|
34
|
+
expect(Card.new( :name=>"Iliad+*to" ).set_names).to eq([
|
35
|
+
"Book+*to+*type plus right","*to+*right","*rstar","Pointer+*type","*all plus","*all"
|
36
|
+
])
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
it "handles type plus right prototypes properly" do #right place for this? really need more prototype tests...
|
41
41
|
Card::Auth.as_bot do
|
42
|
-
Card.fetch('Fruit+flavor+*type plus right').prototype.set_names.include?('Fruit+flavor+*type plus right').
|
42
|
+
expect(Card.fetch('Fruit+flavor+*type plus right').prototype.set_names.include?('Fruit+flavor+*type plus right')).to be_truthy
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -48,7 +48,7 @@ describe Card::Set::All::Pattern do
|
|
48
48
|
describe :rule_set_keys do
|
49
49
|
it "returns correct set names for new cards" do
|
50
50
|
card = Card.new :name => "AnewCard"
|
51
|
-
card.rule_set_keys.
|
51
|
+
expect(card.rule_set_keys).to eq([ "#{Card::BasicID}+type", "all"])
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
@@ -57,25 +57,25 @@ describe Card::Set::All::Pattern do
|
|
57
57
|
it "returns css names for simple star cards" do
|
58
58
|
Card::Auth.as_bot do
|
59
59
|
card = Card.new( :name => "*AnewCard")
|
60
|
-
card.safe_set_keys.
|
60
|
+
expect(card.safe_set_keys).to eq("ALL TYPE-basic STAR")
|
61
61
|
card.save!
|
62
62
|
card = Card.fetch("*AnewCard")
|
63
|
-
card.safe_set_keys.
|
63
|
+
expect(card.safe_set_keys).to eq("ALL TYPE-basic STAR SELF-Xanew_card")
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
67
|
it "returns set names for junction cards" do
|
68
68
|
card=Card.new( :name=>"Iliad+author" )
|
69
|
-
card.safe_set_keys.
|
69
|
+
expect(card.safe_set_keys).to eq("ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author")
|
70
70
|
card.save!
|
71
71
|
card = Card.fetch("Iliad+author")
|
72
|
-
card.safe_set_keys.
|
72
|
+
expect(card.safe_set_keys).to eq("ALL ALL_PLUS TYPE-basic RIGHT-author TYPE_PLUS_RIGHT-book-author SELF-iliad-author")
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
describe :label do
|
77
77
|
it "returns label for name" do
|
78
|
-
Card.new(:name=>'address+*right').label.
|
78
|
+
expect(Card.new(:name=>'address+*right').label).to eq(%{All "+address" cards})
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -66,9 +66,9 @@ describe Card::Set::All::Permissions do
|
|
66
66
|
|
67
67
|
it "should be *all+*read by default" do
|
68
68
|
card = Card.fetch('Home')
|
69
|
-
card.read_rule_id.
|
70
|
-
card.who_can(:read).
|
71
|
-
Card::Auth.as(:anonymous){ card.ok?(:read).
|
69
|
+
expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
|
70
|
+
expect(card.who_can(:read)).to eq([Card::AnyoneID])
|
71
|
+
Card::Auth.as(:anonymous){ expect(card.ok?(:read)).to be_truthy }
|
72
72
|
end
|
73
73
|
|
74
74
|
it "should update to role ('Anyone Signed In')" do
|
@@ -78,10 +78,10 @@ describe Card::Set::All::Permissions do
|
|
78
78
|
pc = Card[name]
|
79
79
|
card = Card['Home']
|
80
80
|
#warn "card #{name}, #{card.inspect}, #{pc.inspect}"
|
81
|
-
pc.
|
82
|
-
card.read_rule_id.
|
83
|
-
card.who_can(:read).
|
84
|
-
Card::Auth.as(:anonymous){ card.ok?(:read).
|
81
|
+
expect(pc).to be
|
82
|
+
expect(card.read_rule_id).to eq(pc.id)
|
83
|
+
expect(card.who_can(:read)).to eq([Card::AnyoneSignedInID])
|
84
|
+
Card::Auth.as(:anonymous){ expect(card.ok?(:read)).to be_falsey }
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should update to user ('Joe Admin')" do
|
@@ -89,12 +89,12 @@ describe Card::Set::All::Permissions do
|
|
89
89
|
Card::Auth.as_bot { @perm_card.save! }
|
90
90
|
|
91
91
|
card = Card.fetch('Home')
|
92
|
-
card.read_rule_id.
|
93
|
-
card.who_can(:read).
|
94
|
-
Card::Auth.as(:anonymous) { card.ok?(:read).
|
95
|
-
Card::Auth.as(:joe_user) { card.ok?(:read).
|
96
|
-
Card::Auth.as(:joe_admin) { card.ok?(:read).
|
97
|
-
Card::Auth.as_bot { card.ok?(:read).
|
92
|
+
expect(card.read_rule_id).to eq(@perm_card.id)
|
93
|
+
expect(card.who_can(:read)).to eq([Card['joe_admin'].id])
|
94
|
+
Card::Auth.as(:anonymous) { expect(card.ok?(:read)).to be_falsey }
|
95
|
+
Card::Auth.as(:joe_user) { expect(card.ok?(:read)).to be_falsey }
|
96
|
+
Card::Auth.as(:joe_admin) { expect(card.ok?(:read)).to be_truthy }
|
97
|
+
Card::Auth.as_bot { expect(card.ok?(:read)).to be_truthy }
|
98
98
|
end
|
99
99
|
|
100
100
|
it "should revert to more general rule when more specific (self) rule is deleted" do
|
@@ -103,7 +103,7 @@ describe Card::Set::All::Permissions do
|
|
103
103
|
@perm_card.delete!
|
104
104
|
end
|
105
105
|
card = Card.fetch('Home')
|
106
|
-
card.read_rule_id.
|
106
|
+
expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should revert to more general rule when more specific (right) rule is deleted" do
|
@@ -111,13 +111,13 @@ describe Card::Set::All::Permissions do
|
|
111
111
|
Card::Auth.as_bot do
|
112
112
|
pc=Card.create(:name=>'B+*right+*read', :type=>'Pointer', :content=>'[[Anyone Signed In]]')
|
113
113
|
end
|
114
|
-
pc.
|
114
|
+
expect(pc).to be
|
115
115
|
card = Card.fetch('A+B')
|
116
|
-
card.read_rule_id.
|
116
|
+
expect(card.read_rule_id).to eq(pc.id)
|
117
117
|
pc = Card.fetch(pc.name) #important to re-fetch to catch issues with detecting change in trash status.
|
118
118
|
Card::Auth.as_bot { pc.delete }
|
119
119
|
card = Card.fetch('A+B')
|
120
|
-
card.read_rule_id.
|
120
|
+
expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
|
121
121
|
end
|
122
122
|
|
123
123
|
it "should revert to more general rule when more specific rule is renamed" do
|
@@ -130,7 +130,7 @@ describe Card::Set::All::Permissions do
|
|
130
130
|
end
|
131
131
|
|
132
132
|
card = Card.fetch('Home')
|
133
|
-
card.read_rule_id.
|
133
|
+
expect(card.read_rule_id).to eq(Card.fetch('*all+*read').id)
|
134
134
|
end
|
135
135
|
|
136
136
|
it "should not be overruled by a more general rule added later" do
|
@@ -143,17 +143,17 @@ describe Card::Set::All::Permissions do
|
|
143
143
|
end
|
144
144
|
|
145
145
|
card = Card.fetch('Home')
|
146
|
-
card.read_rule_id.
|
146
|
+
expect(card.read_rule_id).to eq(@perm_card.id)
|
147
147
|
end
|
148
148
|
|
149
149
|
it "should get updated when trunk type change makes type-plus-right apply / unapply" do
|
150
150
|
@perm_card.name = "Phrase+B+*type plus right+*read"
|
151
151
|
Card::Auth.as_bot { @perm_card.save! }
|
152
|
-
Card.fetch('A+B').read_rule_id.
|
152
|
+
expect(Card.fetch('A+B').read_rule_id).to eq(Card.fetch('*all+*read').id)
|
153
153
|
c = Card.fetch('A')
|
154
154
|
c.type_id = Card::PhraseID
|
155
155
|
c.save!
|
156
|
-
Card.fetch('A+B').read_rule_id.
|
156
|
+
expect(Card.fetch('A+B').read_rule_id).to eq(@perm_card.id)
|
157
157
|
end
|
158
158
|
|
159
159
|
it "should work with relative settings" do
|
@@ -163,10 +163,10 @@ describe Card::Set::All::Permissions do
|
|
163
163
|
all_plus.save
|
164
164
|
end
|
165
165
|
c = Card.new(:name=>'Home+Heart')
|
166
|
-
c.who_can(:read).
|
167
|
-
c.permission_rule_card(:read).first.id.
|
166
|
+
expect(c.who_can(:read)).to eq([Card::AnyoneSignedInID])
|
167
|
+
expect(c.permission_rule_card(:read).first.id).to eq(@perm_card.id)
|
168
168
|
c.save
|
169
|
-
c.read_rule_id.
|
169
|
+
expect(c.read_rule_id).to eq(@perm_card.id)
|
170
170
|
end
|
171
171
|
|
172
172
|
it "should get updated when relative settings change" do
|
@@ -175,18 +175,18 @@ describe Card::Set::All::Permissions do
|
|
175
175
|
all_plus.save
|
176
176
|
end
|
177
177
|
c = Card.new(:name=>'Home+Heart')
|
178
|
-
c.who_can(:read).
|
179
|
-
c.permission_rule_card(:read).first.id.
|
178
|
+
expect(c.who_can(:read)).to eq([Card::AnyoneID])
|
179
|
+
expect(c.permission_rule_card(:read).first.id).to eq(Card.fetch('*all+*read').id)
|
180
180
|
c.save
|
181
|
-
c.read_rule_id.
|
181
|
+
expect(c.read_rule_id).to eq(Card.fetch('*all+*read').id)
|
182
182
|
Card::Auth.as_bot { @perm_card.save! }
|
183
183
|
c2 = Card.fetch('Home+Heart')
|
184
|
-
c2.who_can(:read).
|
185
|
-
c2.read_rule_id.
|
186
|
-
Card.fetch('Home+Heart').read_rule_id.
|
184
|
+
expect(c2.who_can(:read)).to eq([Card::AnyoneSignedInID])
|
185
|
+
expect(c2.read_rule_id).to eq(@perm_card.id)
|
186
|
+
expect(Card.fetch('Home+Heart').read_rule_id).to eq(@perm_card.id)
|
187
187
|
Card::Auth.as_bot{ @perm_card.delete }
|
188
|
-
Card.fetch('Home').read_rule_id.
|
189
|
-
Card.fetch('Home+Heart').read_rule_id.
|
188
|
+
expect(Card.fetch('Home').read_rule_id).to eq(Card.fetch('*all+*read').id)
|
189
|
+
expect(Card.fetch('Home+Heart').read_rule_id).to eq(Card.fetch('*all+*read').id)
|
190
190
|
end
|
191
191
|
|
192
192
|
it "should insure that class overrides work with relative settings" do
|
@@ -195,15 +195,15 @@ describe Card::Set::All::Permissions do
|
|
195
195
|
all_plus.save
|
196
196
|
Card::Auth.as_bot { @perm_card.save! }
|
197
197
|
c = Card.create(:name=>'Home+Heart')
|
198
|
-
c.read_rule_id.
|
198
|
+
expect(c.read_rule_id).to eq(@perm_card.id)
|
199
199
|
r = Card.create(:name=>'Heart+*right+*read', :type=>'Pointer', :content=>'[[Administrator]]')
|
200
|
-
Card.fetch('Home+Heart').read_rule_id.
|
200
|
+
expect(Card.fetch('Home+Heart').read_rule_id).to eq(r.id)
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
204
|
it "should work on virtual+virtual cards" do
|
205
205
|
c = Card.fetch('Number+*type+by name')
|
206
|
-
c.ok?(:read).
|
206
|
+
expect(c.ok?(:read)).to be_truthy
|
207
207
|
end
|
208
208
|
|
209
209
|
end
|
@@ -222,21 +222,21 @@ describe Card::Set::All::Permissions do
|
|
222
222
|
|
223
223
|
it "checking ok read should not add to errors" do
|
224
224
|
Card::Auth.as_bot do
|
225
|
-
Card::Auth.always_ok
|
225
|
+
expect(Card::Auth.always_ok?).to eq(true)
|
226
226
|
end
|
227
227
|
Card::Auth.as(:joe_user) do
|
228
|
-
Card::Auth.always_ok
|
228
|
+
expect(Card::Auth.always_ok?).to eq(false)
|
229
229
|
end
|
230
230
|
Card::Auth.as(:joe_admin) do
|
231
|
-
Card::Auth.always_ok
|
231
|
+
expect(Card::Auth.always_ok?).to eq(true)
|
232
232
|
Card.create! :name=>"Hidden"
|
233
233
|
Card.create(:name=>'Hidden+*self+*read', :type=>'Pointer', :content=>'[[Anyone Signed In]]')
|
234
234
|
end
|
235
235
|
|
236
236
|
Card::Auth.as(:anonymous) do
|
237
237
|
h = Card.fetch('Hidden')
|
238
|
-
h.ok?(:read).
|
239
|
-
h.errors.empty
|
238
|
+
expect(h.ok?(:read)).to eq(false)
|
239
|
+
expect(h.errors.empty?).not_to eq(nil)
|
240
240
|
end
|
241
241
|
end
|
242
242
|
|
@@ -244,8 +244,8 @@ describe Card::Set::All::Permissions do
|
|
244
244
|
Card::Auth.as_bot do
|
245
245
|
c1 = Card['c1']
|
246
246
|
Card.create! :name=>'c1+*self+*comment', :type=>'Pointer', :content=>'[[r1]]'
|
247
|
-
c1.who_can( :comment ).
|
248
|
-
c1.ok?(:comment).
|
247
|
+
expect(c1.who_can( :comment )).to eq([Card['r1'].id])
|
248
|
+
expect(c1.ok?(:comment)).to be_truthy
|
249
249
|
end
|
250
250
|
end
|
251
251
|
|
@@ -253,8 +253,8 @@ describe Card::Set::All::Permissions do
|
|
253
253
|
Card.where(:trash=>false).each do |c|
|
254
254
|
prc = c.permission_rule_card(:read)
|
255
255
|
#warn "C #{c.inspect}, #{c.read_rule_id}, #{prc.first.id}, #{c.read_rule_class}, #{prc.second}, #{prc.first.inspect}" unless prc.last == c.read_rule_class && prc.first.id == c.read_rule_id
|
256
|
-
prc.last.
|
257
|
-
prc.first.id.
|
256
|
+
expect(prc.last).to eq(c.read_rule_class)
|
257
|
+
expect(prc.first.id).to eq(c.read_rule_id)
|
258
258
|
end
|
259
259
|
end
|
260
260
|
|
@@ -358,11 +358,11 @@ describe Card::Set::All::Permissions do
|
|
358
358
|
|
359
359
|
it "should inherit" do
|
360
360
|
Card::Auth.as(:anyone_signed_in) do
|
361
|
-
Card.fetch( 'A+*self' ).ok?(:create).
|
362
|
-
Card.fetch( 'A+*right').ok?(:create).
|
361
|
+
expect(Card.fetch( 'A+*self' ).ok?(:create)).to be_truthy #explicitly granted above
|
362
|
+
expect(Card.fetch( 'A+*right').ok?(:create)).to be_falsey #by default restricted
|
363
363
|
|
364
|
-
Card.fetch( 'A+*self+*structure', :new=>{} ).ok?(:create).
|
365
|
-
Card.fetch( 'A+*right+*structure', :new=>{} ).ok?(:create).
|
364
|
+
expect(Card.fetch( 'A+*self+*structure', :new=>{} ).ok?(:create)).to be_truthy # +*structure granted;
|
365
|
+
expect(Card.fetch( 'A+*right+*structure', :new=>{} ).ok?(:create)).to be_falsey # can't create A+B, therefore can't create A+B+C
|
366
366
|
end
|
367
367
|
end
|
368
368
|
|
@@ -379,10 +379,10 @@ describe Card::Set::All::Permissions do
|
|
379
379
|
end
|
380
380
|
|
381
381
|
Card::Auth.as(@u1) do
|
382
|
-
Card.search(:content=>'WeirdWord').map(&:name).sort.
|
382
|
+
expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c1 c2 c3 ))
|
383
383
|
end
|
384
384
|
Card::Auth.as(@u2) do
|
385
|
-
Card.search(:content=>'WeirdWord').map(&:name).sort.
|
385
|
+
expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c2 c3 ))
|
386
386
|
end
|
387
387
|
end
|
388
388
|
|
@@ -398,11 +398,11 @@ describe Card::Set::All::Permissions do
|
|
398
398
|
end
|
399
399
|
|
400
400
|
Card::Auth.as(@u1) do
|
401
|
-
Card.search(:content=>'WeirdWord').map(&:name).sort.
|
401
|
+
expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c1 c2 c3 ))
|
402
402
|
end
|
403
403
|
Card::Auth.current_id =nil # for Card::Auth.as to be effective, you can't have a logged in user
|
404
404
|
Card::Auth.as(@u2) do
|
405
|
-
Card.search(:content=>'WeirdWord').map(&:name).sort.
|
405
|
+
expect(Card.search(:content=>'WeirdWord').map(&:name).sort).to eq(%w( c2 c3 ))
|
406
406
|
end
|
407
407
|
end
|
408
408
|
|
@@ -432,7 +432,7 @@ describe Card::Set::All::Permissions do
|
|
432
432
|
|
433
433
|
|
434
434
|
it "should let joe view new cards" do
|
435
|
-
Card.new.ok?(:read).
|
435
|
+
expect(Card.new.ok?(:read)).to be_truthy
|
436
436
|
end
|
437
437
|
|
438
438
|
|
@@ -443,24 +443,24 @@ describe Card::Set::All::Permissions do
|
|
443
443
|
|
444
444
|
it "should let anonymous users view basic cards" do
|
445
445
|
Card::Auth.as :anonymous do
|
446
|
-
@c.ok?(:read).
|
446
|
+
expect(@c.ok?(:read)).to be_truthy
|
447
447
|
end
|
448
448
|
end
|
449
449
|
|
450
450
|
it "should let joe user basic cards" do
|
451
451
|
Card::Auth.as :joe_user do
|
452
|
-
@c.ok?(:read).
|
452
|
+
expect(@c.ok?(:read)).to be_truthy
|
453
453
|
end
|
454
454
|
end
|
455
455
|
end
|
456
456
|
|
457
457
|
it "should allow anyone signed in to create Basic Cards" do
|
458
|
-
Card.new.ok?(:create).
|
458
|
+
expect(Card.new.ok?(:create)).to be_truthy
|
459
459
|
end
|
460
460
|
|
461
461
|
it "should not allow someone not signed in to create Basic Cards" do
|
462
462
|
Card::Auth.as :anonymous do
|
463
|
-
Card.new.ok?(:create).
|
463
|
+
expect(Card.new.ok?(:create)).not_to be_truthy
|
464
464
|
end
|
465
465
|
end
|
466
466
|
|
@@ -478,18 +478,18 @@ describe Card::Set::All::Permissions do
|
|
478
478
|
|
479
479
|
it "should handle delete as a setting" do
|
480
480
|
c = Card.new :name=>'whatever'
|
481
|
-
c.who_can(:delete).
|
481
|
+
expect(c.who_can(:delete)).to eq([Card['joe_user'].id])
|
482
482
|
Card::Auth.as(:joe_user) do
|
483
|
-
c.ok?(:delete).
|
483
|
+
expect(c.ok?(:delete)).to eq(true)
|
484
484
|
end
|
485
485
|
Card::Auth.as(:u1) do
|
486
|
-
c.ok?(:delete).
|
486
|
+
expect(c.ok?(:delete)).to eq(false)
|
487
487
|
end
|
488
488
|
Card::Auth.as(:anonymous) do
|
489
|
-
c.ok?(:delete).
|
489
|
+
expect(c.ok?(:delete)).to eq(false)
|
490
490
|
end
|
491
491
|
Card::Auth.as_bot do
|
492
|
-
c.ok?(:delete).
|
492
|
+
expect(c.ok?(:delete)).to eq(true) #because administrator
|
493
493
|
end
|
494
494
|
end
|
495
495
|
end
|