card 1.17.4 → 1.18.0
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/card.gemspec +24 -25
- data/config/initializers/01_init_ruby_extensions.rb +0 -4
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/notification.rb +2 -2
- data/db/migrate/20110511221913_require_earlier_migrations.rb +3 -3
- data/db/migrate/20120105203350_require_1_8_migrations.rb +3 -3
- data/db/migrate/20121111025347_require_1_10_migrations.rb +3 -3
- data/db/migrate/20130106052640_table_cleanup.rb +4 -4
- data/db/migrate/20130411210957_update_codenames.rb +2 -2
- data/db/migrate/20141001105348_move_revisions_to_actions.rb +4 -4
- data/db/migrate/20141121172918_rename_card_migration_table.rb +2 -2
- data/db/migrate/20141208132159_remove_present_from_reference_table.rb +2 -2
- data/db/migrate/20141216053032_better_index_names.rb +9 -9
- data/db/migrate_core_cards/20120611203506_rails_inflection_updates.rb +29 -32
- data/db/migrate_core_cards/20130411191151_renaming_for_menu.rb +3 -4
- data/db/migrate_core_cards/20130411211600_delete_old_related_tab_cards.rb +1 -1
- data/db/migrate_core_cards/20130419215612_import_help_text.rb +1 -2
- data/db/migrate_core_cards/20130823192433_add_style_cards.rb +3 -3
- data/db/migrate_core_cards/20130910183318_move_styles_to_content.rb +2 -3
- data/db/migrate_core_cards/20130920214038_jsonize_tinymce.rb +2 -2
- data/db/migrate_core_cards/20130920291703_update_stylesheets.rb +1 -2
- data/db/migrate_core_cards/20130927191728_account_events.rb +5 -6
- data/db/migrate_core_cards/20131016172445_common_css_patch.rb +2 -3
- data/db/migrate_core_cards/20140110193325_reset_account_request_type.rb +0 -1
- data/db/migrate_core_cards/20140307231621_user_data_to_cards.rb +23 -32
- data/db/migrate_core_cards/20140317035504_account_requests_to_signups.rb +1 -7
- data/db/migrate_core_cards/20140512155840_add_script_cards.rb +21 -24
- data/db/migrate_core_cards/20140629222005_add_email_cards.rb +17 -22
- data/db/migrate_core_cards/20140725180118_config_card_updates.rb +2 -2
- data/db/migrate_core_cards/20141111083921_delete_machine_output.rb +1 -3
- data/db/migrate_core_cards/20141115034214_config_descriptions_etc.rb +2 -2
- data/db/migrate_core_cards/20141119001955_make_symlinks_relative.rb +3 -3
- data/db/migrate_core_cards/20141120120605_fix_notification_html_message.rb +1 -1
- data/db/migrate_core_cards/20141204061304_watchers_to_following.rb +8 -12
- data/db/migrate_core_cards/20141208162106_add_ace_script.rb +2 -3
- data/db/migrate_core_cards/20141216155251_add_more_following_cards.rb +10 -10
- data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +10 -12
- data/db/migrate_core_cards/20150220134731_following_to_follow_rule.rb +4 -4
- data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +3 -3
- data/db/migrate_core_cards/20150326205655_bootswatch_themes.rb +7 -7
- data/db/migrate_core_cards/20150429090551_search_card_context.rb +18 -20
- data/db/migrate_core_cards/20150508212032_menu_compatibility.rb +3 -7
- data/db/migrate_core_cards/20150510031118_fix_skin_images.rb +2 -3
- data/db/migrate_core_cards/20150528084659_add_session_cardtype.rb +3 -3
- data/db/migrate_core_cards/20150601133433_add_recent_setting_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610171702_add_debugger_session_card.rb +4 -4
- data/db/migrate_core_cards/20150610180019_add_recaptcha_key_and_admin_info_cards.rb +5 -11
- data/db/migrate_core_cards/20150724123438_update_file_and_image_cards.rb +29 -35
- data/db/migrate_core_cards/20150824135418_update_file_history.rb +10 -14
- data/db/migrate_core_cards/20150903130006_attachment_upload_cards.rb +1 -1
- data/db/schema.rb +92 -94
- data/db/seed/new/card_actions.yml +461 -469
- data/db/seed/new/card_acts.yml +154 -172
- data/db/seed/new/card_changes.yml +4076 -4031
- data/db/seed/new/card_references.yml +1584 -1927
- data/db/seed/new/cards.yml +2095 -2112
- data/db/seed/test/fixtures/card_actions.yml +1497 -1505
- data/db/seed/test/fixtures/card_acts.yml +454 -472
- data/db/seed/test/fixtures/card_changes.yml +7309 -7263
- data/db/seed/test/fixtures/card_references.yml +2263 -2613
- data/db/seed/test/fixtures/cards.yml +3298 -3316
- data/db/seed/test/seed.rb +3 -0
- data/lib/card.rb +17 -9
- data/lib/card/active_record_ext.rb +6 -8
- data/lib/card/active_record_helper.rb +42 -32
- data/lib/card/auth.rb +3 -3
- data/lib/card/cache.rb +4 -4
- data/lib/card/cache/persistent.rb +9 -5
- data/lib/card/cache/temporary.rb +5 -5
- data/lib/card/chunk.rb +1 -1
- data/lib/card/codename.rb +3 -2
- data/lib/card/content.rb +62 -57
- data/lib/card/core_ext.rb +20 -30
- data/lib/card/diff.rb +88 -76
- data/lib/card/director_register.rb +66 -0
- data/lib/card/env.rb +14 -17
- data/lib/card/exceptions.rb +7 -9
- data/lib/card/format.rb +18 -367
- data/lib/card/format/nest.rb +183 -0
- data/lib/card/format/permission.rb +63 -0
- data/lib/card/format/render.rb +140 -0
- data/lib/card/loader.rb +17 -26
- data/lib/card/location.rb +6 -6
- data/lib/card/mailer.rb +4 -7
- data/lib/card/migration.rb +1 -1
- data/lib/card/name.rb +3 -6
- data/lib/card/query.rb +8 -8
- data/lib/card/query/attributes.rb +6 -6
- data/lib/card/query/clause.rb +10 -10
- data/lib/card/query/join.rb +7 -9
- data/lib/card/query/reference.rb +17 -19
- data/lib/card/query/sql_statement.rb +2 -2
- data/lib/card/query/value.rb +15 -16
- data/lib/card/set.rb +106 -209
- data/lib/card/set/event.rb +126 -0
- data/lib/card/set_pattern.rb +42 -29
- data/lib/card/simplecov_helper.rb +19 -19
- data/lib/card/spec_helper.rb +40 -16
- data/lib/card/stage.rb +72 -0
- data/lib/card/stage_director.rb +231 -0
- data/lib/card/subcards.rb +56 -24
- data/lib/card/subdirector_array.rb +31 -0
- data/lib/card/success.rb +15 -18
- data/lib/card/version.rb +1 -2
- data/lib/card/view_cache.rb +4 -4
- data/lib/card/view_name.rb +10 -8
- data/lib/cardio.rb +1 -1
- data/lib/generators/card.rb +2 -4
- data/lib/generators/card/format/format_generator.rb +4 -4
- data/lib/generators/card/migration/migration_generator.rb +6 -6
- data/lib/generators/card/set/set_generator.rb +5 -6
- data/mod/01_core/chunk/include.rb +2 -1
- data/mod/01_core/chunk/link.rb +2 -2
- data/mod/01_core/chunk/literal.rb +6 -9
- data/mod/01_core/chunk/query_reference.rb +1 -1
- data/mod/01_core/chunk/reference.rb +2 -2
- data/mod/01_core/chunk/uri.rb +52 -63
- data/mod/01_core/format/html_format.rb +8 -12
- data/mod/01_core/format/text_format.rb +1 -1
- data/mod/01_core/set/all/actify.rb +96 -0
- data/mod/01_core/set/all/active_card.rb +7 -7
- data/mod/01_core/set/all/collection.rb +19 -20
- data/mod/01_core/set/all/content.rb +9 -7
- data/mod/01_core/set/all/erb.rb +5 -5
- data/mod/01_core/set/all/event.rb +60 -0
- data/mod/01_core/set/all/fetch.rb +13 -19
- data/mod/01_core/set/all/haml.rb +1 -1
- data/mod/01_core/set/all/initialize.rb +35 -41
- data/mod/01_core/set/all/location_history.rb +3 -5
- data/mod/01_core/set/all/name.rb +19 -68
- data/mod/01_core/set/all/name_validations.rb +56 -0
- data/mod/01_core/set/all/pattern.rb +2 -2
- data/mod/01_core/set/all/permissions.rb +14 -20
- data/mod/01_core/set/all/phases.rb +9 -200
- data/mod/01_core/set/all/references.rb +10 -10
- data/mod/01_core/set/all/rules.rb +3 -4
- data/mod/01_core/set/all/stages.rb +24 -0
- data/mod/01_core/set/all/states.rb +4 -4
- data/mod/01_core/set/all/subcards.rb +16 -26
- data/mod/01_core/set/all/templating.rb +1 -3
- data/mod/01_core/set/all/tracked_attributes.rb +47 -48
- data/mod/01_core/set/all/trash.rb +10 -10
- data/mod/01_core/set/all/type.rb +9 -8
- data/mod/01_core/set/all/utils.rb +10 -14
- data/mod/01_core/set/all/view_cache.rb +2 -2
- data/mod/01_core/set_pattern/01_all.rb +3 -3
- data/mod/01_core/set_pattern/02_all_plus.rb +3 -3
- data/mod/01_core/set_pattern/03_type.rb +2 -2
- data/mod/01_core/set_pattern/04_star.rb +3 -3
- data/mod/01_core/set_pattern/05_rstar.rb +3 -3
- data/mod/01_core/set_pattern/06_right.rb +2 -2
- data/mod/01_core/set_pattern/07_type_plus_right.rb +2 -2
- data/mod/01_core/set_pattern/08_self.rb +1 -1
- data/mod/01_core/spec/chunk/literal_spec.rb +7 -8
- data/mod/01_core/spec/chunk/uri_spec.rb +140 -142
- data/mod/01_core/spec/format/html_format_spec.rb +72 -57
- data/mod/01_core/spec/set/all/collection_spec.rb +63 -43
- data/mod/01_core/spec/set/all/content_spec.rb +4 -4
- data/mod/01_core/spec/set/all/fetch_spec.rb +12 -3
- data/mod/01_core/spec/set/all/name_spec.rb +3 -4
- data/mod/01_core/spec/set/all/pattern_spec.rb +32 -35
- data/mod/01_core/spec/set/all/permissions_spec.rb +17 -5
- data/mod/01_core/spec/set/all/phases_spec.rb +0 -1
- data/mod/01_core/spec/set/all/references_spec.rb +1 -1
- data/mod/01_core/spec/set/all/rules2_spec.rb +79 -91
- data/mod/01_core/spec/set/all/rules_spec.rb +63 -56
- data/mod/01_core/spec/set/all/templating_spec.rb +0 -1
- data/mod/01_core/spec/set/all/tracked_attributes_spec.rb +4 -5
- data/mod/01_core/spec/set/all/trash_spec.rb +23 -1
- data/mod/01_core/spec/set/all/type_spec.rb +2 -5
- data/mod/01_history/lib/card/action.rb +8 -10
- data/mod/01_history/set/all/actions.rb +2 -4
- data/mod/01_history/set/all/content_history.rb +38 -32
- data/mod/01_history/set/all/history.rb +20 -17
- data/mod/02_basic_types/format/rss_format.rb +0 -1
- data/mod/02_basic_types/set/all/all_css.rb +9 -13
- data/mod/02_basic_types/set/all/all_csv.rb +14 -17
- data/mod/02_basic_types/set/all/all_js.rb +3 -4
- data/mod/02_basic_types/set/all/base.rb +2 -2
- data/mod/02_basic_types/set/all/file.rb +2 -5
- data/mod/02_basic_types/set/all/json.rb +19 -18
- data/mod/02_basic_types/set/all/rss.rb +3 -3
- data/mod/02_basic_types/set/all/text.rb +1 -3
- data/mod/02_basic_types/set/type/html.rb +4 -8
- data/mod/02_basic_types/set/type/plain_text.rb +2 -3
- data/mod/02_basic_types/set/type/pointer.rb +82 -92
- data/mod/02_basic_types/spec/set/all/all_css_spec.rb +2 -2
- data/mod/02_basic_types/spec/set/all/all_csv_spec.rb +6 -4
- data/mod/02_basic_types/spec/set/all/base_spec.rb +6 -6
- data/mod/02_basic_types/spec/set/all/json_spec.rb +8 -8
- data/mod/02_basic_types/spec/set/type/plain_text_spec.rb +3 -3
- data/mod/02_basic_types/spec/set/type/pointer_spec.rb +29 -32
- data/mod/03_machines/lib/card/machine.rb +95 -81
- data/mod/03_machines/lib/card/machine_input.rb +35 -34
- data/mod/03_machines/set/right/machine_input.rb +1 -1
- data/mod/03_machines/set/self/script_ace.rb +2 -3
- data/mod/03_machines/set/self/script_card_menu.rb +2 -3
- data/mod/03_machines/set/self/script_jquery_helper.rb +2 -2
- data/mod/03_machines/set/self/script_slot.rb +2 -2
- data/mod/03_machines/set/self/style_bootstrap_compatible.rb +1 -1
- data/mod/03_machines/set/self/style_cards.rb +1 -1
- data/mod/03_machines/set/self/style_jquery_ui_smoothness.rb +0 -1
- data/mod/03_machines/set/type/coffee_script.rb +9 -13
- data/mod/03_machines/set/type/css.rb +12 -13
- data/mod/03_machines/set/type/java_script.rb +6 -8
- data/mod/03_machines/set/type/scss.rb +4 -5
- data/mod/03_machines/set/type/skin.rb +3 -6
- data/mod/03_machines/spec/lib/shared_machine_examples.rb +31 -38
- data/mod/03_machines/spec/lib/shared_machine_input_examples.rb +7 -8
- data/mod/03_machines/spec/set/type/coffeescript_spec.rb +19 -13
- data/mod/03_machines/spec/set/type/css_spec.rb +22 -16
- data/mod/03_machines/spec/set/type/scss_spec.rb +28 -21
- data/mod/03_machines/spec/set/type/skin_spec.rb +28 -30
- data/mod/04_settings/lib/card/setting.rb +4 -4
- data/mod/04_settings/set/abstract/permission.rb +30 -37
- data/mod/04_settings/set/right/add_help.rb +3 -3
- data/mod/04_settings/set/right/script.rb +4 -5
- data/mod/04_settings/set/right/structure.rb +3 -4
- data/mod/04_settings/set/right/style.rb +3 -3
- data/mod/04_settings/set/self/add_help.rb +1 -1
- data/mod/04_settings/set/self/input.rb +1 -1
- data/mod/04_settings/set/self/on_create.rb +1 -1
- data/mod/04_settings/set/self/options.rb +1 -1
- data/mod/04_settings/set/self/options_label.rb +1 -1
- data/mod/04_settings/set/type/setting.rb +29 -44
- data/mod/04_settings/spec/set/right/comment_spec.rb +9 -12
- data/mod/04_settings/spec/set/right/script_spec.rb +7 -7
- data/mod/04_settings/spec/set/right/structure_spec.rb +13 -12
- data/mod/04_settings/spec/set/right/style_spec.rb +13 -13
- data/mod/04_settings/spec/set/type/setting_spec.rb +1 -1
- data/mod/05_email/format/email_html_format.rb +1 -1
- data/mod/05_email/format/email_text_format.rb +2 -2
- data/mod/05_email/lib/card/follow_option.rb +12 -15
- data/mod/05_email/set/all/email_html.rb +2 -3
- data/mod/05_email/set/all/email_text.rb +3 -3
- data/mod/05_email/set/all/follow.rb +14 -22
- data/mod/05_email/set/all/notify.rb +11 -11
- data/mod/05_email/set/all/observer.rb +7 -8
- data/mod/05_email/set/right/bcc.rb +4 -9
- data/mod/05_email/set/right/follow.rb +26 -39
- data/mod/05_email/set/right/follow_fields.rb +2 -2
- data/mod/05_email/set/right/followers.rb +3 -1
- data/mod/05_email/set/right/following.rb +13 -16
- data/mod/05_email/set/self/always.rb +1 -2
- data/mod/05_email/set/self/created.rb +4 -6
- data/mod/05_email/set/self/edited.rb +3 -7
- data/mod/05_email/set/self/follow_defaults.rb +11 -12
- data/mod/05_email/set/self/never.rb +2 -4
- data/mod/05_email/set/type/email_template.rb +40 -27
- data/mod/05_email/set/type_plus_right/user/follow.rb +159 -157
- data/mod/05_email/spec/set/all/follow_spec.rb +28 -37
- data/mod/05_email/spec/set/all/notify_spec.rb +21 -26
- data/mod/05_email/spec/set/all/observer_spec.rb +58 -37
- data/mod/05_email/spec/set/right/followers_spec.rb +9 -14
- data/mod/05_email/spec/set/right/following_spec.rb +1 -1
- data/mod/05_email/spec/set/self/follow_defaults_spec.rb +1 -1
- data/mod/05_standard/lib/carrier_wave/cardmount.rb +9 -9
- data/mod/05_standard/lib/file_uploader.rb +8 -13
- data/mod/05_standard/lib/image_uploader.rb +8 -9
- data/mod/05_standard/set/abstract/attachment.rb +26 -43
- data/mod/05_standard/set/all/account.rb +2 -2
- data/mod/05_standard/set/all/comment.rb +11 -13
- data/mod/05_standard/set/all/error.rb +18 -18
- data/mod/05_standard/set/all/event_viz.rb +16 -29
- data/mod/05_standard/set/all/links.rb +35 -34
- data/mod/05_standard/set/all/list_changes.rb +10 -12
- data/mod/05_standard/set/all/rich_html/content.rb +13 -13
- data/mod/05_standard/set/all/rich_html/editing.rb +5 -5
- data/mod/05_standard/set/all/rich_html/form.rb +22 -26
- data/mod/05_standard/set/all/rich_html/header.rb +18 -25
- data/mod/05_standard/set/all/rich_html/menu.rb +20 -22
- data/mod/05_standard/set/all/rich_html/modal.rb +3 -3
- data/mod/05_standard/set/all/rich_html/toolbar.rb +49 -58
- data/mod/05_standard/set/all/rich_html/wrapper.rb +40 -41
- data/mod/05_standard/set/right/account.rb +26 -14
- data/mod/05_standard/set/right/email.rb +2 -2
- data/mod/05_standard/set/right/password.rb +6 -5
- data/mod/05_standard/set/right/salt.rb +2 -2
- data/mod/05_standard/set/right/stats.rb +17 -20
- data/mod/05_standard/set/right/token.rb +1 -1
- data/mod/05_standard/set/right/when_created.rb +1 -1
- data/mod/05_standard/set/right/when_last_edited.rb +1 -1
- data/mod/05_standard/set/rstar/rules.rb +3 -3
- data/mod/05_standard/set/rstar/rules_editor.rb +39 -39
- data/mod/05_standard/set/self/account_links.rb +21 -22
- data/mod/05_standard/set/self/admin_info.rb +5 -5
- data/mod/05_standard/set/self/alerts.rb +1 -1
- data/mod/05_standard/set/self/all.rb +1 -1
- data/mod/05_standard/set/self/foot.rb +1 -1
- data/mod/05_standard/set/self/head.rb +19 -22
- data/mod/05_standard/set/self/navbox.rb +3 -7
- data/mod/05_standard/set/self/now.rb +1 -1
- data/mod/05_standard/set/self/recent.rb +19 -25
- data/mod/05_standard/set/self/search.rb +2 -4
- data/mod/05_standard/set/self/signin.rb +6 -6
- data/mod/05_standard/set/self/stats.rb +31 -38
- data/mod/05_standard/set/self/version.rb +1 -2
- data/mod/05_standard/set/type/basic.rb +15 -17
- data/mod/05_standard/set/type/cardtype.rb +3 -3
- data/mod/05_standard/set/type/date.rb +1 -2
- data/mod/05_standard/set/type/file.rb +22 -33
- data/mod/05_standard/set/type/image.rb +30 -23
- data/mod/05_standard/set/type/layout_type.rb +4 -4
- data/mod/05_standard/set/type/list.rb +32 -38
- data/mod/05_standard/set/type/listed_by.rb +11 -13
- data/mod/05_standard/set/type/number.rb +5 -6
- data/mod/05_standard/set/type/phrase.rb +1 -1
- data/mod/05_standard/set/type/search_type.rb +25 -23
- data/mod/05_standard/set/type/session.rb +2 -3
- data/mod/05_standard/set/type/set.rb +46 -51
- data/mod/05_standard/set/type/signup.rb +18 -19
- data/mod/05_standard/set/type/toggle.rb +5 -5
- data/mod/05_standard/set/type/user.rb +6 -6
- data/mod/05_standard/spec/chunk/include_spec.rb +115 -98
- data/mod/05_standard/spec/chunk/link_spec.rb +58 -31
- data/mod/05_standard/spec/chunk/query_reference_spec.rb +12 -14
- data/mod/05_standard/spec/set/all/email_html_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/error_spec.rb +3 -3
- data/mod/05_standard/spec/set/all/history_spec.rb +52 -38
- data/mod/05_standard/spec/set/all/links_spec.rb +2 -2
- data/mod/05_standard/spec/set/all/rich_html/editing_spec.rb +0 -1
- data/mod/05_standard/spec/set/all/rich_html/form_spec.rb +11 -11
- data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +4 -4
- data/mod/05_standard/spec/set/right/email_spec.rb +1 -4
- data/mod/05_standard/spec/set/right/password_spec.rb +4 -7
- data/mod/05_standard/spec/set/right/stats_spec.rb +2 -3
- data/mod/05_standard/spec/set/right/when_created_spec.rb +1 -1
- data/mod/05_standard/spec/set/right/when_last_edited_spec.rb +1 -1
- data/mod/05_standard/spec/set/rstar/rules_spec.rb +6 -6
- data/mod/05_standard/spec/set/self/all_spec.rb +11 -13
- data/mod/05_standard/spec/set/self/head_spec.rb +1 -3
- data/mod/05_standard/spec/set/self/navbox_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/now_spec.rb +2 -2
- data/mod/05_standard/spec/set/self/signin_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/stats_spec.rb +1 -1
- data/mod/05_standard/spec/set/self/version_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/cardtype_spec.rb +3 -4
- data/mod/05_standard/spec/set/type/date_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/email_template_spec.rb +5 -5
- data/mod/05_standard/spec/set/type/file_spec.rb +50 -28
- data/mod/05_standard/spec/set/type/html_spec.rb +12 -7
- data/mod/05_standard/spec/set/type/image_spec.rb +55 -45
- data/mod/05_standard/spec/set/type/layout_type_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/listed_by_spec.rb +2 -2
- data/mod/05_standard/spec/set/type/number_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/phrase_spec.rb +1 -1
- data/mod/05_standard/spec/set/type/search_type_spec.rb +15 -16
- data/mod/05_standard/spec/set/type/set_spec.rb +16 -17
- data/mod/05_standard/spec/set/type/signup_spec.rb +7 -5
- data/mod/05_standard/spec/set/type/toggle_spec.rb +4 -4
- data/mod/05_standard/spec/set/type/uri_spec.rb +11 -11
- data/mod/05_standard/spec/set/type/user_spec.rb +0 -1
- data/mod/06_bootstrap/set/all/bootstrap/form.rb +9 -10
- data/mod/06_bootstrap/set/all/bootstrap/helper.rb +22 -27
- data/mod/06_bootstrap/set/all/bootstrap/wrapper.rb +1 -2
- data/mod/06_bootstrap/set/all/rich_bootstrap.rb +1 -3
- data/mod/06_bootstrap/set/self/bootstrap_cards.rb +2 -2
- data/mod/06_bootstrap/set/self/bootstrap_js.rb +2 -2
- data/mod/06_bootstrap/set/self/bootswatch_shared.rb +19 -19
- data/mod/06_bootstrap/set/self/smartmenu_css.rb +2 -2
- data/mod/06_bootstrap/set/self/smartmenu_js.rb +3 -3
- data/mod/06_bootstrap/spec/set/all/bootstrap/form_spec.rb +5 -5
- data/spec/lib/card/action_spec.rb +4 -4
- data/spec/lib/card/cache_spec.rb +3 -5
- data/spec/lib/card/chunk_spec.rb +6 -8
- data/spec/lib/card/codename_spec.rb +4 -6
- data/spec/lib/card/content_spec.rb +12 -17
- data/spec/lib/card/diff_spec.rb +59 -61
- data/spec/lib/card/format_spec.rb +55 -34
- data/spec/lib/card/loader_spec.rb +35 -37
- data/spec/lib/card/name_spec.rb +159 -145
- data/spec/lib/card/query_spec.rb +4 -4
- data/spec/lib/card/reference_spec.rb +24 -24
- data/spec/lib/card/set_pattern_spec.rb +3 -3
- data/spec/lib/card/stage_director_spec.rb +218 -0
- data/spec/lib/card/subcards_spec.rb +12 -16
- data/spec/lib/card/success_spec.rb +16 -18
- data/spec/lib/card/view_cache_spec.rb +1 -1
- data/spec/mailers/mailer_spec.rb +3 -5
- data/spec/models/card/cardtype_spec.rb +40 -51
- data/spec/models/card/create_spec.rb +58 -39
- data/spec/models/card/trash_spec.rb +23 -32
- data/spec/models/card/type_transition_spec.rb +41 -32
- data/spec/models/card/validation_spec.rb +13 -15
- data/spec/models/card_spec.rb +48 -59
- data/spec/spec_helper.rb +26 -31
- metadata +16 -2
@@ -1,16 +1,15 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe 'Card::Set::All::Follow' do
|
4
4
|
def follow_view card_name
|
5
5
|
render_card :follow_link, name: card_name
|
6
6
|
end
|
7
7
|
|
8
|
-
describe
|
9
|
-
|
8
|
+
describe 'follower_ids' do
|
10
9
|
context 'when a new +*follow rule created' do
|
11
10
|
it 'contains id of a new follower' do
|
12
11
|
Card::Auth.as_bot do
|
13
|
-
Card['Joe User'].follow
|
12
|
+
Card['Joe User'].follow 'No One Sees Me'
|
14
13
|
expect(Card['No One Sees Me'].follower_ids).to eq ::Set.new([Card['Joe User'].id])
|
15
14
|
end
|
16
15
|
end
|
@@ -18,51 +17,47 @@ describe "Card::Set::All::Follow" do
|
|
18
17
|
|
19
18
|
subject { Card[cardname].follower_names.sort }
|
20
19
|
context 'followers of No One Sees Me' do
|
21
|
-
let(:cardname) {'No One Sees Me'}
|
20
|
+
let(:cardname) { 'No One Sees Me' }
|
22
21
|
it { is_expected.to eq([]) }
|
23
22
|
end
|
24
23
|
|
25
24
|
context 'followers of Magnifier' do
|
26
|
-
let(:cardname) {'Magnifier'}
|
27
|
-
it { is_expected.to eq([])}
|
25
|
+
let(:cardname) { 'Magnifier' }
|
26
|
+
it { is_expected.to eq([]) }
|
28
27
|
end
|
29
28
|
|
30
29
|
context 'followers of Magnifier+lens' do
|
31
|
-
let(:cardname) {'Magnifier+lens'}
|
32
|
-
it { is_expected.to eq ['Big Brother','Narcissist']}
|
30
|
+
let(:cardname) { 'Magnifier+lens' }
|
31
|
+
it { is_expected.to eq ['Big Brother', 'Narcissist'] }
|
33
32
|
end
|
34
33
|
|
35
34
|
context 'followers of Sunglasses' do
|
36
|
-
let(:cardname) {'Sunglasses'}
|
37
|
-
it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan']}
|
35
|
+
let(:cardname) { 'Sunglasses' }
|
36
|
+
it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan'] }
|
38
37
|
end
|
39
38
|
context 'followers of Sunglasses+tint' do
|
40
|
-
let(:cardname) {'Sunglasses+tint'}
|
41
|
-
it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan']}
|
39
|
+
let(:cardname) { 'Sunglasses+tint' }
|
40
|
+
it { is_expected.to eq ['Big Brother', 'Narcissist', 'Optic fan', 'Sara', 'Sunglasses fan'] }
|
42
41
|
end
|
43
42
|
|
44
43
|
context 'followers of Google glass' do
|
45
|
-
let(:cardname) {'Google glass'}
|
46
|
-
it { is_expected.to eq ['Big Brother', 'Optic fan', 'Sara']}
|
44
|
+
let(:cardname) { 'Google glass' }
|
45
|
+
it { is_expected.to eq ['Big Brother', 'Optic fan', 'Sara'] }
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
describe "view: follow_link" do
|
49
|
+
describe 'view: follow_link' do
|
55
50
|
before do
|
56
51
|
Card::Auth.current_id = Card['Big Brother'].id
|
57
52
|
end
|
58
53
|
|
59
54
|
def assert_following_view name, args
|
60
|
-
assert_follow_view name, args.reverse_merge(following: true, text:
|
55
|
+
assert_follow_view name, args.reverse_merge(following: true, text: 'unfollow')
|
61
56
|
end
|
62
57
|
|
63
|
-
# href="/card/update/Home+*self+philipp+*follow?card%5Bcontent%5D=%5B%5Bnever%5D%5D&success%5Bid%5D=Home&success%5Bview%5D=follow"
|
58
|
+
# href="/card/update/Home+*self+philipp+*follow?card%5Bcontent%5D=%5B%5Bnever%5D%5D&success%5Bid%5D=Home&success%5Bview%5D=follow"
|
64
59
|
def assert_follow_view name, args
|
65
|
-
args[:user] ||=
|
60
|
+
args[:user] ||= 'Big_Brother'
|
66
61
|
# href = "/card/update/#{args[:add_set].to_name.url_key}+#{args[:user]}+*follow?"
|
67
62
|
# href += CGI.escape("card[content]") + '='
|
68
63
|
# href +=
|
@@ -75,61 +70,57 @@ describe "Card::Set::All::Follow" do
|
|
75
70
|
# end
|
76
71
|
|
77
72
|
link_class = 'follow-link'
|
78
|
-
assert_view_select follow_view(name), "a[class~=#{link_class}][href*='']", args[:text] ||
|
73
|
+
assert_view_select follow_view(name), "a[class~=#{link_class}][href*='']", args[:text] || 'follow'
|
79
74
|
end
|
80
75
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
context "when not following" do
|
76
|
+
context 'when not following' do
|
85
77
|
it 'renders follow link' do
|
86
78
|
assert_follow_view 'No One Sees Me', add_set: 'No One Sees Me+*self'
|
87
79
|
end
|
88
80
|
end
|
89
81
|
|
90
|
-
context
|
82
|
+
context 'when following *self' do
|
91
83
|
it 'renders following link' do
|
92
84
|
assert_following_view 'Look At Me', add_set: 'Look at me+*self'
|
93
85
|
end
|
94
86
|
end
|
95
87
|
|
96
|
-
context
|
88
|
+
context 'when following *type' do
|
97
89
|
it 'renders following link' do
|
98
90
|
assert_following_view 'Sunglasses', add_set: 'Sunglasses+*self'
|
99
91
|
end
|
100
92
|
end
|
101
93
|
|
102
|
-
context
|
94
|
+
context 'when following cardtype card' do
|
103
95
|
it 'renders following all link' do
|
104
96
|
assert_following_view 'Optic', add_set: 'Optic+*type', text: 'unfollow'
|
105
97
|
end
|
106
98
|
end
|
107
99
|
|
108
|
-
context
|
100
|
+
context 'when not following cardtype card' do
|
109
101
|
it "renders 'follow all' link" do
|
110
102
|
assert_follow_view 'Basic', add_set: 'Basic+*type', text: 'follow'
|
111
103
|
end
|
112
104
|
end
|
113
105
|
|
114
|
-
context
|
115
|
-
it
|
106
|
+
context 'when following *right' do
|
107
|
+
it 'renders following link' do
|
116
108
|
assert_following_view 'Magnifier+lens', add_set: 'Magnifier+lens+*self'
|
117
109
|
end
|
118
110
|
end
|
119
111
|
|
120
112
|
context 'when following content I created' do
|
121
113
|
before { Card::Auth.current_id = Card['Narcissist'].id }
|
122
|
-
it
|
114
|
+
it 'renders following link' do
|
123
115
|
assert_following_view 'Sunglasses', add_set: 'Sunglasses+*self', user: 'Narcissist'
|
124
116
|
end
|
125
117
|
end
|
126
118
|
|
127
119
|
context 'when following content I edited' do
|
128
120
|
before { Card::Auth.current_id = Card['Narcissist'].id }
|
129
|
-
it
|
121
|
+
it 'renders following link' do
|
130
122
|
assert_following_view 'Magnifier+lens', add_set: 'Magnifier+lens+*self', user: 'Narcissist'
|
131
123
|
end
|
132
124
|
end
|
133
125
|
end
|
134
|
-
|
135
126
|
end
|
@@ -46,7 +46,7 @@ shared_examples_for 'notifications' do
|
|
46
46
|
name: 'bnn card', type: :pointer, content: 'changed content'
|
47
47
|
)
|
48
48
|
@card.format(format: format)
|
49
|
-
|
49
|
+
.render_list_of_changes(action_id: action_id)
|
50
50
|
end
|
51
51
|
it { is_expected.to include "content: #{content}" }
|
52
52
|
end
|
@@ -102,11 +102,11 @@ describe Card::Set::All::Notify do
|
|
102
102
|
before do
|
103
103
|
Card::Auth.as_bot do
|
104
104
|
@card = Card.create!(name: name, content: content,
|
105
|
-
subcards: { '+s1'=>{content: sub1_content},
|
106
|
-
'+s2'=>{content: sub2_content} })
|
105
|
+
subcards: { '+s1' => { content: sub1_content },
|
106
|
+
'+s2' => { content: sub2_content } })
|
107
107
|
end
|
108
108
|
end
|
109
|
-
subject
|
109
|
+
subject do
|
110
110
|
Card[:follower_notification_email].format.render_mail(
|
111
111
|
context: @card.refresh(true),
|
112
112
|
to: Card['Joe User'].email,
|
@@ -114,7 +114,7 @@ describe Card::Set::All::Notify do
|
|
114
114
|
followed_set: "#{@card.name}+*self",
|
115
115
|
follow_option: '*always'
|
116
116
|
).text_part.body.raw_source
|
117
|
-
|
117
|
+
end
|
118
118
|
|
119
119
|
it { is_expected.to include content }
|
120
120
|
it { is_expected.to include sub1_content }
|
@@ -132,20 +132,20 @@ describe Card::Set::All::Notify do
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
context 'for main card' do
|
135
|
-
subject
|
135
|
+
subject do
|
136
136
|
Card[:follower_notification_email].format.render_mail(
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
137
|
+
context: @card.refresh(true),
|
138
|
+
to: Card['Joe User'].email,
|
139
|
+
follower: Card['Joe User'].name,
|
140
|
+
followed_set: @card.name + '+s1+*self',
|
141
|
+
follow_option: '*always'
|
142
|
+
).text_part.body.raw_source
|
143
|
+
end
|
144
144
|
before do
|
145
145
|
Card.create_or_update! "#{name}+*self+*read",
|
146
146
|
type: 'Pointer', content: '[[Administrator]]'
|
147
147
|
Card.create_or_update! "#{name}+s1+*self+*read",
|
148
|
-
type: 'Pointer',content: '[[Anyone]]'
|
148
|
+
type: 'Pointer', content: '[[Anyone]]'
|
149
149
|
end
|
150
150
|
it 'includes subcard content' do
|
151
151
|
is_expected.to include sub1_content
|
@@ -194,17 +194,17 @@ describe Card::Set::All::Notify do
|
|
194
194
|
sub2_content = 'new content of subcard 2'
|
195
195
|
Card::Auth.as_bot do
|
196
196
|
@card = Card.create!(name: name, content: content,
|
197
|
-
subcards: { '+s1'=>{content: sub1_content},
|
198
|
-
|
197
|
+
subcards: { '+s1' => { content: sub1_content },
|
198
|
+
'+s2' => { content: sub2_content } })
|
199
199
|
end
|
200
|
-
result =
|
200
|
+
result = Card[:follower_notification_email].format.render_mail(
|
201
201
|
context: @card,
|
202
202
|
to: Card['Joe User'].email,
|
203
203
|
follower: Card['Joe User'].name,
|
204
204
|
followed_set: "#{@card.name}+*self",
|
205
205
|
follow_option: '*always'
|
206
206
|
).text_part.body.raw_source
|
207
|
-
expect(result).to eq(%
|
207
|
+
expect(result).to eq(%("another card with subcards" was just created by Joe User.
|
208
208
|
|
209
209
|
cardtype: Basic
|
210
210
|
content: main content {{+s1}} {{+s2}}
|
@@ -230,12 +230,11 @@ See the card: /another_card_with_subcards
|
|
230
230
|
You received this email because you're following "another card with subcards".
|
231
231
|
|
232
232
|
Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+card+with+subcards%2B%2Aself%2BJoe+User%2B%2Afollow%5D=%2Anever
|
233
|
-
|
233
|
+
))
|
234
234
|
end
|
235
235
|
end
|
236
236
|
|
237
|
-
|
238
|
-
describe "#notify_followers" do
|
237
|
+
describe '#notify_followers' do
|
239
238
|
def expect_user user_name
|
240
239
|
expect(Card.fetch(user_name).account)
|
241
240
|
end
|
@@ -252,8 +251,6 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
|
|
252
251
|
Card[card_name].update_attributes! content: new_content
|
253
252
|
end
|
254
253
|
|
255
|
-
|
256
|
-
|
257
254
|
it 'sends notifications of edits' do
|
258
255
|
expect_user('Big Brother').to be_notified_of 'All Eyes On Me+*self'
|
259
256
|
update 'All Eyes On Me'
|
@@ -275,8 +272,6 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
|
|
275
272
|
update 'No One Sees Me'
|
276
273
|
end
|
277
274
|
|
278
|
-
|
279
|
-
|
280
275
|
context 'when following *type sets' do
|
281
276
|
before do
|
282
277
|
Card::Auth.current_id = Card['joe admin'].id
|
@@ -343,7 +338,7 @@ Use this link to unfollow /update/Joe_User+*follow?card%5Bsubcards%5D%5Banother+
|
|
343
338
|
|
344
339
|
context 'and follow fields rule contains *include' do
|
345
340
|
it 'sends notification of new included card' do
|
346
|
-
new_card =
|
341
|
+
new_card = Card.new name: 'Sunglasses+lens'
|
347
342
|
expect_user('Sunglasses fan').to be_notified_of 'Sunglasses+*self'
|
348
343
|
new_card.save!
|
349
344
|
end
|
@@ -3,44 +3,63 @@
|
|
3
3
|
describe Card::Set::Type::EmailTemplate do
|
4
4
|
before :each do
|
5
5
|
Card::Auth.as_bot do
|
6
|
-
Card.create! name:
|
7
|
-
|
8
|
-
|
6
|
+
Card.create! name: 'mail template', type_code: 'email_template',
|
7
|
+
subcards: {
|
8
|
+
'+*html message' => {
|
9
|
+
content: 'Hi Joe! My name is {{_self|name}}'
|
10
|
+
},
|
11
|
+
'+*to' => { content: 'joe@user.com' },
|
12
|
+
'+*from' => { content: 'from@user.com' }
|
13
|
+
}
|
9
14
|
end
|
10
15
|
end
|
11
16
|
it 'sends email on update' do
|
12
17
|
Card::Auth.as_bot do
|
13
|
-
Card.create! name:
|
18
|
+
Card.create! name: 'mail test+*self+*on update', type_code: :pointer,
|
19
|
+
content: '[[mail template]]'
|
14
20
|
end
|
15
|
-
card = Card.fetch
|
16
|
-
expect { Card::Auth.as_bot { card.update_attributes(content:
|
21
|
+
card = Card.fetch 'mail test'
|
22
|
+
expect { Card::Auth.as_bot { card.update_attributes(content: 'test') } }
|
23
|
+
.to change { Mail::TestMailer.deliveries.count }.by(1)
|
17
24
|
end
|
18
25
|
|
19
26
|
it 'sends email on delete' do
|
20
27
|
Card::Auth.as_bot do
|
21
|
-
Card.create! name:
|
28
|
+
Card.create! name: 'mail test+*self+*on delete', type_code: :pointer,
|
29
|
+
content: '[[mail template]]'
|
22
30
|
end
|
23
|
-
card = Card.fetch
|
24
|
-
expect { Card::Auth.as_bot { card.delete } }
|
31
|
+
card = Card.fetch 'mail test'
|
32
|
+
expect { Card::Auth.as_bot { card.delete } }
|
33
|
+
.to change { Mail::TestMailer.deliveries.count }.by(1)
|
25
34
|
end
|
26
35
|
|
27
36
|
it 'sends email on create' do
|
28
37
|
Card::Auth.as_bot do
|
29
|
-
Card.create! name:
|
38
|
+
Card.create! name: 'Cardtype A+*type+*on create', type_code: :pointer,
|
39
|
+
content: '[[mail template]]'
|
30
40
|
end
|
31
|
-
expect
|
41
|
+
expect do
|
42
|
+
Card::Auth.as_bot { Card.create! name: 'mailme', type_code: :cardtype_a }
|
43
|
+
end.to change { ActionMailer::Base.deliveries.count }.by(1)
|
32
44
|
end
|
33
45
|
|
34
46
|
describe '#send_action_mails' do
|
35
47
|
before do
|
36
48
|
Card::Auth.as_bot do
|
37
|
-
Card.create! name:
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
49
|
+
Card.create! name: 'another mail template',
|
50
|
+
type_code: 'email_template',
|
51
|
+
subcards: {
|
52
|
+
'+*html message' => {
|
53
|
+
content: 'Hi Joe! My name is {{_self|name}}'
|
54
|
+
},
|
55
|
+
'+*to' => { content: 'joe@user.com' },
|
56
|
+
'+*from' => { content: 'from@user.com' } }
|
57
|
+
Card.create! name: 'mail test+*self+*on update', type_code: :pointer,
|
58
|
+
content: "[[mail template]]\n[[another mail template]]"
|
59
|
+
Card.create! name: 'mail test+*self+*on delete', type_code: :pointer,
|
60
|
+
content: "[[mail template]]\n[[another mail template]]"
|
42
61
|
end
|
43
|
-
card = Card.fetch
|
62
|
+
card = Card.fetch 'mail test'
|
44
63
|
ActionMailer::Base.deliveries = []
|
45
64
|
card.send_action_mails on: :update
|
46
65
|
end
|
@@ -49,28 +68,30 @@ describe Card::Set::Type::EmailTemplate do
|
|
49
68
|
expect(ActionMailer::Base.deliveries.size).to eq(2)
|
50
69
|
end
|
51
70
|
it 'uses correct context' do
|
52
|
-
expect(ActionMailer::Base.deliveries.last.body.raw_source)
|
71
|
+
expect(ActionMailer::Base.deliveries.last.body.raw_source)
|
72
|
+
.to include('My name is mail test')
|
53
73
|
end
|
54
74
|
end
|
55
75
|
|
56
76
|
# describe '#send_timer_mails' do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
77
|
+
# before do
|
78
|
+
# ActionMailer::Base.deliveries = []
|
79
|
+
# Card::Auth.as_bot do
|
80
|
+
# Card.create! name: "A+*hourly", type_code: 'email_template',
|
81
|
+
# subcards: {
|
82
|
+
# '+*message'=>{content: 'hourly update name:{{_self|name}}'},
|
83
|
+
# '+*to'=>{content: 'joe@user.com'},
|
84
|
+
# '+*from'=>{content: 'from@user.com'}}
|
85
|
+
# end
|
86
|
+
# Card::Set::All::Observer.send_timer_mails :hourly
|
87
|
+
# @mail = ActionMailer::Base.deliveries.last
|
88
|
+
# end
|
89
|
+
#
|
90
|
+
# it 'delivers hourly mails' do
|
91
|
+
# expect(@mail.body.raw_source).to include('hourly update')
|
92
|
+
# end
|
93
|
+
# it 'uses correct context' do
|
94
|
+
# expect(@mail.body.raw_source).to include('name:A')
|
95
|
+
# end
|
96
|
+
# end
|
75
97
|
end
|
76
|
-
|
@@ -1,13 +1,11 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
describe Card::Set::Right::Followers do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
4
|
describe '#raw_content' do
|
8
5
|
it 'returns a pointer list of followers' do
|
9
6
|
card = Card.fetch 'All Eyes on me'
|
10
|
-
expect(
|
7
|
+
expect(card.followers_card.item_names.sort)
|
8
|
+
.to eq ['Big Brother', 'John', 'Sara']
|
11
9
|
end
|
12
10
|
end
|
13
11
|
|
@@ -15,7 +13,7 @@ describe Card::Set::Right::Followers do
|
|
15
13
|
it 'contains follower' do
|
16
14
|
card = Card.fetch 'All Eyes on me'
|
17
15
|
view = card.followers_card.format.render_core
|
18
|
-
expect(view).to include(
|
16
|
+
expect(view).to include('Sara')
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
@@ -23,16 +21,16 @@ describe Card::Set::Right::Followers do
|
|
23
21
|
it 'renders a pointer list of followers' do
|
24
22
|
card = Card.fetch 'All Eyes on me'
|
25
23
|
view = card.followers_card.format.render_raw
|
26
|
-
expect(view.split("\n").sort)
|
24
|
+
expect(view.split("\n").sort)
|
25
|
+
.to eq ['[[Big Brother]]', '[[John]]', '[[Sara]]']
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
|
31
29
|
describe 'item_names' do
|
32
30
|
subject { @card.followers_card.item_names.sort }
|
33
31
|
it 'is an array of followers' do
|
34
32
|
@card = Card['All Eyes On Me']
|
35
|
-
is_expected.to eq ['Big Brother','John','Sara']
|
33
|
+
is_expected.to eq ['Big Brother', 'John', 'Sara']
|
36
34
|
end
|
37
35
|
|
38
36
|
it 'recognizes card name changes' do
|
@@ -88,7 +86,7 @@ describe Card::Set::Right::Followers do
|
|
88
86
|
context 'when following content I created' do
|
89
87
|
it 'contains creator' do
|
90
88
|
Card::Auth.current_id = Card['Big Brother'].id
|
91
|
-
@card = Card.create! name:
|
89
|
+
@card = Card.create! name: 'created by Follower'
|
92
90
|
is_expected.to include('Big Brother')
|
93
91
|
end
|
94
92
|
end
|
@@ -99,14 +97,13 @@ describe Card::Set::Right::Followers do
|
|
99
97
|
Card['Sara'].follow '*all', '*edited'
|
100
98
|
end
|
101
99
|
|
102
|
-
@card = Card.create! name:
|
100
|
+
@card = Card.create! name: 'edited by Sara'
|
103
101
|
Card::Auth.current_id = Card['Sara'].id
|
104
102
|
@card.update_attributes! content: 'some content'
|
105
103
|
is_expected.to include('Sara')
|
106
104
|
end
|
107
105
|
end
|
108
106
|
|
109
|
-
|
110
107
|
context 'for a set card' do
|
111
108
|
it 'contains followers of that set' do
|
112
109
|
@card = Card['lens+*right']
|
@@ -120,7 +117,5 @@ describe Card::Set::Right::Followers do
|
|
120
117
|
is_expected.to include('Optic fan')
|
121
118
|
end
|
122
119
|
end
|
123
|
-
|
124
120
|
end
|
125
|
-
|
126
|
-
end
|
121
|
+
end
|