yousty-activeadmin 1.0.0.pre
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 +7 -0
- data/.gitignore +43 -0
- data/.travis.yml +8 -0
- data/.yardopts +9 -0
- data/CHANGELOG.md +1056 -0
- data/CONTRIBUTING.md +110 -0
- data/Gemfile +41 -0
- data/Guardfile +7 -0
- data/LICENSE +25 -0
- data/README.md +67 -0
- data/Rakefile +25 -0
- data/activeadmin.gemspec +33 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/application.js.coffee +6 -0
- data/app/assets/javascripts/active_admin/base.js.coffee +5 -0
- data/app/assets/javascripts/active_admin/components/application.js.coffee +23 -0
- data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +26 -0
- data/app/assets/javascripts/active_admin/components/has_many.js.coffee +41 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +37 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +105 -0
- data/app/assets/javascripts/active_admin/lib/popover.js.coffee +97 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +25 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +293 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +110 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +32 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_links.erb +27 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +17 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
- data/config/locales/bg.yml +101 -0
- data/config/locales/ca.yml +98 -0
- data/config/locales/cs.yml +105 -0
- data/config/locales/da.yml +102 -0
- data/config/locales/de-CH.yml +117 -0
- data/config/locales/de.yml +119 -0
- data/config/locales/en-GB.yml +91 -0
- data/config/locales/en.yml +110 -0
- data/config/locales/es.yml +106 -0
- data/config/locales/es_MX.yml +104 -0
- data/config/locales/fi.yml +109 -0
- data/config/locales/fr.yml +97 -0
- data/config/locales/he.yml +91 -0
- data/config/locales/hr.yml +93 -0
- data/config/locales/hu.yml +92 -0
- data/config/locales/it.yml +89 -0
- data/config/locales/ja.yml +104 -0
- data/config/locales/ko.yml +84 -0
- data/config/locales/lt.yml +90 -0
- data/config/locales/lv.yml +89 -0
- data/config/locales/nl.yml +90 -0
- data/config/locales/no-NB.yml +85 -0
- data/config/locales/pl.yml +93 -0
- data/config/locales/pt-BR.yml +90 -0
- data/config/locales/pt-PT.yml +89 -0
- data/config/locales/ro.yml +93 -0
- data/config/locales/ru.yml +103 -0
- data/config/locales/sv-SE.yml +89 -0
- data/config/locales/tr.yml +90 -0
- data/config/locales/uk.yml +100 -0
- data/config/locales/vi.yml +90 -0
- data/config/locales/zh-CN.yml +90 -0
- data/config/locales/zh-TW.yml +90 -0
- data/cucumber.yml +3 -0
- data/docs/0-installation.md +84 -0
- data/docs/1-general-configuration.md +137 -0
- data/docs/10-custom-pages.md +98 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbre-components.md +144 -0
- data/docs/13-authorization-adapter.md +227 -0
- data/docs/2-resource-customization.md +340 -0
- data/docs/3-index-pages/create-an-index.md +29 -0
- data/docs/3-index-pages/index-as-block.md +21 -0
- data/docs/3-index-pages/index-as-blog.md +71 -0
- data/docs/3-index-pages/index-as-grid.md +29 -0
- data/docs/3-index-pages/index-as-table.md +154 -0
- data/docs/3-index-pages.md +206 -0
- data/docs/4-csv-format.md +39 -0
- data/docs/5-forms.md +110 -0
- data/docs/6-show-pages.md +77 -0
- data/docs/7-sidebars.md +42 -0
- data/docs/8-custom-actions.md +139 -0
- data/docs/9-batch-actions.md +155 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/belongs_to.feature +63 -0
- data/features/breadcrumb.feature +27 -0
- data/features/comments/commenting.feature +140 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +41 -0
- data/features/development_reloading.feature +31 -0
- data/features/edit_page.feature +127 -0
- data/features/favicon.feature +20 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +38 -0
- data/features/index/batch_actions.feature +123 -0
- data/features/index/filters.feature +138 -0
- data/features/index/format_as_csv.feature +117 -0
- data/features/index/formats.feature +66 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +69 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +195 -0
- data/features/index/index_blank_slate.feature +61 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +251 -0
- data/features/index/page_title.feature +30 -0
- data/features/index/pagination.feature +59 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +53 -0
- data/features/new_page.feature +119 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_pages.feature +148 -0
- data/features/registering_resources.feature +33 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +47 -0
- data/features/sidebar_sections.feature +198 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +93 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +82 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/batch_action_steps.rb +55 -0
- data/features/step_definitions/breadcrumb_steps.rb +3 -0
- data/features/step_definitions/comment_steps.rb +12 -0
- data/features/step_definitions/configuration_steps.rb +100 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +34 -0
- data/features/step_definitions/filter_steps.rb +17 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/format_steps.rb +45 -0
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/index_scope_steps.rb +21 -0
- data/features/step_definitions/index_views_steps.rb +3 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/member_link_steps.rb +7 -0
- data/features/step_definitions/menu_steps.rb +11 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +8 -0
- data/features/step_definitions/site_title_steps.rb +15 -0
- data/features/step_definitions/symbol_leak_steps.rb +3 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +119 -0
- data/features/step_definitions/user_steps.rb +39 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +73 -0
- data/features/support/env.rb +112 -0
- data/features/support/paths.rb +71 -0
- data/features/support/selectors.rb +45 -0
- data/features/symbol_leak.feature +35 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +242 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +132 -0
- data/lib/active_admin/base_controller/authorization.rb +151 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +78 -0
- data/lib/active_admin/batch_actions/controller.rb +24 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +127 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +66 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/cancan_adapter.rb +40 -0
- data/lib/active_admin/component.rb +5 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +49 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +70 -0
- data/lib/active_admin/dsl.rb +166 -0
- data/lib/active_admin/engine.rb +7 -0
- data/lib/active_admin/event.rb +33 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +89 -0
- data/lib/active_admin/filters/formtastic_addons.rb +70 -0
- data/lib/active_admin/filters/resource_extension.rb +136 -0
- data/lib/active_admin/filters.rb +9 -0
- data/lib/active_admin/form_builder.rb +152 -0
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +108 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/inputs/datepicker_input.rb +20 -0
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_base.rb +33 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +51 -0
- data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
- data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
- data/lib/active_admin/inputs/filter_select_input.rb +61 -0
- data/lib/active_admin/inputs/filter_string_input.rb +24 -0
- data/lib/active_admin/inputs.rb +15 -0
- data/lib/active_admin/menu.rb +107 -0
- data/lib/active_admin/menu_collection.rb +96 -0
- data/lib/active_admin/menu_item.rb +97 -0
- data/lib/active_admin/namespace.rb +224 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +39 -0
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +84 -0
- data/lib/active_admin/orm/active_record.rb +3 -0
- data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +88 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +28 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/resource/action_items.rb +91 -0
- data/lib/active_admin/resource/belongs_to.rb +36 -0
- data/lib/active_admin/resource/controllers.rb +18 -0
- data/lib/active_admin/resource/menu.rb +64 -0
- data/lib/active_admin/resource/naming.rb +84 -0
- data/lib/active_admin/resource/page_presenters.rb +82 -0
- data/lib/active_admin/resource/pagination.rb +19 -0
- data/lib/active_admin/resource/routes.rb +99 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +50 -0
- data/lib/active_admin/resource/sidebars.rb +27 -0
- data/lib/active_admin/resource.rb +153 -0
- data/lib/active_admin/resource_collection.rb +42 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +298 -0
- data/lib/active_admin/resource_controller/decorators.rb +20 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
- data/lib/active_admin/resource_controller/scoping.rb +31 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/resource_controller.rb +50 -0
- data/lib/active_admin/resource_dsl.rb +134 -0
- data/lib/active_admin/router.rb +106 -0
- data/lib/active_admin/scope.rb +57 -0
- data/lib/active_admin/sidebar_section.rb +37 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +27 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
- data/lib/active_admin/view_helpers/display_helper.rb +49 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
- data/lib/active_admin/view_helpers/form_helper.rb +24 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/view_helpers.rb +21 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +103 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +150 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/index_list.rb +68 -0
- data/lib/active_admin/views/components/paginated_collection.rb +125 -0
- data/lib/active_admin/views/components/panel.rb +34 -0
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +66 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +56 -0
- data/lib/active_admin/views/components/table_for.rb +191 -0
- data/lib/active_admin/views/footer.rb +20 -0
- data/lib/active_admin/views/header.rb +32 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +156 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +264 -0
- data/lib/active_admin/views/pages/base.rb +139 -0
- data/lib/active_admin/views/pages/form.rb +51 -0
- data/lib/active_admin/views/pages/index.rb +147 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/page.rb +30 -0
- data/lib/active_admin/views/pages/show.rb +59 -0
- data/lib/active_admin/views/tabbed_navigation.rb +62 -0
- data/lib/active_admin/views/title_bar.rb +53 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +125 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
- data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +86 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +235 -0
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/lib/ransack_ext.rb +12 -0
- data/script/local +44 -0
- data/script/use_rails +53 -0
- data/spec/integration/default_namespace_spec.rb +61 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +29 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +175 -0
- data/spec/spec_helper_without_rails.rb +16 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/detect_rails_version.rb +42 -0
- data/spec/support/integration_example_group.rb +31 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +111 -0
- data/spec/support/rails_template_with_data.rb +59 -0
- data/spec/support/templates/admin/stores.rb +11 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/support/templates/cucumber_with_reloading.rb +5 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/post_decorator.rb +53 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +126 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +141 -0
- data/spec/unit/asset_registration_spec.rb +52 -0
- data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
- data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
- data/spec/unit/auto_link_spec.rb +32 -0
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +42 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +106 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/config_shared_examples.rb +59 -0
- data/spec/unit/controller_filters_spec.rb +32 -0
- data/spec/unit/csv_builder_spec.rb +103 -0
- data/spec/unit/devise_spec.rb +116 -0
- data/spec/unit/dsl_spec.rb +61 -0
- data/spec/unit/event_spec.rb +47 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +423 -0
- data/spec/unit/filters/resource_spec.rb +119 -0
- data/spec/unit/form_builder_spec.rb +514 -0
- data/spec/unit/generators/install_spec.rb +23 -0
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_collection_spec.rb +62 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +71 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +74 -0
- data/spec/unit/namespace/register_resource_spec.rb +163 -0
- data/spec/unit/namespace_spec.rb +103 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +72 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +122 -0
- data/spec/unit/resource/page_presenters_spec.rb +44 -0
- data/spec/unit/resource/pagination_spec.rb +38 -0
- data/spec/unit/resource/routes_spec.rb +73 -0
- data/spec/unit/resource/scopes_spec.rb +43 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +160 -0
- data/spec/unit/resource_controller/data_access_spec.rb +73 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +265 -0
- data/spec/unit/resource_registration_spec.rb +56 -0
- data/spec/unit/resource_spec.rb +243 -0
- data/spec/unit/routing_spec.rb +172 -0
- data/spec/unit/scope_spec.rb +108 -0
- data/spec/unit/settings_spec.rb +88 -0
- data/spec/unit/view_factory_spec.rb +21 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +149 -0
- data/spec/unit/view_helpers/display_name_spec.rb +41 -0
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
- data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +101 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +230 -0
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +17 -0
- data/spec/unit/views/components/columns_spec.rb +142 -0
- data/spec/unit/views/components/index_list_spec.rb +32 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +227 -0
- data/spec/unit/views/components/panel_spec.rb +51 -0
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +95 -0
- data/spec/unit/views/components/table_for_spec.rb +201 -0
- data/spec/unit/views/pages/form_spec.rb +35 -0
- data/spec/unit/views/pages/layout_spec.rb +63 -0
- data/spec/unit/views/pages/show_spec.rb +20 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
- data/tasks/docs.rake +37 -0
- data/tasks/js.rake +32 -0
- data/tasks/parallel_tests.rake +60 -0
- data/tasks/test.rake +79 -0
- data/tasks/yard.rake +7 -0
- metadata +896 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
|
|
4
|
+
describe ActiveAdmin::Application do
|
|
5
|
+
|
|
6
|
+
let(:application) do
|
|
7
|
+
ActiveAdmin::Application.new.tap do |app|
|
|
8
|
+
# Manually override the load paths becuase RSpec messes these up
|
|
9
|
+
app.load_paths = [File.expand_path('app/admin', Rails.root)]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should have a default load path of ['app/admin']" do
|
|
14
|
+
application.load_paths.should == [File.expand_path('app/admin', Rails.root)]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should remove app/admin from the autoload paths (Active Admin deals with loading)" do
|
|
18
|
+
ActiveSupport::Dependencies.autoload_paths.should_not include(File.join(Rails.root, "app/admin"))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should add app/admin to the Engine's watchable directories (loaded after the app itself)" do
|
|
22
|
+
ActiveAdmin::Engine.config.watchable_dirs.should have_key File.join(Rails.root, "app/admin")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should store the site's title" do
|
|
26
|
+
application.site_title.should == ""
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should set the site title" do
|
|
30
|
+
application.site_title = "New Title"
|
|
31
|
+
application.site_title.should == "New Title"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should store the site's title link" do
|
|
35
|
+
application.site_title_link.should == ""
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should set the site's title link" do
|
|
39
|
+
application.site_title_link = "http://www.mygreatsite.com"
|
|
40
|
+
application.site_title_link.should == "http://www.mygreatsite.com"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should store the site's title image" do
|
|
44
|
+
application.site_title_image.should == ""
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should set the site's title image" do
|
|
48
|
+
application.site_title_image = "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
|
49
|
+
application.site_title_image.should == "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should store the site's favicon" do
|
|
53
|
+
application.favicon.should == false
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should set the site's favicon" do
|
|
57
|
+
application.favicon = "/a/favicon.ico"
|
|
58
|
+
application.favicon.should == "/a/favicon.ico"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should have a view factory" do
|
|
62
|
+
application.view_factory.should be_an_instance_of(ActiveAdmin::ViewFactory)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should allow comments by default" do
|
|
66
|
+
application.allow_comments.should == true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe "authentication settings" do
|
|
70
|
+
|
|
71
|
+
it "should have no default current_user_method" do
|
|
72
|
+
application.current_user_method.should == false
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should have no default authentication method" do
|
|
76
|
+
application.authentication_method.should == false
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should have a logout link path (Devise's default)" do
|
|
80
|
+
application.logout_link_path.should == :destroy_admin_user_session_path
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should have a logout link method (Devise's default)" do
|
|
84
|
+
application.logout_link_method.should == :get
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
describe "files in load path" do
|
|
89
|
+
it "should load files in the first level directory" do
|
|
90
|
+
application.files.should include(File.expand_path("app/admin/dashboard.rb", Rails.root))
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should load files from subdirectories" do
|
|
94
|
+
FileUtils.mkdir_p(File.expand_path("app/admin/public", Rails.root))
|
|
95
|
+
test_file = File.expand_path("app/admin/public/posts.rb", Rails.root)
|
|
96
|
+
FileUtils.touch(test_file)
|
|
97
|
+
application.files.should include(test_file)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe "#namespace" do
|
|
102
|
+
|
|
103
|
+
it "should yield a new namespace" do
|
|
104
|
+
application.namespace :new_namespace do |ns|
|
|
105
|
+
ns.name.should == :new_namespace
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "should return an instantiated namespace" do
|
|
110
|
+
admin = application.namespace :admin
|
|
111
|
+
admin.should == application.namespaces[:admin]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "should yield an existing namespace" do
|
|
115
|
+
expect {
|
|
116
|
+
application.namespace :admin do |ns|
|
|
117
|
+
ns.should == application.namespaces[:admin]
|
|
118
|
+
raise "found"
|
|
119
|
+
end
|
|
120
|
+
}.to raise_error("found")
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "should not pollute the global app" do
|
|
124
|
+
application.namespaces.keys.should be_empty
|
|
125
|
+
application.namespace(:brand_new_ns)
|
|
126
|
+
application.namespaces.keys.should eq [:brand_new_ns]
|
|
127
|
+
ActiveAdmin.application.namespaces.keys.should eq [:admin]
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe "#register_page" do
|
|
132
|
+
it "finds or create the namespace and register the page to it" do
|
|
133
|
+
namespace = double
|
|
134
|
+
application.should_receive(:namespace).with("public").and_return namespace
|
|
135
|
+
namespace.should_receive(:register_page).with("My Page", {:namespace => "public"})
|
|
136
|
+
|
|
137
|
+
application.register_page("My Page", :namespace => "public")
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::AssetRegistration do
|
|
4
|
+
include ActiveAdmin::AssetRegistration
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
clear_stylesheets!
|
|
8
|
+
clear_javascripts!
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should register a stylesheet file" do
|
|
12
|
+
register_stylesheet "active_admin.css"
|
|
13
|
+
stylesheets.length.should == 1
|
|
14
|
+
stylesheets.keys.first.should == "active_admin.css"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should clear all existing stylesheets" do
|
|
18
|
+
register_stylesheet "active_admin.css"
|
|
19
|
+
stylesheets.length.should == 1
|
|
20
|
+
clear_stylesheets!
|
|
21
|
+
stylesheets.should be_empty
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should allow media option when registering stylesheet" do
|
|
25
|
+
register_stylesheet "active_admin.css", media: :print
|
|
26
|
+
stylesheets.values.first[:media].should == :print
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "shouldn't register a stylesheet twice" do
|
|
30
|
+
register_stylesheet "active_admin.css"
|
|
31
|
+
register_stylesheet "active_admin.css"
|
|
32
|
+
stylesheets.length.should == 1
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should register a javascript file" do
|
|
36
|
+
register_javascript "active_admin.js"
|
|
37
|
+
javascripts.should == ["active_admin.js"].to_set
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should clear all existing javascripts" do
|
|
41
|
+
register_javascript "active_admin.js"
|
|
42
|
+
javascripts.should == ["active_admin.js"].to_set
|
|
43
|
+
clear_javascripts!
|
|
44
|
+
javascripts.should be_empty
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "shouldn't register a javascript twice" do
|
|
48
|
+
register_javascript "active_admin.js"
|
|
49
|
+
register_javascript "active_admin.js"
|
|
50
|
+
javascripts.length.should == 1
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::AuthorizationAdapter do
|
|
4
|
+
|
|
5
|
+
let(:adapter) { ActiveAdmin::AuthorizationAdapter.new(double, double) }
|
|
6
|
+
|
|
7
|
+
describe "#authorized?" do
|
|
8
|
+
|
|
9
|
+
it "should always return true" do
|
|
10
|
+
adapter.authorized?(:read, "Resource").should == true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#scope_collection" do
|
|
16
|
+
|
|
17
|
+
it "should return the collection unscoped" do
|
|
18
|
+
collection = double
|
|
19
|
+
adapter.scope_collection(collection, ActiveAdmin::Auth::READ).should == collection
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "using #normalized in a subclass" do
|
|
25
|
+
|
|
26
|
+
let(:auth_class) do
|
|
27
|
+
Class.new(ActiveAdmin::AuthorizationAdapter) do
|
|
28
|
+
|
|
29
|
+
def authorized?(action, subject = nil)
|
|
30
|
+
case subject
|
|
31
|
+
when normalized(String)
|
|
32
|
+
true
|
|
33
|
+
else
|
|
34
|
+
false
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
let(:adapter) { auth_class.new(double, double) }
|
|
42
|
+
|
|
43
|
+
it "should match against a class" do
|
|
44
|
+
adapter.authorized?(:read, String).should == true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'should match against an instance' do
|
|
48
|
+
adapter.authorized?(:read, "String").should == true
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'should not match a different class' do
|
|
52
|
+
adapter.authorized?(:read, Hash).should == false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'should not match a different instance' do
|
|
56
|
+
adapter.authorized?(:read, {}).should == false
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
Auth = ActiveAdmin::Authorization
|
|
3
|
+
|
|
4
|
+
describe Admin::PostsController, "Controller Authorization", :type => :controller do
|
|
5
|
+
|
|
6
|
+
let(:authorization){ controller.send(:active_admin_authorization) }
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
load_defaults!
|
|
10
|
+
# HACK: the AA config is missing, so we throw it in here
|
|
11
|
+
controller.class.active_admin_config = ActiveAdmin.application.namespace(:admin).resources['Post'].controller.active_admin_config
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should authorize the index action" do
|
|
15
|
+
authorization.should_receive(:authorized?).with(Auth::READ, Post).and_return true
|
|
16
|
+
get :index
|
|
17
|
+
response.should be_success
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should authorize the new action" do
|
|
21
|
+
authorization.should_receive(:authorized?).with(Auth::CREATE, an_instance_of(Post)).and_return true
|
|
22
|
+
get :new
|
|
23
|
+
response.should be_success
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should authorize the create action with the new resource" do
|
|
27
|
+
authorization.should_receive(:authorized?).with(Auth::CREATE, an_instance_of(Post)).and_return true
|
|
28
|
+
post :create
|
|
29
|
+
response.should redirect_to action: 'show', id: Post.last.id
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should redirect when the user isn't authorized" do
|
|
33
|
+
authorization.should_receive(:authorized?).with(Auth::READ, Post).and_return false
|
|
34
|
+
get :index
|
|
35
|
+
response.body.should eq '<html><body>You are being <a href="http://test.host/admin">redirected</a>.</body></html>'
|
|
36
|
+
response.should redirect_to '/admin'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "auto linking resources" do
|
|
4
|
+
include ActiveAdmin::ViewHelpers::ActiveAdminApplicationHelper
|
|
5
|
+
include ActiveAdmin::ViewHelpers::AutoLinkHelper
|
|
6
|
+
include ActiveAdmin::ViewHelpers::DisplayHelper
|
|
7
|
+
|
|
8
|
+
let(:active_admin_config) { double namespace: namespace }
|
|
9
|
+
let(:active_admin_namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin) }
|
|
10
|
+
let(:post){ Post.create! :title => "Hello World" }
|
|
11
|
+
|
|
12
|
+
def admin_post_path(post)
|
|
13
|
+
"/admin/posts/#{post.id}"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "when the resource is not registered" do
|
|
17
|
+
it "should return the display name of the object" do
|
|
18
|
+
auto_link(post).should == "Hello World"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "when the resource is registered" do
|
|
23
|
+
before do
|
|
24
|
+
active_admin_namespace.register Post
|
|
25
|
+
end
|
|
26
|
+
it "should return a link with the display name of the object" do
|
|
27
|
+
self.should_receive(:link_to).with("Hello World", admin_post_path(post))
|
|
28
|
+
auto_link(post)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::BatchActions::ResourceExtension do
|
|
4
|
+
|
|
5
|
+
let(:resource) do
|
|
6
|
+
namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
|
|
7
|
+
namespace.batch_actions = true
|
|
8
|
+
namespace.register(Post)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "default action" do
|
|
12
|
+
|
|
13
|
+
it "should have the default action by default" do
|
|
14
|
+
resource.batch_actions.size.should == 1 and resource.batch_actions.first.sym == :destroy
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "adding a new batch action" do
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
resource.clear_batch_actions!
|
|
23
|
+
resource.add_batch_action :flag, "Flag" do
|
|
24
|
+
# Empty
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should add an batch action" do
|
|
29
|
+
resource.batch_actions.size.should == 1
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should store an instance of BatchAction" do
|
|
33
|
+
resource.batch_actions.first.should be_an_instance_of(ActiveAdmin::BatchAction)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should store the block in the batch action" do
|
|
37
|
+
resource.batch_actions.first.block.should_not be_nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "removing batch action" do
|
|
43
|
+
|
|
44
|
+
before do
|
|
45
|
+
resource.remove_batch_action :destroy
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should allow for batch action removal" do
|
|
49
|
+
resource.batch_actions.size.should == 0
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "#batch_action_path" do
|
|
55
|
+
|
|
56
|
+
it "returns the path as a symbol" do
|
|
57
|
+
resource.batch_action_path.should == "/admin/posts/batch_action"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "#display_if_block" do
|
|
63
|
+
|
|
64
|
+
it "should return true by default" do
|
|
65
|
+
action = ActiveAdmin::BatchAction.new :default, "Default"
|
|
66
|
+
action.display_if_block.call.should == true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should return the :if block if set" do
|
|
70
|
+
action = ActiveAdmin::BatchAction.new :with_block, "With Block", :if => proc { false }
|
|
71
|
+
action.display_if_block.call.should == false
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "batch action priority" do
|
|
77
|
+
|
|
78
|
+
it "should have a default priority" do
|
|
79
|
+
action = ActiveAdmin::BatchAction.new :default, "Default"
|
|
80
|
+
action.priority.should == 10
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should correctly order two actions" do
|
|
84
|
+
priority_one = ActiveAdmin::BatchAction.new :one, "One", :priority => 1
|
|
85
|
+
priority_ten = ActiveAdmin::BatchAction.new :ten, "Ten", :priority => 10
|
|
86
|
+
priority_one.should be < priority_ten
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Batch Actions Settings" do
|
|
4
|
+
let(:app) { ActiveAdmin::Application.new }
|
|
5
|
+
let(:ns) { ActiveAdmin::Namespace.new(app, "Admin") }
|
|
6
|
+
let(:post_resource) { ns.register Post }
|
|
7
|
+
|
|
8
|
+
it "should be disabled globally by default" do
|
|
9
|
+
# Note: the default initializer would set it to true
|
|
10
|
+
|
|
11
|
+
app.batch_actions.should be_false
|
|
12
|
+
ns.batch_actions.should be_false
|
|
13
|
+
post_resource.batch_actions_enabled?.should be_false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should be settable to true" do
|
|
17
|
+
app.batch_actions = true
|
|
18
|
+
app.batch_actions.should == true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should be an inheritable_setting" do
|
|
22
|
+
app.batch_actions = true
|
|
23
|
+
ns.batch_actions.should == true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should be settable at the namespace level" do
|
|
27
|
+
app.batch_actions = true
|
|
28
|
+
ns.batch_actions = false
|
|
29
|
+
|
|
30
|
+
app.batch_actions.should == true
|
|
31
|
+
ns.batch_actions.should == false
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should be settable at the resource level" do
|
|
35
|
+
post_resource.batch_actions_enabled?.should == false
|
|
36
|
+
post_resource.batch_actions = true
|
|
37
|
+
post_resource.batch_actions_enabled?.should == true
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should inherit the setting on the resource from the namespace" do
|
|
41
|
+
ns.batch_actions = false
|
|
42
|
+
post_resource.batch_actions_enabled?.should == false
|
|
43
|
+
post_resource.batch_actions.should be_empty
|
|
44
|
+
|
|
45
|
+
post_resource.batch_actions = true
|
|
46
|
+
post_resource.batch_actions_enabled?.should == true
|
|
47
|
+
post_resource.batch_actions.should_not be_empty
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should inherit the setting from the namespace when set to nil" do
|
|
51
|
+
ns.batch_actions = true
|
|
52
|
+
|
|
53
|
+
post_resource.batch_actions = true
|
|
54
|
+
post_resource.batch_actions_enabled?.should == true
|
|
55
|
+
post_resource.batch_actions.should_not be_empty
|
|
56
|
+
|
|
57
|
+
post_resource.batch_actions = nil
|
|
58
|
+
post_resource.batch_actions_enabled?.should == true # inherited from namespace
|
|
59
|
+
post_resource.batch_actions.should_not be_empty
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Resource::BelongsTo do
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
7
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
8
|
+
let(:post){ namespace.register(Post) }
|
|
9
|
+
let(:belongs_to){ ActiveAdmin::Resource::BelongsTo.new(post, :user) }
|
|
10
|
+
|
|
11
|
+
it "should have an owner" do
|
|
12
|
+
belongs_to.owner.should == post
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should have a namespace" do
|
|
16
|
+
belongs_to.namespace.should == namespace
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "finding the target" do
|
|
20
|
+
context "when the resource has been registered" do
|
|
21
|
+
let(:user){ namespace.register(User) }
|
|
22
|
+
before { user } # Ensure user is registered
|
|
23
|
+
|
|
24
|
+
it "should return the target resource" do
|
|
25
|
+
belongs_to.target.should == user
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "when the resource has not been registered" do
|
|
30
|
+
it "should raise a ActiveAdmin::BelongsTo::TargetNotFound" do
|
|
31
|
+
expect {
|
|
32
|
+
belongs_to.target
|
|
33
|
+
}.to raise_error(ActiveAdmin::Resource::BelongsTo::TargetNotFound)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should be optional" do
|
|
39
|
+
belongs_to = ActiveAdmin::Resource::BelongsTo.new post, :user, :optional => true
|
|
40
|
+
belongs_to.should be_optional
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::CanCanAdapter do
|
|
4
|
+
|
|
5
|
+
describe "full integration" do
|
|
6
|
+
|
|
7
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
8
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
|
|
9
|
+
let(:resource){ namespace.register(Post) }
|
|
10
|
+
|
|
11
|
+
let :ability_class do
|
|
12
|
+
Class.new do
|
|
13
|
+
include CanCan::Ability
|
|
14
|
+
|
|
15
|
+
def initialize(user)
|
|
16
|
+
can :read, Post
|
|
17
|
+
cannot :update, Post
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
let(:auth) { namespace.authorization_adapter.new(resource, double) }
|
|
24
|
+
|
|
25
|
+
before do
|
|
26
|
+
namespace.authorization_adapter = ActiveAdmin::CanCanAdapter
|
|
27
|
+
namespace.cancan_ability_class = ability_class
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should initialize the ability stored in the namespace configuration" do
|
|
31
|
+
auth.authorized?(:read, Post).should == true
|
|
32
|
+
auth.authorized?(:update, Post).should == false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should scope the collection with accessible_by" do
|
|
36
|
+
collection = double
|
|
37
|
+
collection.should_receive(:accessible_by).with(auth.cancan_ability, :edit)
|
|
38
|
+
auth.scope_collection(collection, :edit)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Comments" do
|
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
5
|
+
|
|
6
|
+
describe ActiveAdmin::Comment do
|
|
7
|
+
subject { ActiveAdmin::Comment.new }
|
|
8
|
+
|
|
9
|
+
describe "Associations and Validations" do
|
|
10
|
+
it { should belong_to :resource }
|
|
11
|
+
it { should belong_to :author }
|
|
12
|
+
it { should validate_presence_of :resource }
|
|
13
|
+
it { should validate_presence_of :body }
|
|
14
|
+
it { should validate_presence_of :namespace }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe ".find_for_resource_in_namespace" do
|
|
18
|
+
let(:post){ Post.create!(:title => "Hello World") }
|
|
19
|
+
let(:namespace_name){ "admin" }
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
@comment = ActiveAdmin::Comment.create! :resource => post,
|
|
23
|
+
:body => "A Comment",
|
|
24
|
+
:namespace => namespace_name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should return a comment for the resource in the same namespace" do
|
|
28
|
+
ActiveAdmin::Comment.find_for_resource_in_namespace(post, namespace_name).should == [@comment]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should not return a comment for the same resource in a different namespace" do
|
|
32
|
+
ActiveAdmin::Comment.find_for_resource_in_namespace(post, 'public').should == []
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should not return a comment for a different resource" do
|
|
36
|
+
another_post = Post.create! :title => "Another Hello World"
|
|
37
|
+
ActiveAdmin::Comment.find_for_resource_in_namespace(another_post, namespace_name).should == []
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe ".resource_id_cast" do
|
|
42
|
+
let(:post) { Post.create!(:title => "Testing.") }
|
|
43
|
+
let(:namespace_name) { "admin" }
|
|
44
|
+
|
|
45
|
+
it "should cast resource_id as string" do
|
|
46
|
+
comment = ActiveAdmin::Comment.create! :resource => post,
|
|
47
|
+
:body => "Another Comment",
|
|
48
|
+
:namespace => namespace_name
|
|
49
|
+
ActiveAdmin::Comment.resource_id_cast(comment).class.should eql String
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe ".resource_id_type" do
|
|
54
|
+
it "should be :string" do
|
|
55
|
+
ActiveAdmin::Comment.resource_id_type.should eql :string
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe "Commenting on resource with string id" do
|
|
60
|
+
let(:tag){ Tag.create!(:name => "cooltags") }
|
|
61
|
+
let(:namespace_name){ "admin" }
|
|
62
|
+
|
|
63
|
+
it "should allow commenting" do
|
|
64
|
+
comment = ActiveAdmin::Comment.create! :resource => tag,
|
|
65
|
+
:body => "Another Comment",
|
|
66
|
+
:namespace => namespace_name
|
|
67
|
+
|
|
68
|
+
ActiveAdmin::Comment.find_for_resource_in_namespace(tag, namespace_name).should == [comment]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe ActiveAdmin::Comments::NamespaceHelper do
|
|
74
|
+
describe "#comments?" do
|
|
75
|
+
|
|
76
|
+
it "should have comments when the namespace allows comments" do
|
|
77
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
78
|
+
ns.allow_comments = true
|
|
79
|
+
ns.comments?.should be_true
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should not have comments when the namespace does not allow comments" do
|
|
83
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
84
|
+
ns.allow_comments = false
|
|
85
|
+
ns.comments?.should be_false
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe ActiveAdmin::Comments::ResourceHelper do
|
|
92
|
+
it "should add an attr_accessor :comments to ActiveAdmin::Resource" do
|
|
93
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
94
|
+
resource = ActiveAdmin::Resource.new(ns, Post)
|
|
95
|
+
resource.comments.should be_nil
|
|
96
|
+
resource.comments = true
|
|
97
|
+
resource.comments.should be_true
|
|
98
|
+
end
|
|
99
|
+
it "should disable comments if set to false" do
|
|
100
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
101
|
+
resource = ActiveAdmin::Resource.new(ns, Post)
|
|
102
|
+
resource.comments = false
|
|
103
|
+
resource.comments?.should be_false
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class MockComponentClass < ActiveAdmin::Component; end
|
|
4
|
+
|
|
5
|
+
describe ActiveAdmin::Component do
|
|
6
|
+
|
|
7
|
+
let(:component_class){ MockComponentClass }
|
|
8
|
+
let(:component){ component_class.new }
|
|
9
|
+
|
|
10
|
+
it "should be a subclass of an html div" do
|
|
11
|
+
ActiveAdmin::Component.ancestors.should include(Arbre::HTML::Div)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should render to a div, even as a subclass" do
|
|
15
|
+
component.tag_name.should == 'div'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|