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,62 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::MenuCollection do
|
|
4
|
+
|
|
5
|
+
let(:menus) { ActiveAdmin::MenuCollection.new }
|
|
6
|
+
|
|
7
|
+
describe "#add" do
|
|
8
|
+
|
|
9
|
+
it "should initialize a new menu when first item" do
|
|
10
|
+
menus.add :default, :label => "Hello World"
|
|
11
|
+
|
|
12
|
+
menus.fetch(:default).items.size.should == 1
|
|
13
|
+
menus.fetch(:default)["Hello World"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should add items to an existing menu" do
|
|
17
|
+
menus.add :default, :label => "Hello World"
|
|
18
|
+
menus.add :default, :label => "Hello World Again"
|
|
19
|
+
|
|
20
|
+
menus.fetch(:default).items.size.should == 2
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "#clear!" do
|
|
26
|
+
|
|
27
|
+
it "should remove all menus" do
|
|
28
|
+
menus.add :default, :label => "Hello World"
|
|
29
|
+
|
|
30
|
+
menus.clear!
|
|
31
|
+
|
|
32
|
+
expect {
|
|
33
|
+
menus.fetch(:non_default_menu)
|
|
34
|
+
}.to raise_error(ActiveAdmin::MenuCollection::NoMenuError)
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "#on_build" do
|
|
41
|
+
|
|
42
|
+
it "runs a callback when fetching a menu" do
|
|
43
|
+
menus.on_build do |m|
|
|
44
|
+
m.add :default, :label => "Hello World"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
menus.fetch(:default)["Hello World"].should_not be_nil
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "re-runs the callbacks when the menu is cleared" do
|
|
51
|
+
menus.on_build do |m|
|
|
52
|
+
m.add :default, :label => "Hello World"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
menus.fetch(:default)["Hello World"].should_not be_nil
|
|
56
|
+
menus.clear!
|
|
57
|
+
menus.fetch(:default)["Hello World"].should_not be_nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
require 'spec_helper_without_rails'
|
|
2
|
+
require 'active_admin/menu'
|
|
3
|
+
require 'active_admin/menu_item'
|
|
4
|
+
|
|
5
|
+
module ActiveAdmin
|
|
6
|
+
describe MenuItem do
|
|
7
|
+
|
|
8
|
+
it "should have a label" do
|
|
9
|
+
item = MenuItem.new(:label => "Dashboard")
|
|
10
|
+
item.label.should == "Dashboard"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should have a url" do
|
|
14
|
+
item = MenuItem.new(:url => "/admin")
|
|
15
|
+
item.url.should == "/admin"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should have a priority of 10 by default" do
|
|
19
|
+
item = MenuItem.new
|
|
20
|
+
item.priority.should == 10
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "conditional display" do
|
|
24
|
+
it "should store a Proc internally and evaluate it when requested" do
|
|
25
|
+
item = MenuItem.new
|
|
26
|
+
item.instance_variable_get(:@should_display).should be_a Proc
|
|
27
|
+
item.display?.should_not be_a Proc
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should show the item by default" do
|
|
31
|
+
MenuItem.new.display?.should == true
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should hide the item" do
|
|
35
|
+
MenuItem.new(:if => proc{false}).display?.should == false
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should default to an empty hash for html_options" do
|
|
40
|
+
item = MenuItem.new
|
|
41
|
+
item.html_options.should be_empty
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should accept an options hash for link_to" do
|
|
45
|
+
item = MenuItem.new :html_options => { :target => :blank }
|
|
46
|
+
item.html_options.should include(:target => :blank)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context "with no items" do
|
|
50
|
+
it "should be empty" do
|
|
51
|
+
item = MenuItem.new
|
|
52
|
+
item.items.should be_empty
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should accept new children" do
|
|
56
|
+
item = MenuItem.new :label => "Dashboard"
|
|
57
|
+
item.add :label => "My Child Dashboard"
|
|
58
|
+
item.items.first.should be_a MenuItem
|
|
59
|
+
item.items.first.label.should == "My Child Dashboard"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "with many children" do
|
|
64
|
+
let(:item) do
|
|
65
|
+
i = MenuItem.new(:label => "Dashboard")
|
|
66
|
+
i.add :label => "Blog"
|
|
67
|
+
i.add :label => "Cars"
|
|
68
|
+
i.add :label => "Users", :priority => 1
|
|
69
|
+
i.add :label => "Settings", :priority => 2
|
|
70
|
+
i.add :label => "Analytics", :priority => 44
|
|
71
|
+
i
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should contain 5 submenu items" do
|
|
75
|
+
item.items.count.should == 5
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should give access to the menu item as an array" do
|
|
79
|
+
item['Blog'].label.should == 'Blog'
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should sort items based on priority and name" do
|
|
83
|
+
item.items[0].label.should == 'Users'
|
|
84
|
+
item.items[1].label.should == 'Settings'
|
|
85
|
+
item.items[2].label.should == 'Blog'
|
|
86
|
+
item.items[3].label.should == 'Cars'
|
|
87
|
+
item.items[4].label.should == 'Analytics'
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "children should hold a reference to their parent" do
|
|
91
|
+
item["Blog"].parent.should == item
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe "accessing ancestory" do
|
|
96
|
+
let(:item){ MenuItem.new :label => "Blog" }
|
|
97
|
+
|
|
98
|
+
context "with no parent" do
|
|
99
|
+
it "should return an empty array" do
|
|
100
|
+
item.ancestors.should == []
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "with one parent" do
|
|
105
|
+
let(:sub_item) do
|
|
106
|
+
item.add :label => "Create New"
|
|
107
|
+
item["Create New"]
|
|
108
|
+
end
|
|
109
|
+
it "should return an array with the parent" do
|
|
110
|
+
sub_item.ancestors.should == [item]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
context "with many parents" do
|
|
115
|
+
before(:each) do
|
|
116
|
+
c1 = {:label => "C1"}
|
|
117
|
+
c2 = {:label => "C2"}
|
|
118
|
+
c3 = {:label => "C3"}
|
|
119
|
+
|
|
120
|
+
item.add(c1).add(c2).add(c3)
|
|
121
|
+
|
|
122
|
+
item
|
|
123
|
+
end
|
|
124
|
+
let(:sub_item){ item["C1"]["C2"]["C3"] }
|
|
125
|
+
it "should return an array with the parents in reverse order" do
|
|
126
|
+
sub_item.ancestors.should == [item["C1"]["C2"], item["C1"], item]
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end # accessing ancestory
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
describe "#id" do
|
|
133
|
+
it "should be normalized" do
|
|
134
|
+
MenuItem.new(:id => "Foo Bar").id.should == "foo_bar"
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "should not accept Procs" do
|
|
138
|
+
expect{ MenuItem.new(:id => proc{"Dynamic"}).id }.to raise_error TypeError
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'active_admin/menu'
|
|
3
|
+
require 'active_admin/menu_item'
|
|
4
|
+
|
|
5
|
+
include ActiveAdmin
|
|
6
|
+
|
|
7
|
+
describe ActiveAdmin::Menu do
|
|
8
|
+
|
|
9
|
+
context "with no items" do
|
|
10
|
+
it "should have an empty item collection" do
|
|
11
|
+
menu = Menu.new
|
|
12
|
+
menu.items.should be_empty
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should accept new items" do
|
|
16
|
+
menu = Menu.new
|
|
17
|
+
menu.add :label => "Dashboard"
|
|
18
|
+
menu.items.first.label.should == "Dashboard"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "with many items" do
|
|
23
|
+
let(:menu) do
|
|
24
|
+
Menu.new do |m|
|
|
25
|
+
m.add :label => "Dashboard"
|
|
26
|
+
m.add :label => "Blog"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should give access to the menu item as an array" do
|
|
31
|
+
menu['Dashboard'].label.should == 'Dashboard'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "adding items with children" do
|
|
36
|
+
it "should add an empty item if the parent does not exist" do
|
|
37
|
+
menu = Menu.new
|
|
38
|
+
menu.add :parent => "Admin", :label => "Users"
|
|
39
|
+
|
|
40
|
+
menu["Admin"]["Users"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should add a child to a parent if it exists" do
|
|
44
|
+
menu = Menu.new
|
|
45
|
+
menu.add :parent => "Admin", :label => "Users"
|
|
46
|
+
menu.add :parent => "Admin", :label => "Projects"
|
|
47
|
+
|
|
48
|
+
menu["Admin"]["Projects"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should assign children regardless of resource file load order" do
|
|
52
|
+
menu = Menu.new
|
|
53
|
+
menu.add :parent => "Users", :label => "Posts"
|
|
54
|
+
menu.add :label => "Users", :url => "/some/url"
|
|
55
|
+
|
|
56
|
+
menu["Users"].url.should == "/some/url"
|
|
57
|
+
menu["Users"]["Posts"].should be_a ActiveAdmin::MenuItem
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "sorting items" do
|
|
62
|
+
it "should sort children by the result of their label proc" do
|
|
63
|
+
menu = Menu.new
|
|
64
|
+
menu.add :label => proc{ "G" }, :id => "not related 1"
|
|
65
|
+
menu.add :label => proc{ "B" }, :id => "not related 2"
|
|
66
|
+
menu.add :label => proc{ "A" }, :id => "not related 3"
|
|
67
|
+
|
|
68
|
+
menu.items.map(&:label).should == %w[A B G]
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Resource, "authorization" do
|
|
4
|
+
|
|
5
|
+
let(:app){ ActiveAdmin::Application.new }
|
|
6
|
+
let(:namespace){ ActiveAdmin::Namespace.new(app, :admin) }
|
|
7
|
+
let(:auth){ double }
|
|
8
|
+
|
|
9
|
+
describe "authorization_adapter" do
|
|
10
|
+
|
|
11
|
+
it "should return AuthorizationAdapter by default" do
|
|
12
|
+
app.authorization_adapter.should eq ActiveAdmin::AuthorizationAdapter
|
|
13
|
+
namespace.authorization_adapter.should eq ActiveAdmin::AuthorizationAdapter
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should be settable on the namespace" do
|
|
17
|
+
namespace.authorization_adapter = auth
|
|
18
|
+
namespace.authorization_adapter.should eq auth
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should be settable on the application" do
|
|
22
|
+
app.authorization_adapter = auth
|
|
23
|
+
app.authorization_adapter.should eq auth
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Namespace, "registering a page" do
|
|
4
|
+
|
|
5
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
6
|
+
|
|
7
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
8
|
+
let(:menu){ namespace.fetch_menu(:default) }
|
|
9
|
+
|
|
10
|
+
context "with no configuration" do
|
|
11
|
+
before do
|
|
12
|
+
namespace.register_page "Status"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should store the namespaced registered configuration" do
|
|
16
|
+
namespace.resources.keys.should include('Status')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should create a new controller in the default namespace" do
|
|
20
|
+
defined?(Admin::StatusController).should be_true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should create a menu item" do
|
|
24
|
+
menu["Status"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
|
25
|
+
end
|
|
26
|
+
end # context "with no configuration"
|
|
27
|
+
|
|
28
|
+
context "with a block configuration" do
|
|
29
|
+
it "should be evaluated in the dsl" do
|
|
30
|
+
expect {
|
|
31
|
+
namespace.register_page "Status" do
|
|
32
|
+
raise "Hello World"
|
|
33
|
+
end
|
|
34
|
+
}.to raise_error
|
|
35
|
+
end
|
|
36
|
+
end # context "with a block configuration"
|
|
37
|
+
|
|
38
|
+
describe "adding to the menu" do
|
|
39
|
+
describe "adding as a top level item" do
|
|
40
|
+
before do
|
|
41
|
+
namespace.register_page "Status"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should add a new menu item" do
|
|
45
|
+
menu['Status'].should_not be_nil
|
|
46
|
+
end
|
|
47
|
+
end # describe "adding as a top level item"
|
|
48
|
+
|
|
49
|
+
describe "adding as a child" do
|
|
50
|
+
before do
|
|
51
|
+
namespace.register_page "Status" do
|
|
52
|
+
menu :parent => 'Extra'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
it "should generate the parent menu item" do
|
|
56
|
+
menu['Extra'].should_not be_nil
|
|
57
|
+
end
|
|
58
|
+
it "should generate its own child item" do
|
|
59
|
+
menu['Extra']['Status'].should_not be_nil
|
|
60
|
+
end
|
|
61
|
+
end # describe "adding as a child"
|
|
62
|
+
|
|
63
|
+
describe "disabling the menu" do
|
|
64
|
+
before do
|
|
65
|
+
namespace.register_page "Status" do
|
|
66
|
+
menu false
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
it "should not create a menu item" do
|
|
70
|
+
menu["Status"].should be_nil
|
|
71
|
+
end
|
|
72
|
+
end # describe "disabling the menu"
|
|
73
|
+
end # describe "adding to the menu"
|
|
74
|
+
end
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
# TODO: refactor this file so it doesn't depend on the Admin namespace in such a broken way.
|
|
4
|
+
# Specifically, the dashboard is already defined and we do let(:namespace) multiple times.
|
|
5
|
+
|
|
6
|
+
describe ActiveAdmin::Namespace, "registering a resource" do
|
|
7
|
+
|
|
8
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
9
|
+
|
|
10
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
11
|
+
|
|
12
|
+
let(:menu){ namespace.fetch_menu(:default) }
|
|
13
|
+
|
|
14
|
+
context "with no configuration" do
|
|
15
|
+
before do
|
|
16
|
+
namespace.register Category
|
|
17
|
+
end
|
|
18
|
+
it "should store the namespaced registered configuration" do
|
|
19
|
+
namespace.resources.keys.should include('Category')
|
|
20
|
+
end
|
|
21
|
+
it "should create a new controller in the default namespace" do
|
|
22
|
+
defined?(Admin::CategoriesController).should be_true
|
|
23
|
+
end
|
|
24
|
+
pending "should not create the dashboard controller" do
|
|
25
|
+
defined?(Admin::DashboardController).should_not be_true
|
|
26
|
+
end
|
|
27
|
+
it "should create a menu item" do
|
|
28
|
+
menu["Categories"].should be_a ActiveAdmin::MenuItem
|
|
29
|
+
menu["Categories"].instance_variable_get(:@url).should be_a Proc
|
|
30
|
+
end
|
|
31
|
+
end # context "with no configuration"
|
|
32
|
+
|
|
33
|
+
context "with a block configuration" do
|
|
34
|
+
it "should be evaluated in the dsl" do
|
|
35
|
+
expect {
|
|
36
|
+
namespace.register Category do
|
|
37
|
+
raise "Hello World"
|
|
38
|
+
end
|
|
39
|
+
}.to raise_error
|
|
40
|
+
end
|
|
41
|
+
end # context "with a block configuration"
|
|
42
|
+
|
|
43
|
+
context "with a resource that's namespaced" do
|
|
44
|
+
before do
|
|
45
|
+
module ::Mock; class Resource; def self.has_many(arg1, arg2); end; end; end
|
|
46
|
+
namespace.register Mock::Resource
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should store the namespaced registered configuration" do
|
|
50
|
+
namespace.resources.keys.should include('Mock::Resource')
|
|
51
|
+
end
|
|
52
|
+
it "should create a new controller in the default namespace" do
|
|
53
|
+
defined?(Admin::MockResourcesController).should be_true
|
|
54
|
+
end
|
|
55
|
+
it "should create a menu item" do
|
|
56
|
+
menu["Mock Resources"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should use the resource as the model in the controller" do
|
|
60
|
+
Admin::MockResourcesController.resource_class.should == Mock::Resource
|
|
61
|
+
end
|
|
62
|
+
end # context "with a resource that's namespaced"
|
|
63
|
+
|
|
64
|
+
describe "finding resource instances" do
|
|
65
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
66
|
+
|
|
67
|
+
it "should return the resource when its been registered" do
|
|
68
|
+
post = namespace.register Post
|
|
69
|
+
namespace.resource_for(Post).should == post
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'should return nil when the resource has not been registered' do
|
|
73
|
+
namespace.resource_for(Post).should == nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should return the parent when the parent class has been registered and the child has not" do
|
|
77
|
+
user = namespace.register User
|
|
78
|
+
namespace.resource_for(Publisher).should == user
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should return the resource if it and it's parent were registered" do
|
|
82
|
+
user = namespace.register User
|
|
83
|
+
publisher = namespace.register Publisher
|
|
84
|
+
namespace.resource_for(Publisher).should == publisher
|
|
85
|
+
end
|
|
86
|
+
end # describe "finding resource instances"
|
|
87
|
+
|
|
88
|
+
describe "adding to the menu" do
|
|
89
|
+
describe "adding as a top level item" do
|
|
90
|
+
before do
|
|
91
|
+
namespace.register Category
|
|
92
|
+
end
|
|
93
|
+
it "should add a new menu item" do
|
|
94
|
+
menu['Categories'].should_not be_nil
|
|
95
|
+
end
|
|
96
|
+
end # describe "adding as a top level item"
|
|
97
|
+
|
|
98
|
+
describe "adding as a child" do
|
|
99
|
+
before do
|
|
100
|
+
namespace.register Category do
|
|
101
|
+
menu :parent => 'Blog'
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
it "should generate the parent menu item" do
|
|
105
|
+
menu['Blog'].should_not be_nil
|
|
106
|
+
end
|
|
107
|
+
it "should generate its own child item" do
|
|
108
|
+
menu['Blog']['Categories'].should_not be_nil
|
|
109
|
+
end
|
|
110
|
+
end # describe "adding as a child"
|
|
111
|
+
|
|
112
|
+
describe "disabling the menu" do
|
|
113
|
+
before do
|
|
114
|
+
namespace.register Category do
|
|
115
|
+
menu false
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
it "should not create a menu item" do
|
|
119
|
+
menu["Categories"].should be_nil
|
|
120
|
+
end
|
|
121
|
+
end # describe "disabling the menu"
|
|
122
|
+
|
|
123
|
+
describe "adding as a belongs to" do
|
|
124
|
+
context "when not optional" do
|
|
125
|
+
before do
|
|
126
|
+
namespace.register Post do
|
|
127
|
+
belongs_to :author
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
it "should not show up in the menu" do
|
|
131
|
+
menu["Posts"].should be_nil
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
context "when optional" do
|
|
135
|
+
before do
|
|
136
|
+
namespace.register Post do
|
|
137
|
+
belongs_to :author, :optional => true
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
it "should show up in the menu" do
|
|
141
|
+
menu["Posts"].should_not be_nil
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end # describe "adding to the menu"
|
|
146
|
+
|
|
147
|
+
describe "dashboard controller name" do
|
|
148
|
+
context "when namespaced" do
|
|
149
|
+
it "should be namespaced" do
|
|
150
|
+
namespace = ActiveAdmin::Namespace.new(application, :one)
|
|
151
|
+
namespace.register Category
|
|
152
|
+
defined?(One::CategoriesController).should be_true
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
context "when not namespaced" do
|
|
156
|
+
it "should not be namespaced" do
|
|
157
|
+
namespace = ActiveAdmin::Namespace.new(application, :two)
|
|
158
|
+
namespace.register Category
|
|
159
|
+
defined?(Two::CategoriesController).should be_true
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end # describe "dashboard controller name"
|
|
163
|
+
end # describe "registering a resource"
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Namespace do
|
|
4
|
+
|
|
5
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
6
|
+
|
|
7
|
+
context "when new" do
|
|
8
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
9
|
+
|
|
10
|
+
it "should have an application instance" do
|
|
11
|
+
namespace.application.should == application
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should have a name" do
|
|
15
|
+
namespace.name.should == :admin
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should have no resources" do
|
|
19
|
+
namespace.resources.should be_empty
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should not have any menu item" do
|
|
23
|
+
namespace.fetch_menu(:default).children.should be_empty
|
|
24
|
+
end
|
|
25
|
+
end # context "when new"
|
|
26
|
+
|
|
27
|
+
describe "settings" do
|
|
28
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
29
|
+
|
|
30
|
+
it "should inherit the site title from the application" do
|
|
31
|
+
ActiveAdmin::Namespace.setting :site_title, "Not the Same"
|
|
32
|
+
namespace.site_title.should == application.site_title
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should be able to override the site title" do
|
|
36
|
+
namespace.site_title.should == application.site_title
|
|
37
|
+
namespace.site_title = "My Site Title"
|
|
38
|
+
namespace.site_title.should_not == application.site_title
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
describe "#fetch_menu" do
|
|
44
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
45
|
+
|
|
46
|
+
it "returns the menu" do
|
|
47
|
+
namespace.fetch_menu(:default).should be_an_instance_of(ActiveAdmin::Menu)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should have utility nav menu" do
|
|
51
|
+
namespace.fetch_menu(:utility_navigation).should be_an_instance_of(ActiveAdmin::Menu)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should raise an exception if the menu doesn't exist" do
|
|
55
|
+
expect {
|
|
56
|
+
namespace.fetch_menu(:not_a_menu_that_exists)
|
|
57
|
+
}.to raise_error(KeyError)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "#build_menu" do
|
|
62
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
63
|
+
|
|
64
|
+
it "should set the block as a menu build callback" do
|
|
65
|
+
namespace.build_menu do |menu|
|
|
66
|
+
menu.add :label => "menu item"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
namespace.fetch_menu(:default)["menu item"].should_not be_nil
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should set a block on a custom menu" do
|
|
73
|
+
namespace.build_menu :test do |menu|
|
|
74
|
+
menu.add :label => "menu item"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
namespace.fetch_menu(:test)["menu item"].should_not be_nil
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe "utility navigation" do
|
|
82
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
83
|
+
let(:menu) do
|
|
84
|
+
namespace.build_menu :utility_navigation do |menu|
|
|
85
|
+
menu.add :label => "ActiveAdmin.info", :url => "http://www.activeadmin.info", :html_options => { :target => :blank }
|
|
86
|
+
namespace.add_logout_button_to_menu menu, 1, :class => "matt"
|
|
87
|
+
end
|
|
88
|
+
namespace.fetch_menu(:utility_navigation)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "should have a logout button to the far left" do
|
|
92
|
+
menu["Logout"].should_not be_nil
|
|
93
|
+
menu["Logout"].priority.should == 1
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should have a static link with a target of :blank" do
|
|
97
|
+
menu["ActiveAdmin.info"].should_not be_nil
|
|
98
|
+
menu["ActiveAdmin.info"].html_options.should include(:target => :blank)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|