activeadmin-rails 1.7.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 +7 -0
- data/.codeclimate.yml +64 -0
- data/.github/ISSUE_TEMPLATE.md +20 -0
- data/.github/workflows/ci.yaml +64 -0
- data/.github/workflows/daily.yaml +64 -0
- data/.github/workflows/pages.yml +72 -0
- data/.gitignore +23 -0
- data/.mdlrc +1 -0
- data/.rubocop.yml +84 -0
- data/.simplecov +13 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +514 -0
- data/CODE_OF_CONDUCT.md +22 -0
- data/CONTRIBUTING.md +190 -0
- data/Gemfile +51 -0
- data/LICENSE +20 -0
- data/README.md +84 -0
- data/Rakefile +56 -0
- data/activeadmin-rails.gemspec +39 -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/base.es6 +23 -0
- data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
- data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
- data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
- data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
- data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
- data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
- data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
- data/app/assets/javascripts/active_admin/lib/has_many.es6 +89 -0
- data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
- data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
- data/app/assets/stylesheets/active_admin/_base.scss +41 -0
- data/app/assets/stylesheets/active_admin/_forms.scss +338 -0
- data/app/assets/stylesheets/active_admin/_header.scss +156 -0
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
- data/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +149 -0
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +152 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -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/_modal_dialog.scss +34 -0
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +55 -0
- data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +17 -0
- data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
- data/app/assets/stylesheets/active_admin/components/_tables.scss +113 -0
- data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
- data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +34 -0
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
- data/app/assets/stylesheets/active_admin/print.scss +287 -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 +41 -0
- data/app/views/active_admin/_head.html.erb +14 -0
- data/app/views/active_admin/base/_action_items.html.arb +7 -0
- data/app/views/active_admin/base/_breadcrumbs.html.arb +8 -0
- data/app/views/active_admin/base/_footer.html.arb +11 -0
- data/app/views/active_admin/base/_header.html.arb +5 -0
- data/app/views/active_admin/base/_sidebar.html.arb +3 -0
- data/app/views/active_admin/base/_title_bar.html.arb +9 -0
- data/app/views/active_admin/base/_unsupported_browser.html.erb +5 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +15 -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 +18 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +15 -0
- data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
- data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/active_admin/devise/shared/_links.erb +33 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
- data/app/views/active_admin/page/_content.html.arb +1 -0
- data/app/views/active_admin/page/index.html.arb +8 -0
- data/app/views/active_admin/resource/_filters_form.html.erb +1 -0
- data/app/views/active_admin/resource/_form.html.arb +11 -0
- data/app/views/active_admin/resource/_index_as_table.html.arb +8 -0
- data/app/views/active_admin/resource/_show.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +13 -0
- data/app/views/active_admin/resource/index.html.arb +101 -0
- data/app/views/active_admin/resource/new.html.arb +13 -0
- data/app/views/active_admin/resource/show.html.arb +22 -0
- data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
- data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.erb +33 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +39 -0
- data/codecov.yml +25 -0
- data/config/i18n-tasks.yml +26 -0
- data/config/locales/ar.yml +133 -0
- data/config/locales/bg.yml +118 -0
- data/config/locales/bs.yml +119 -0
- data/config/locales/ca.yml +104 -0
- data/config/locales/cs.yml +107 -0
- data/config/locales/da.yml +135 -0
- data/config/locales/de-CH.yml +99 -0
- data/config/locales/de.yml +142 -0
- data/config/locales/el.yml +124 -0
- data/config/locales/en-CA.yml +137 -0
- data/config/locales/en-GB.yml +137 -0
- data/config/locales/en.yml +160 -0
- data/config/locales/eo.yml +143 -0
- data/config/locales/es-MX.yml +94 -0
- data/config/locales/es.yml +160 -0
- data/config/locales/fa.yml +117 -0
- data/config/locales/fi.yml +110 -0
- data/config/locales/fr.yml +139 -0
- data/config/locales/he.yml +140 -0
- data/config/locales/hr.yml +121 -0
- data/config/locales/hu.yml +96 -0
- data/config/locales/id.yml +133 -0
- data/config/locales/it.yml +142 -0
- data/config/locales/ja.yml +139 -0
- data/config/locales/ko.yml +118 -0
- data/config/locales/lt.yml +140 -0
- data/config/locales/lv.yml +90 -0
- data/config/locales/nb.yml +128 -0
- data/config/locales/nl.yml +142 -0
- data/config/locales/pl.yml +166 -0
- data/config/locales/pt-BR.yml +141 -0
- data/config/locales/pt-PT.yml +90 -0
- data/config/locales/ro.yml +94 -0
- data/config/locales/ru.yml +139 -0
- data/config/locales/sk.yml +107 -0
- data/config/locales/sv-SE.yml +133 -0
- data/config/locales/tr.yml +142 -0
- data/config/locales/uk.yml +134 -0
- data/config/locales/vi.yml +132 -0
- data/config/locales/zh-CN.yml +141 -0
- data/config/locales/zh-TW.yml +133 -0
- data/config/mdl_style.rb +9 -0
- data/cucumber.yml +6 -0
- data/docs/0-installation.md +121 -0
- data/docs/1-general-configuration.md +207 -0
- data/docs/10-custom-pages.md +148 -0
- data/docs/11-decorators.md +66 -0
- data/docs/12-arbo-components.md +200 -0
- data/docs/13-authorization-adapter.md +288 -0
- data/docs/14-gotchas.md +141 -0
- data/docs/2-resource-customization.md +480 -0
- data/docs/3-index-pages/custom-index.md +39 -0
- data/docs/3-index-pages/index-as-block.md +23 -0
- data/docs/3-index-pages/index-as-blog.md +73 -0
- data/docs/3-index-pages/index-as-grid.md +31 -0
- data/docs/3-index-pages/index-as-table.md +259 -0
- data/docs/3-index-pages.md +349 -0
- data/docs/4-csv-format.md +86 -0
- data/docs/5-forms.md +233 -0
- data/docs/6-show-pages.md +61 -0
- data/docs/7-sidebars.md +63 -0
- data/docs/8-custom-actions.md +160 -0
- data/docs/9-batch-actions.md +248 -0
- data/docs/CNAME +1 -0
- data/docs/Gemfile +7 -0
- data/docs/README.md +24 -0
- data/docs/_config.yml +15 -0
- data/docs/_includes/nav_footer_custom.html +3 -0
- data/docs/documentation.md +61 -0
- data/docs/images/activeadmin.png +0 -0
- data/docs/images/divider.png +0 -0
- data/docs/images/features.png +0 -0
- data/docs/index.css +835 -0
- data/docs/index.html +105 -0
- data/features/action_item.feature +73 -0
- data/features/authorization.feature +64 -0
- data/features/authorization_cancan.feature +52 -0
- data/features/authorization_pundit.feature +37 -0
- data/features/belongs_to.feature +124 -0
- data/features/breadcrumb.feature +76 -0
- data/features/comments/commenting.feature +178 -0
- data/features/comments/viewing_index.feature +18 -0
- data/features/create_another.feature +55 -0
- data/features/dashboard.feature +16 -0
- data/features/decorators.feature +43 -0
- data/features/development_reloading.feature +28 -0
- data/features/edit_page.feature +116 -0
- data/features/favicon.feature +20 -0
- data/features/filter_attributes.feature +46 -0
- data/features/first_boot.feature +16 -0
- data/features/footer.feature +29 -0
- data/features/global_navigation.feature +29 -0
- data/features/i18n.feature +55 -0
- data/features/index/batch_actions.feature +218 -0
- data/features/index/filters.feature +251 -0
- data/features/index/format_as_csv.feature +273 -0
- data/features/index/formats.feature +88 -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 +291 -0
- data/features/index/index_blank_slate.feature +83 -0
- data/features/index/index_parameters.feature +75 -0
- data/features/index/index_scope_to.feature +56 -0
- data/features/index/index_scopes.feature +325 -0
- data/features/index/page_title.feature +41 -0
- data/features/index/pagination.feature +63 -0
- data/features/index/switch_index_view.feature +73 -0
- data/features/menu.feature +85 -0
- data/features/meta_tags.feature +21 -0
- data/features/new_page.feature +136 -0
- data/features/registering_assets.feature +34 -0
- data/features/registering_pages.feature +237 -0
- data/features/registering_resources.feature +33 -0
- data/features/renamed_resource.feature +29 -0
- data/features/root_to.feature +18 -0
- data/features/show/attributes_table_title.feature +54 -0
- data/features/show/columns.feature +40 -0
- data/features/show/default_content.feature +44 -0
- data/features/show/page_title.feature +58 -0
- data/features/show/tabs.feature +47 -0
- data/features/sidebar_sections.feature +210 -0
- data/features/site_title.feature +47 -0
- data/features/specifying_actions.feature +118 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/action_link_steps.rb +19 -0
- data/features/step_definitions/additional_web_steps.rb +81 -0
- data/features/step_definitions/asset_steps.rb +15 -0
- data/features/step_definitions/attribute_steps.rb +18 -0
- data/features/step_definitions/attributes_table_title_steps.rb +11 -0
- data/features/step_definitions/batch_action_steps.rb +78 -0
- data/features/step_definitions/blog_steps.rb +3 -0
- data/features/step_definitions/breadcrumb_steps.rb +13 -0
- data/features/step_definitions/column_steps.rb +8 -0
- data/features/step_definitions/comment_steps.rb +32 -0
- data/features/step_definitions/configuration_steps.rb +102 -0
- data/features/step_definitions/dashboard_steps.rb +15 -0
- data/features/step_definitions/factory_steps.rb +35 -0
- data/features/step_definitions/filter_steps.rb +57 -0
- data/features/step_definitions/flash_steps.rb +11 -0
- data/features/step_definitions/footer_steps.rb +21 -0
- data/features/step_definitions/format_steps.rb +60 -0
- data/features/step_definitions/i18n_steps.rb +11 -0
- data/features/step_definitions/index_scope_steps.rb +42 -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/meta_tag_steps.rb +3 -0
- data/features/step_definitions/pagination_steps.rb +15 -0
- data/features/step_definitions/root_steps.rb +9 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/site_title_steps.rb +31 -0
- data/features/step_definitions/tab_steps.rb +17 -0
- data/features/step_definitions/table_steps.rb +116 -0
- data/features/step_definitions/user_steps.rb +52 -0
- data/features/step_definitions/web_steps.rb +86 -0
- data/features/sti_resource.feature +65 -0
- data/features/strong_parameters.feature +69 -0
- data/features/support/env.rb +129 -0
- data/features/support/paths.rb +75 -0
- data/features/support/regular_env.rb +7 -0
- data/features/support/reload_env.rb +7 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +32 -0
- data/features/users/logging_out.feature +29 -0
- data/features/users/resetting_password.feature +30 -0
- data/gemfiles/rails_42.gemfile +12 -0
- data/gemfiles/rails_52.gemfile +15 -0
- data/gemfiles/rails_60.gemfile +16 -0
- data/gemfiles/rails_61.gemfile +15 -0
- data/gemfiles/rails_61_turbolinks.gemfile +15 -0
- data/gemfiles/rails_70.gemfile +15 -0
- data/gemfiles/rails_70_hotwire.gemfile +15 -0
- data/gemfiles/rails_71.gemfile +17 -0
- data/lib/active_admin/abstract_view_factory.rb +47 -0
- data/lib/active_admin/application.rb +255 -0
- data/lib/active_admin/application_settings.rb +42 -0
- data/lib/active_admin/asset_registration.rb +29 -0
- data/lib/active_admin/authorization_adapter.rb +129 -0
- data/lib/active_admin/base_controller/authorization.rb +126 -0
- data/lib/active_admin/base_controller/menu.rb +34 -0
- data/lib/active_admin/base_controller.rb +91 -0
- data/lib/active_admin/batch_actions/controller.rb +45 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +151 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +45 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +58 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +38 -0
- data/lib/active_admin/batch_actions.rb +16 -0
- data/lib/active_admin/callbacks.rb +88 -0
- data/lib/active_admin/cancan_adapter.rb +36 -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 +136 -0
- data/lib/active_admin/dependency.rb +96 -0
- data/lib/active_admin/deprecation.rb +10 -0
- data/lib/active_admin/devise.rb +80 -0
- data/lib/active_admin/dsl.rb +193 -0
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +22 -0
- data/lib/active_admin/error.rb +62 -0
- data/lib/active_admin/event.rb +24 -0
- data/lib/active_admin/filters/active.rb +29 -0
- data/lib/active_admin/filters/active_filter.rb +123 -0
- data/lib/active_admin/filters/active_sidebar.rb +50 -0
- data/lib/active_admin/filters/dsl.rb +21 -0
- data/lib/active_admin/filters/forms.rb +85 -0
- data/lib/active_admin/filters/formtastic_addons.rb +79 -0
- data/lib/active_admin/filters/resource_extension.rb +153 -0
- data/lib/active_admin/filters.rb +11 -0
- data/lib/active_admin/form_builder.rb +182 -0
- data/lib/active_admin/generators/boilerplate.rb +45 -0
- data/lib/active_admin/helpers/collection.rb +19 -0
- data/lib/active_admin/helpers/i18n.rb +7 -0
- data/lib/active_admin/helpers/optional_display.rb +38 -0
- data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/inputs/datepicker_input.rb +27 -0
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
- data/lib/active_admin/inputs/filters/base.rb +44 -0
- data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
- data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +49 -0
- data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
- data/lib/active_admin/inputs/filters/select_input.rb +58 -0
- data/lib/active_admin/inputs/filters/string_input.rb +26 -0
- data/lib/active_admin/inputs/filters/text_input.rb +25 -0
- data/lib/active_admin/inputs.rb +21 -0
- data/lib/active_admin/localizers/resource_localizer.rb +35 -0
- data/lib/active_admin/localizers.rb +11 -0
- data/lib/active_admin/menu.rb +106 -0
- data/lib/active_admin/menu_collection.rb +55 -0
- data/lib/active_admin/menu_item.rb +79 -0
- data/lib/active_admin/namespace.rb +325 -0
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/order_clause.rb +48 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +35 -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/views/active_admin_comments.rb +95 -0
- data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
- data/lib/active_admin/orm/active_record/comments.rb +99 -0
- data/lib/active_admin/orm/active_record.rb +5 -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 +114 -0
- data/lib/active_admin/page_controller.rb +29 -0
- data/lib/active_admin/page_dsl.rb +35 -0
- data/lib/active_admin/page_presenter.rb +32 -0
- data/lib/active_admin/pundit_adapter.rb +68 -0
- data/lib/active_admin/resource/action_items.rb +120 -0
- data/lib/active_admin/resource/attributes.rb +47 -0
- data/lib/active_admin/resource/belongs_to.rb +48 -0
- data/lib/active_admin/resource/controllers.rb +19 -0
- data/lib/active_admin/resource/includes.rb +12 -0
- data/lib/active_admin/resource/menu.rb +65 -0
- data/lib/active_admin/resource/naming.rb +62 -0
- data/lib/active_admin/resource/ordering.rb +11 -0
- data/lib/active_admin/resource/page_presenters.rb +90 -0
- data/lib/active_admin/resource/pagination.rb +23 -0
- data/lib/active_admin/resource/routes.rb +134 -0
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +52 -0
- data/lib/active_admin/resource/sidebars.rb +32 -0
- data/lib/active_admin/resource.rb +215 -0
- data/lib/active_admin/resource_collection.rb +72 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/data_access.rb +341 -0
- data/lib/active_admin/resource_controller/decorators.rb +102 -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/streaming.rb +47 -0
- data/lib/active_admin/resource_controller.rb +116 -0
- data/lib/active_admin/resource_dsl.rb +221 -0
- data/lib/active_admin/router.rb +113 -0
- data/lib/active_admin/scope.rb +60 -0
- data/lib/active_admin/settings_node.rb +19 -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 +10 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +45 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +52 -0
- data/lib/active_admin/view_helpers/display_helper.rb +95 -0
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +58 -0
- data/lib/active_admin/view_helpers/fields_for.rb +50 -0
- data/lib/active_admin/view_helpers/flash_helper.rb +14 -0
- data/lib/active_admin/view_helpers/form_helper.rb +20 -0
- data/lib/active_admin/view_helpers/layout_helper.rb +32 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +97 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -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/components/action_link.rb +13 -0
- data/lib/active_admin/views/components/active_admin_form.rb +163 -0
- data/lib/active_admin/views/components/attributes_panel.rb +23 -0
- data/lib/active_admin/views/components/attributes_table.rb +94 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +161 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +71 -0
- data/lib/active_admin/views/components/index_list.rb +69 -0
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/paginated_collection.rb +159 -0
- data/lib/active_admin/views/components/panel.rb +38 -0
- data/lib/active_admin/views/components/scopes.rb +72 -0
- data/lib/active_admin/views/components/sidebar_section.rb +34 -0
- data/lib/active_admin/views/components/site_title.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +88 -0
- data/lib/active_admin/views/components/table_for.rb +209 -0
- data/lib/active_admin/views/components/tabs.rb +40 -0
- data/lib/active_admin/views/index_as_block.rb +36 -0
- data/lib/active_admin/views/index_as_blog.rb +155 -0
- data/lib/active_admin/views/index_as_grid.rb +80 -0
- data/lib/active_admin/views/index_as_table.rb +377 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +132 -0
- data/lib/activeadmin-rails.rb +1 -0
- data/lib/bug_report_templates/active_admin_main.rb +110 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +14 -0
- data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +68 -0
- data/lib/generators/active_admin/install/install_generator.rb +45 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +300 -0
- data/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -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.erb +16 -0
- data/lib/generators/active_admin/page/USAGE +8 -0
- data/lib/generators/active_admin/page/page_generator.rb +12 -0
- data/lib/generators/active_admin/page/templates/page.rb +5 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +20 -0
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +6 -0
- data/lib/ransack_ext.rb +20 -0
- data/spec/bug_report_templates_spec.rb +28 -0
- data/spec/changelog_spec.rb +15 -0
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -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/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_runner.rb +19 -0
- data/spec/rails_helper.rb +67 -0
- data/spec/requests/default_namespace_spec.rb +81 -0
- data/spec/requests/memory_spec.rb +25 -0
- data/spec/requests/pages/form_spec.rb +73 -0
- data/spec/requests/pages/index_spec.rb +96 -0
- data/spec/requests/pages/layout_spec.rb +59 -0
- data/spec/requests/pages/show_spec.rb +38 -0
- data/spec/requests/stylesheets_spec.rb +18 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/active_admin_integration_spec_helper.rb +79 -0
- data/spec/support/active_admin_request_helpers.rb +39 -0
- data/spec/support/rails_template.rb +224 -0
- data/spec/support/rails_template_with_data.rb +328 -0
- data/spec/support/templates/admin/stores.rb +7 -0
- data/spec/support/templates/en.yml +8 -0
- data/spec/support/templates/manifest.js +3 -0
- data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
- data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
- data/spec/support/templates/policies/admin_user_policy.rb +11 -0
- data/spec/support/templates/policies/application_policy.rb +44 -0
- data/spec/support/templates/policies/category_policy.rb +7 -0
- data/spec/support/templates/policies/post_policy.rb +15 -0
- data/spec/support/templates/policies/store_policy.rb +11 -0
- data/spec/support/templates/policies/user_policy.rb +11 -0
- data/spec/support/templates/post_decorator.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +78 -0
- data/spec/unit/action_builder_spec.rb +160 -0
- data/spec/unit/active_admin_spec.rb +11 -0
- data/spec/unit/application_spec.rb +180 -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 +43 -0
- data/spec/unit/authorization/index_overriding_spec.rb +23 -0
- data/spec/unit/auto_link_spec.rb +103 -0
- data/spec/unit/batch_actions/resource_spec.rb +84 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/belongs_to_spec.rb +76 -0
- data/spec/unit/cancan_adapter_spec.rb +43 -0
- data/spec/unit/comments_spec.rb +204 -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 +41 -0
- data/spec/unit/csv_builder_spec.rb +321 -0
- data/spec/unit/dependency_spec.rb +135 -0
- data/spec/unit/devise_spec.rb +110 -0
- data/spec/unit/dsl_spec.rb +120 -0
- data/spec/unit/dynamic_settings_spec.rb +28 -0
- data/spec/unit/filters/active_filter_spec.rb +222 -0
- data/spec/unit/filters/active_spec.rb +24 -0
- data/spec/unit/filters/filter_form_builder_spec.rb +524 -0
- data/spec/unit/filters/resource_spec.rb +128 -0
- data/spec/unit/form_builder_spec.rb +1013 -0
- data/spec/unit/generators/install_spec.rb +31 -0
- data/spec/unit/helpers/collection_spec.rb +68 -0
- data/spec/unit/helpers/scope_chain_spec.rb +35 -0
- data/spec/unit/i18n_spec.rb +29 -0
- data/spec/unit/localizers/resource_localizer_spec.rb +36 -0
- data/spec/unit/menu_collection_spec.rb +40 -0
- data/spec/unit/menu_item_spec.rb +82 -0
- data/spec/unit/menu_spec.rb +60 -0
- data/spec/unit/namespace/authorization_spec.rb +27 -0
- data/spec/unit/namespace/register_page_spec.rb +99 -0
- data/spec/unit/namespace/register_resource_spec.rb +162 -0
- data/spec/unit/namespace_spec.rb +132 -0
- data/spec/unit/order_clause_spec.rb +81 -0
- data/spec/unit/page_controller_spec.rb +5 -0
- data/spec/unit/page_spec.rb +128 -0
- data/spec/unit/pretty_format_spec.rb +133 -0
- data/spec/unit/pundit_adapter_spec.rb +98 -0
- data/spec/unit/resource/action_items_spec.rb +83 -0
- data/spec/unit/resource/attributes_spec.rb +56 -0
- data/spec/unit/resource/includes_spec.rb +21 -0
- data/spec/unit/resource/menu_spec.rb +18 -0
- data/spec/unit/resource/naming_spec.rb +120 -0
- data/spec/unit/resource/ordering_spec.rb +35 -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 +125 -0
- data/spec/unit/resource/scopes_spec.rb +50 -0
- data/spec/unit/resource/sidebars_spec.rb +43 -0
- data/spec/unit/resource_collection_spec.rb +175 -0
- data/spec/unit/resource_controller/data_access_spec.rb +234 -0
- data/spec/unit/resource_controller/decorators_spec.rb +94 -0
- data/spec/unit/resource_controller/sidebars_spec.rb +37 -0
- data/spec/unit/resource_controller_spec.rb +290 -0
- data/spec/unit/resource_registration_spec.rb +61 -0
- data/spec/unit/resource_spec.rb +320 -0
- data/spec/unit/routing_spec.rb +211 -0
- data/spec/unit/scope_spec.rb +225 -0
- data/spec/unit/settings_node_spec.rb +26 -0
- data/spec/unit/view_factory_spec.rb +13 -0
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +255 -0
- data/spec/unit/view_helpers/display_helper_spec.rb +203 -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/flash_helper_spec.rb +24 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +42 -0
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +138 -0
- data/spec/unit/views/components/attributes_table_spec.rb +271 -0
- data/spec/unit/views/components/batch_action_selector_spec.rb +43 -0
- data/spec/unit/views/components/blank_slate_spec.rb +27 -0
- data/spec/unit/views/components/columns_spec.rb +187 -0
- data/spec/unit/views/components/index_list_spec.rb +49 -0
- data/spec/unit/views/components/index_table_for_spec.rb +127 -0
- data/spec/unit/views/components/menu_item_spec.rb +29 -0
- data/spec/unit/views/components/menu_spec.rb +168 -0
- data/spec/unit/views/components/paginated_collection_spec.rb +249 -0
- data/spec/unit/views/components/panel_spec.rb +58 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +68 -0
- data/spec/unit/views/components/site_title_spec.rb +82 -0
- data/spec/unit/views/components/status_tag_spec.rb +265 -0
- data/spec/unit/views/components/table_for_spec.rb +441 -0
- data/spec/unit/views/components/tabs_spec.rb +99 -0
- data/spec/unit/views/index_as_blog_spec.rb +76 -0
- data/tasks/docs.rake +64 -0
- data/tasks/lint.rake +21 -0
- data/tasks/local.rake +25 -0
- data/tasks/parallel_tests.rake +66 -0
- data/tasks/test.rake +24 -0
- data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
- metadata +1012 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
Feature: Index Scoping
|
|
2
|
+
|
|
3
|
+
Viewing resources and scoping them
|
|
4
|
+
|
|
5
|
+
Scenario: Viewing resources with one scope and no default
|
|
6
|
+
Given 3 posts exist
|
|
7
|
+
And an index configuration of:
|
|
8
|
+
"""
|
|
9
|
+
ActiveAdmin.register Post do
|
|
10
|
+
scope :all
|
|
11
|
+
end
|
|
12
|
+
"""
|
|
13
|
+
Then I should see the scope "All" not selected
|
|
14
|
+
And I should see the scope "All" with the count 3
|
|
15
|
+
And I should see 3 posts in the table
|
|
16
|
+
|
|
17
|
+
Scenario: Viewing resources with one scope with dynamic name
|
|
18
|
+
Given 3 posts exist
|
|
19
|
+
And an index configuration of:
|
|
20
|
+
"""
|
|
21
|
+
ActiveAdmin.register Post do
|
|
22
|
+
scope -> { scope_title }, :all
|
|
23
|
+
|
|
24
|
+
controller do
|
|
25
|
+
def scope_title
|
|
26
|
+
'Neat scope'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
helper_method :scope_title
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
"""
|
|
33
|
+
Then I should see the scope with label "Neat scope"
|
|
34
|
+
And I should see 3 posts in the table
|
|
35
|
+
When I follow "Neat scope"
|
|
36
|
+
And I should see 3 posts in the table
|
|
37
|
+
And I should see the current scope with label "Neat scope"
|
|
38
|
+
|
|
39
|
+
Scenario: Viewing resources with one scope as the default
|
|
40
|
+
Given 3 posts exist
|
|
41
|
+
And an index configuration of:
|
|
42
|
+
"""
|
|
43
|
+
ActiveAdmin.register Post do
|
|
44
|
+
scope :all, default: true
|
|
45
|
+
end
|
|
46
|
+
"""
|
|
47
|
+
Then I should see the scope "All" selected
|
|
48
|
+
And I should see the scope "All" with the count 3
|
|
49
|
+
And I should see 3 posts in the table
|
|
50
|
+
|
|
51
|
+
Scenario: Viewing resources with one scope that is set as not default
|
|
52
|
+
Given 3 posts exist
|
|
53
|
+
And an index configuration of:
|
|
54
|
+
"""
|
|
55
|
+
ActiveAdmin.register Post do
|
|
56
|
+
scope :all, default: proc{ false }
|
|
57
|
+
end
|
|
58
|
+
"""
|
|
59
|
+
Then I should see the scope "All" not selected
|
|
60
|
+
And I should see the scope "All" with the count 3
|
|
61
|
+
And I should see 3 posts in the table
|
|
62
|
+
|
|
63
|
+
Scenario: Viewing resources with a scope and no results
|
|
64
|
+
Given 3 posts exist
|
|
65
|
+
And an index configuration of:
|
|
66
|
+
"""
|
|
67
|
+
ActiveAdmin.register Post do
|
|
68
|
+
scope :all, default: true
|
|
69
|
+
filter :title
|
|
70
|
+
end
|
|
71
|
+
"""
|
|
72
|
+
When I fill in "Title" with "Non Existing Post"
|
|
73
|
+
And I press "Filter"
|
|
74
|
+
Then I should see the scope "All" selected
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
Scenario: Viewing resources with a scope but scope_count turned off
|
|
78
|
+
Given 3 posts exist
|
|
79
|
+
And an index configuration of:
|
|
80
|
+
"""
|
|
81
|
+
ActiveAdmin.register Post do
|
|
82
|
+
scope :all, default: true
|
|
83
|
+
index as: :table, scope_count: false
|
|
84
|
+
end
|
|
85
|
+
"""
|
|
86
|
+
Then I should see the scope "All" selected
|
|
87
|
+
And I should see the scope "All" with no count
|
|
88
|
+
And I should see 3 posts in the table
|
|
89
|
+
|
|
90
|
+
@scope
|
|
91
|
+
Scenario: Viewing resources with a scope and scope count turned off for a single scope
|
|
92
|
+
Given 3 posts exist
|
|
93
|
+
And an index configuration of:
|
|
94
|
+
"""
|
|
95
|
+
ActiveAdmin.register Post do
|
|
96
|
+
scope :all, default: true, show_count: false
|
|
97
|
+
end
|
|
98
|
+
"""
|
|
99
|
+
Then I should see the scope "All" selected
|
|
100
|
+
And I should see the scope "All" with no count
|
|
101
|
+
And I should see 3 posts in the table
|
|
102
|
+
|
|
103
|
+
Scenario: Viewing resources when scoping
|
|
104
|
+
Given 2 posts exist
|
|
105
|
+
And 3 published posts exist
|
|
106
|
+
And an index configuration of:
|
|
107
|
+
"""
|
|
108
|
+
ActiveAdmin.register Post do
|
|
109
|
+
scope :all, default: true
|
|
110
|
+
scope :published do |posts|
|
|
111
|
+
posts.where("published_date IS NOT NULL")
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
"""
|
|
115
|
+
Then I should see the scope "All" with the count 5
|
|
116
|
+
And I should see 5 posts in the table
|
|
117
|
+
And I should see the scope "Published" with the count 3
|
|
118
|
+
When I follow "Published"
|
|
119
|
+
Then I should see the scope "Published" selected
|
|
120
|
+
And I should see the current scope with label "Published"
|
|
121
|
+
And I should see 3 posts in the table
|
|
122
|
+
|
|
123
|
+
Scenario: Viewing resources when scoping and filtering
|
|
124
|
+
Given 2 posts written by "Daft Punk" exist
|
|
125
|
+
And 1 published posts written by "Daft Punk" exist
|
|
126
|
+
|
|
127
|
+
And 1 posts written by "Alfred" exist
|
|
128
|
+
And 2 published posts written by "Alfred" exist
|
|
129
|
+
|
|
130
|
+
And an index configuration of:
|
|
131
|
+
"""
|
|
132
|
+
ActiveAdmin.register Post do
|
|
133
|
+
scope :all, default: true
|
|
134
|
+
scope :published do |posts|
|
|
135
|
+
posts.where("published_date IS NOT NULL")
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
"""
|
|
139
|
+
Then I should see the scope "All" with the count 6
|
|
140
|
+
And I should see the scope "Published" with the count 3
|
|
141
|
+
And I should see 6 posts in the table
|
|
142
|
+
|
|
143
|
+
When I follow "Published"
|
|
144
|
+
Then I should see the scope "Published" selected
|
|
145
|
+
And I should see the current scope with label "Published"
|
|
146
|
+
And I should see the scope "All" with the count 6
|
|
147
|
+
And I should see the scope "Published" with the count 3
|
|
148
|
+
And I should see 3 posts in the table
|
|
149
|
+
|
|
150
|
+
When I select "Daft Punk" from "Author"
|
|
151
|
+
And I press "Filter"
|
|
152
|
+
|
|
153
|
+
Then I should see the scope "Published" selected
|
|
154
|
+
And I should see the scope "All" with the count 3
|
|
155
|
+
And I should see the scope "Published" with the count 1
|
|
156
|
+
And I should see 1 posts in the table
|
|
157
|
+
|
|
158
|
+
Scenario: Viewing resources with optional scopes
|
|
159
|
+
Given 3 posts exist
|
|
160
|
+
And an index configuration of:
|
|
161
|
+
"""
|
|
162
|
+
ActiveAdmin.register Post do
|
|
163
|
+
scope :all, if: proc { false }
|
|
164
|
+
scope "Shown", if: proc { true } do |posts|
|
|
165
|
+
posts
|
|
166
|
+
end
|
|
167
|
+
scope "Shown with lambda", if: -> { true } do |posts|
|
|
168
|
+
posts
|
|
169
|
+
end
|
|
170
|
+
scope "Shown with method name", if: :neat_scope? do |posts|
|
|
171
|
+
posts
|
|
172
|
+
end
|
|
173
|
+
scope "Default", default: true do |posts|
|
|
174
|
+
posts
|
|
175
|
+
end
|
|
176
|
+
scope 'Today', if: proc { false } do |posts|
|
|
177
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day, ::Time.zone.now.end_of_day])
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
controller do
|
|
181
|
+
def neat_scope?
|
|
182
|
+
true
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
helper_method :neat_scope?
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
"""
|
|
189
|
+
Then I should see the scope "Default" selected
|
|
190
|
+
And I should not see the scope "All"
|
|
191
|
+
And I should not see the scope "Today"
|
|
192
|
+
And I should see the scope "Shown"
|
|
193
|
+
And I should see the scope "Shown with lambda"
|
|
194
|
+
And I should see the scope "Shown with method name"
|
|
195
|
+
And I should see the scope "Default" with the count 3
|
|
196
|
+
|
|
197
|
+
Scenario: Viewing resources with multiple scopes as blocks
|
|
198
|
+
Given 3 posts exist
|
|
199
|
+
And an index configuration of:
|
|
200
|
+
"""
|
|
201
|
+
ActiveAdmin.register Post do
|
|
202
|
+
scope 'Today', default: true do |posts|
|
|
203
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day, ::Time.zone.now.end_of_day])
|
|
204
|
+
end
|
|
205
|
+
scope 'Tomorrow' do |posts|
|
|
206
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day + 1.day, ::Time.zone.now.end_of_day + 1.day])
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
"""
|
|
210
|
+
Then I should see the scope "Today" selected
|
|
211
|
+
And I should see the scope "Tomorrow" not selected
|
|
212
|
+
And I should see the scope "Today" with the count 3
|
|
213
|
+
And I should see the scope "Tomorrow" with the count 0
|
|
214
|
+
And I should see 3 posts in the table
|
|
215
|
+
And I should see a link to "Tomorrow"
|
|
216
|
+
|
|
217
|
+
When I follow "Tomorrow"
|
|
218
|
+
Then I should see the scope "Tomorrow" selected
|
|
219
|
+
And I should see the scope "Today" not selected
|
|
220
|
+
And I should see a link to "Today"
|
|
221
|
+
And I should see the current scope with label "Tomorrow"
|
|
222
|
+
|
|
223
|
+
Scenario: Viewing resources with scopes when scoping to user
|
|
224
|
+
Given 2 posts written by "Daft Punk" exist
|
|
225
|
+
And a post with the title "Monkey Wrench" written by "Foo Fighters" exists
|
|
226
|
+
And a post with the title "Everlong" written by "Foo Fighters" exists
|
|
227
|
+
And an index configuration of:
|
|
228
|
+
"""
|
|
229
|
+
ActiveAdmin.register Post do
|
|
230
|
+
scope_to :current_user
|
|
231
|
+
scope :all, default: true
|
|
232
|
+
|
|
233
|
+
filter :title
|
|
234
|
+
|
|
235
|
+
controller do
|
|
236
|
+
def current_user
|
|
237
|
+
User.find_by_username('foo_fighters')
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
"""
|
|
242
|
+
Then I should see the scope "All" selected
|
|
243
|
+
And I should see the scope "All" with the count 2
|
|
244
|
+
When I fill in "Title" with "Monkey"
|
|
245
|
+
And I press "Filter"
|
|
246
|
+
Then I should see the scope "All" selected
|
|
247
|
+
And I should see the scope "All" with the count 1
|
|
248
|
+
|
|
249
|
+
Scenario: Viewing resources when scoping and filtering and group bys and stuff
|
|
250
|
+
Given 2 posts written by "Daft Punk" exist
|
|
251
|
+
And 1 published posts written by "Daft Punk" exist
|
|
252
|
+
|
|
253
|
+
And 1 posts written by "Alfred" exist
|
|
254
|
+
|
|
255
|
+
And an index configuration of:
|
|
256
|
+
"""
|
|
257
|
+
ActiveAdmin.register Post do
|
|
258
|
+
scope :all, default: true
|
|
259
|
+
scope :published do |posts|
|
|
260
|
+
posts.where("published_date IS NOT NULL")
|
|
261
|
+
end
|
|
262
|
+
scope :single do |posts|
|
|
263
|
+
posts.page(1).per(1)
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
index do
|
|
267
|
+
column :author_id
|
|
268
|
+
column :count
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
config.sort_order = "author_id_asc"
|
|
272
|
+
|
|
273
|
+
controller do
|
|
274
|
+
def scoped_collection
|
|
275
|
+
Post.select("author_id, count(*) as count").group("author_id")
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
"""
|
|
280
|
+
Then I should see the scope "All" with the count 2
|
|
281
|
+
And I should see the scope "Published" with the count 1
|
|
282
|
+
And I should see the scope "Single" with the count 1
|
|
283
|
+
And I should see 2 posts in the table
|
|
284
|
+
|
|
285
|
+
When I follow "Single"
|
|
286
|
+
Then I should see 1 posts in the table
|
|
287
|
+
|
|
288
|
+
When I follow "Published"
|
|
289
|
+
Then I should see the scope "Published" selected
|
|
290
|
+
And I should see the scope "All" with the count 2
|
|
291
|
+
And I should see the scope "Published" with the count 1
|
|
292
|
+
And I should see 1 posts in the table
|
|
293
|
+
|
|
294
|
+
When I select "Daft Punk" from "Author"
|
|
295
|
+
And I press "Filter"
|
|
296
|
+
|
|
297
|
+
Then I should see the scope "Published" selected
|
|
298
|
+
And I should see the scope "All" with the count 1
|
|
299
|
+
And I should see the scope "Published" with the count 1
|
|
300
|
+
And I should see 1 posts in the table
|
|
301
|
+
And I should see the current scope with label "Published"
|
|
302
|
+
|
|
303
|
+
Scenario: Viewing resources with grouped scopes
|
|
304
|
+
Given 3 posts exist
|
|
305
|
+
And an index configuration of:
|
|
306
|
+
"""
|
|
307
|
+
ActiveAdmin.register Post do
|
|
308
|
+
scope :all
|
|
309
|
+
scope "Published", group: :status do |posts|
|
|
310
|
+
posts.where("published_date IS NOT NULL")
|
|
311
|
+
end
|
|
312
|
+
scope "Unpublished", group: :status do |posts|
|
|
313
|
+
posts.where("published_date IS NULL")
|
|
314
|
+
end
|
|
315
|
+
scope "Today", group: :date do |posts|
|
|
316
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day, ::Time.zone.now.end_of_day])
|
|
317
|
+
end
|
|
318
|
+
scope "Tomorrow", group: :date do |posts|
|
|
319
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day + 1.day, ::Time.zone.now.end_of_day + 1.day])
|
|
320
|
+
end
|
|
321
|
+
end
|
|
322
|
+
"""
|
|
323
|
+
Then I should see an empty group with the scope "All"
|
|
324
|
+
And I should see a group "status" with the scopes "Published" and "Unpublished"
|
|
325
|
+
And I should see a group "date" with the scopes "Today" and "Tomorrow"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Feature: Index - Page Title
|
|
2
|
+
|
|
3
|
+
Modifying the page title on the index screen
|
|
4
|
+
|
|
5
|
+
Scenario: Set a string as the title
|
|
6
|
+
Given an index configuration of:
|
|
7
|
+
"""
|
|
8
|
+
ActiveAdmin.register Post do
|
|
9
|
+
index title: "Awesome Title"
|
|
10
|
+
end
|
|
11
|
+
"""
|
|
12
|
+
Then I should see the page title "Awesome Title"
|
|
13
|
+
|
|
14
|
+
Scenario: Set the title using a proc
|
|
15
|
+
Given an index configuration of:
|
|
16
|
+
"""
|
|
17
|
+
ActiveAdmin.register Post do
|
|
18
|
+
index title: proc{ 'Custom title from proc' }
|
|
19
|
+
end
|
|
20
|
+
"""
|
|
21
|
+
Then I should see the page title "Custom title from proc"
|
|
22
|
+
|
|
23
|
+
Scenario: Set the title using a proc that uses the available resource class
|
|
24
|
+
Given an index configuration of:
|
|
25
|
+
"""
|
|
26
|
+
ActiveAdmin.register Post do
|
|
27
|
+
index title: proc{ "List of #{resource_class.model_name.plural}" }
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
Then I should see the page title "List of posts"
|
|
31
|
+
|
|
32
|
+
Scenario: Set the title in controller
|
|
33
|
+
Given an index configuration of:
|
|
34
|
+
"""
|
|
35
|
+
ActiveAdmin.register Post do
|
|
36
|
+
controller do
|
|
37
|
+
before_action { @page_title = "List of #{resource_class.model_name.plural}" }
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
"""
|
|
41
|
+
Then I should see the page title "List of posts"
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Feature: Index Pagination
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Scenario: Viewing index when one page of resources exist
|
|
5
|
+
Given an index configuration of:
|
|
6
|
+
"""
|
|
7
|
+
ActiveAdmin.register Post
|
|
8
|
+
"""
|
|
9
|
+
And 20 posts exist
|
|
10
|
+
When I am on the index page for posts
|
|
11
|
+
Then I should see "Displaying all 20 Posts"
|
|
12
|
+
And I should not see pagination
|
|
13
|
+
|
|
14
|
+
Scenario: Viewing index when multiple pages of resources exist
|
|
15
|
+
Given an index configuration of:
|
|
16
|
+
"""
|
|
17
|
+
ActiveAdmin.register Post
|
|
18
|
+
"""
|
|
19
|
+
And 31 posts exist
|
|
20
|
+
When I am on the index page for posts
|
|
21
|
+
Then I should see pagination with 2 pages
|
|
22
|
+
|
|
23
|
+
Scenario: Viewing index with a custom per page set
|
|
24
|
+
Given an index configuration of:
|
|
25
|
+
"""
|
|
26
|
+
ActiveAdmin.register Post do
|
|
27
|
+
config.per_page = 2
|
|
28
|
+
end
|
|
29
|
+
"""
|
|
30
|
+
And 3 posts exist
|
|
31
|
+
When I am on the index page for posts
|
|
32
|
+
Then I should see pagination with 2 pages
|
|
33
|
+
And I should see "Displaying Posts 1 - 2 of 3 in total"
|
|
34
|
+
|
|
35
|
+
Scenario: Viewing index with pagination disabled
|
|
36
|
+
Given an index configuration of:
|
|
37
|
+
"""
|
|
38
|
+
ActiveAdmin.register Post do
|
|
39
|
+
config.paginate = false
|
|
40
|
+
end
|
|
41
|
+
"""
|
|
42
|
+
And 31 posts exist
|
|
43
|
+
When I am on the index page for posts
|
|
44
|
+
Then I should not see pagination
|
|
45
|
+
|
|
46
|
+
Scenario: Viewing index with pagination_total set to false
|
|
47
|
+
Given an index configuration of:
|
|
48
|
+
"""
|
|
49
|
+
ActiveAdmin.register Post do
|
|
50
|
+
config.per_page = 10
|
|
51
|
+
index pagination_total: false do
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
"""
|
|
55
|
+
And 11 posts exist
|
|
56
|
+
When I am on the index page for posts
|
|
57
|
+
Then I should see "Displaying Posts 1 - 10"
|
|
58
|
+
And I should not see "11 in total"
|
|
59
|
+
And I should see the pagination "Next" link
|
|
60
|
+
|
|
61
|
+
When I follow "Next"
|
|
62
|
+
Then I should see "Displaying Posts 11 - 11"
|
|
63
|
+
And I should not see the pagination "Next" link
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Feature: Switch Index View
|
|
2
|
+
|
|
3
|
+
In order to switch index views
|
|
4
|
+
As a user
|
|
5
|
+
I want to view links to views
|
|
6
|
+
|
|
7
|
+
Scenario: Show default Page Presenter
|
|
8
|
+
Given a post with the title "Hello World from Table" exists
|
|
9
|
+
And an index configuration of:
|
|
10
|
+
"""
|
|
11
|
+
ActiveAdmin.register Post do
|
|
12
|
+
index as: :table do
|
|
13
|
+
column :title
|
|
14
|
+
end
|
|
15
|
+
index as: :block do |post|
|
|
16
|
+
span(link_to(post.title, admin_post_path(post)))
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
"""
|
|
20
|
+
Then I should see "Hello World from Table" within ".index_as_table"
|
|
21
|
+
|
|
22
|
+
Scenario: Show default Page Presenter when default is specified
|
|
23
|
+
Given a post with the title "Hello World from Table" exists
|
|
24
|
+
And an index configuration of:
|
|
25
|
+
"""
|
|
26
|
+
ActiveAdmin.register Post do
|
|
27
|
+
index as: :block do |post|
|
|
28
|
+
span(link_to(post.title, admin_post_path(post)))
|
|
29
|
+
end
|
|
30
|
+
index as: :table, default: true do
|
|
31
|
+
column :title
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
"""
|
|
35
|
+
Then I should see "Hello World from Table" within ".index_as_table"
|
|
36
|
+
|
|
37
|
+
Scenario: Show links to different page views
|
|
38
|
+
Given a post with the title "Hello World from Table" exists
|
|
39
|
+
And an index configuration of:
|
|
40
|
+
"""
|
|
41
|
+
ActiveAdmin.register Post do
|
|
42
|
+
index as: :block do |post|
|
|
43
|
+
span(link_to(post.title, admin_post_path(post)))
|
|
44
|
+
end
|
|
45
|
+
index as: :table, default: true do
|
|
46
|
+
column :title
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
"""
|
|
50
|
+
Then I should see "Hello World from Table" within ".index_as_table"
|
|
51
|
+
And I should see a link to "Table"
|
|
52
|
+
And I should see a link to "List"
|
|
53
|
+
|
|
54
|
+
Scenario: Show change between page views
|
|
55
|
+
Given a post with the title "Hey from Table" and body "My body is awesome" exists
|
|
56
|
+
And an index configuration of:
|
|
57
|
+
"""
|
|
58
|
+
ActiveAdmin.register Post do
|
|
59
|
+
index as: :block do |post|
|
|
60
|
+
span(link_to(post.title, admin_post_path(post)))
|
|
61
|
+
end
|
|
62
|
+
index as: :table, default: true do
|
|
63
|
+
column :title
|
|
64
|
+
column :body
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
"""
|
|
68
|
+
Then I should see "My body is awesome" within ".index_as_table"
|
|
69
|
+
When I click "List"
|
|
70
|
+
Then I should not see "My body is awesome" within ".index_as_block"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Feature: Menu
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am logged in
|
|
5
|
+
|
|
6
|
+
Scenario: Hide the menu item
|
|
7
|
+
Given a configuration of:
|
|
8
|
+
"""
|
|
9
|
+
ActiveAdmin.register Post do
|
|
10
|
+
menu false
|
|
11
|
+
end
|
|
12
|
+
"""
|
|
13
|
+
When I am on the dashboard
|
|
14
|
+
Then I should not see a menu item for "Posts"
|
|
15
|
+
|
|
16
|
+
Scenario: Set the menu item label
|
|
17
|
+
Given a configuration of:
|
|
18
|
+
"""
|
|
19
|
+
ActiveAdmin.register Post do
|
|
20
|
+
menu label: "Articles"
|
|
21
|
+
end
|
|
22
|
+
"""
|
|
23
|
+
When I am on the dashboard
|
|
24
|
+
Then I should see a menu item for "Articles"
|
|
25
|
+
And I should not see a menu item for "Posts"
|
|
26
|
+
|
|
27
|
+
Scenario: Add a non-resource menu item
|
|
28
|
+
Given a configuration of:
|
|
29
|
+
"""
|
|
30
|
+
ActiveAdmin.application.namespace :admin do |admin|
|
|
31
|
+
admin.build_menu do |menu|
|
|
32
|
+
menu.add label: "Custom Menu", url: :admin_dashboard_path
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
"""
|
|
36
|
+
When I am on the dashboard
|
|
37
|
+
Then I should see a menu item for "Custom Menu"
|
|
38
|
+
When I follow "Custom Menu"
|
|
39
|
+
Then I should be on the admin dashboard page
|
|
40
|
+
|
|
41
|
+
Scenario: Add a non-resource menu item with method delete
|
|
42
|
+
Given a configuration of:
|
|
43
|
+
"""
|
|
44
|
+
ActiveAdmin.application.namespace :admin do |admin|
|
|
45
|
+
admin.build_menu do |menu|
|
|
46
|
+
menu.add label: "Delete Menu", url: :admin_dashboard_path, html_options: { method: :delete }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
"""
|
|
50
|
+
When I am on the dashboard
|
|
51
|
+
Then I should see a menu item for "Delete Menu"
|
|
52
|
+
And I should see the element "a[data-method='delete']:contains('Delete Menu')"
|
|
53
|
+
|
|
54
|
+
Scenario: Adding a resource as a sub menu item
|
|
55
|
+
Given a configuration of:
|
|
56
|
+
"""
|
|
57
|
+
ActiveAdmin.register User
|
|
58
|
+
ActiveAdmin.register Post do
|
|
59
|
+
menu parent: 'Users'
|
|
60
|
+
end
|
|
61
|
+
"""
|
|
62
|
+
When I am on the dashboard
|
|
63
|
+
Then I should see a menu item for "Users"
|
|
64
|
+
And I should not see a menu item for "Posts"
|
|
65
|
+
When I follow "Users"
|
|
66
|
+
Then the "Users" tab should be selected
|
|
67
|
+
And I should see a nested menu item for "Posts"
|
|
68
|
+
|
|
69
|
+
Scenario: Adding a resources as a sub menu items
|
|
70
|
+
Given a configuration of:
|
|
71
|
+
"""
|
|
72
|
+
ActiveAdmin.register Category do
|
|
73
|
+
menu parent: 'Anything'
|
|
74
|
+
end
|
|
75
|
+
ActiveAdmin.register Post do
|
|
76
|
+
menu parent: 'Anything'
|
|
77
|
+
end
|
|
78
|
+
"""
|
|
79
|
+
When I am on the dashboard
|
|
80
|
+
Then I should see a menu item for "Anything"
|
|
81
|
+
And I should not see a menu item for "Categories"
|
|
82
|
+
And I should not see a menu item for "Posts"
|
|
83
|
+
And I should see a nested menu item for "Categories"
|
|
84
|
+
And I should see a nested menu item for "Posts"
|
|
85
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Feature: Meta Tag
|
|
2
|
+
|
|
3
|
+
Add custom meta tags to head of pages.
|
|
4
|
+
|
|
5
|
+
Background:
|
|
6
|
+
Given a configuration of:
|
|
7
|
+
"""
|
|
8
|
+
ActiveAdmin.register Post
|
|
9
|
+
ActiveAdmin.application.meta_tags = { author: 'My Company' }
|
|
10
|
+
ActiveAdmin.application.meta_tags_for_logged_out_pages = { robots: 'noindex' }
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
Scenario: Logged out views include custom meta tags
|
|
14
|
+
Given I am logged out
|
|
15
|
+
When I am on the login page
|
|
16
|
+
Then the site should contain a meta tag with name "robots" and content "noindex"
|
|
17
|
+
|
|
18
|
+
Scenario: Logged in views include custom meta tags
|
|
19
|
+
Given I am logged in
|
|
20
|
+
When I am on the dashboard
|
|
21
|
+
Then the site should contain a meta tag with name "author" and content "My Company"
|