activeadmin 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.circleci/config.yml +467 -0
- data/.gitignore +2 -5
- data/.rspec +1 -0
- data/.rspec_parallel +2 -0
- data/.rubocop.yml +25 -7
- data/.simplecov +4 -6
- data/CHANGELOG.md +175 -83
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +77 -40
- data/Gemfile +7 -55
- data/Gemfile.common +53 -0
- data/Gemfile.lock +431 -0
- data/README.md +39 -18
- data/Rakefile +1 -32
- data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/bin/install_chromedriver.sh +17 -0
- data/config/locales/de.yml +10 -0
- data/config/locales/en.yml +19 -1
- data/config/locales/es.yml +20 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/it.yml +4 -0
- data/config/locales/nb.yml +15 -5
- data/config/locales/nl.yml +11 -0
- data/config/locales/pl.yml +71 -3
- data/config/locales/ru.yml +2 -0
- data/config/locales/tr.yml +9 -0
- data/config/locales/zh-CN.yml +33 -5
- data/config/mdl_style.rb +2 -0
- data/cucumber.yml +7 -3
- data/docs/.gitignore +1 -0
- data/docs/1-general-configuration.md +16 -1
- data/docs/10-custom-pages.md +14 -0
- data/docs/12-arbre-components.md +28 -1
- data/docs/13-authorization-adapter.md +36 -17
- data/docs/2-resource-customization.md +8 -3
- data/docs/3-index-pages.md +17 -0
- data/docs/3-index-pages/custom-index.md +1 -1
- data/docs/3-index-pages/index-as-blog.md +1 -1
- data/docs/3-index-pages/index-as-table.md +5 -5
- data/docs/5-forms.md +16 -2
- data/docs/8-custom-actions.md +11 -0
- data/docs/Gemfile +2 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/_config.yml +1 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +1 -1
- data/docs/images/tidelift.svg +14 -0
- data/docs/stylesheets/main.css +26 -2
- data/gemfiles/rails_42.gemfile +2 -2
- data/gemfiles/rails_42.gemfile.lock +410 -0
- data/gemfiles/rails_50.gemfile +2 -2
- data/gemfiles/rails_50.gemfile.lock +424 -0
- data/gemfiles/rails_51.gemfile +2 -2
- data/gemfiles/rails_51.gemfile.lock +423 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +42 -142
- data/lib/active_admin/application_settings.rb +39 -0
- data/lib/active_admin/base_controller/authorization.rb +1 -2
- data/lib/active_admin/batch_actions/controller.rb +1 -1
- data/lib/active_admin/dependency.rb +8 -0
- data/lib/active_admin/deprecation.rb +0 -25
- 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 +5 -0
- data/lib/active_admin/filters/active_filter.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +1 -1
- data/lib/active_admin/form_builder.rb +95 -60
- data/lib/active_admin/inputs/datepicker_input.rb +7 -0
- data/lib/active_admin/menu.rb +2 -8
- data/lib/active_admin/menu_item.rb +3 -31
- data/lib/active_admin/namespace.rb +18 -6
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/orm/active_record/comments.rb +11 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
- data/lib/active_admin/resource/action_items.rb +6 -1
- data/lib/active_admin/resource_controller/decorators.rb +3 -3
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/router.rb +89 -84
- data/lib/active_admin/scope.rb +5 -1
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +2 -3
- 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/scopes.rb +11 -4
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/table_for.rb +1 -10
- data/lib/active_admin/views/components/tabs.rb +4 -1
- data/lib/active_admin/views/footer.rb +2 -6
- data/lib/active_admin/views/header.rb +3 -15
- data/lib/active_admin/views/index_as_blog.rb +1 -1
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +6 -6
- data/lib/active_admin/views/pages/base.rb +27 -53
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/bug_report_templates/active_admin_master.rb +2 -3
- data/tasks/application_generator.rb +48 -0
- data/tasks/gemfiles.rake +8 -0
- data/tasks/lint.rake +96 -7
- data/tasks/local.rake +10 -8
- data/tasks/test.rake +30 -16
- metadata +26 -440
- data/.travis.yml +0 -51
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -178
- data/features/comments/viewing_index.feature +0 -19
- data/features/create_another.feature +0 -55
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -28
- data/features/edit_page.feature +0 -116
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/footer.feature +0 -28
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -55
- data/features/index/batch_actions.feature +0 -218
- data/features/index/filters.feature +0 -250
- data/features/index/format_as_csv.feature +0 -220
- data/features/index/formats.feature +0 -88
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -285
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -72
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -136
- data/features/registering_assets.feature +0 -38
- data/features/registering_pages.feature +0 -237
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -30
- data/features/root_to.feature +0 -17
- data/features/show/attributes_table_title.feature +0 -54
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -33
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -118
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -19
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/attributes_table_title_steps.rb +0 -11
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -32
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -47
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/footer_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -56
- data/features/step_definitions/i18n_steps.rb +0 -11
- data/features/step_definitions/index_scope_steps.rb +0 -29
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- data/features/step_definitions/sidebar_steps.rb +0 -11
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -116
- data/features/step_definitions/user_steps.rb +0 -52
- data/features/step_definitions/web_steps.rb +0 -86
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -69
- data/features/support/env.rb +0 -122
- data/features/support/paths.rb +0 -73
- data/features/support/regular_env.rb +0 -7
- data/features/support/reload_env.rb +0 -7
- data/features/support/selectors.rb +0 -45
- data/features/users/logging_in.feature +0 -36
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/gemfiles/rails_52.gemfile +0 -11
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/spec/bug_report_templates_spec.rb +0 -26
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_runner.rb +0 -19
- data/spec/rails_helper.rb +0 -59
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -1
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/rails_template.rb +0 -153
- data/spec/support/rails_template_with_data.rb +0 -327
- data/spec/support/templates/admin/stores.rb +0 -7
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/manifest.js +0 -3
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -44
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -24
- data/spec/unit/abstract_view_factory_spec.rb +0 -78
- data/spec/unit/action_builder_spec.rb +0 -158
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -184
- data/spec/unit/asset_registration_spec.rb +0 -81
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -93
- data/spec/unit/batch_actions/resource_spec.rb +0 -84
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -76
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -176
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -41
- data/spec/unit/csv_builder_spec.rb +0 -313
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -120
- data/spec/unit/filters/active_filter_spec.rb +0 -189
- data/spec/unit/filters/active_spec.rb +0 -24
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -990
- data/spec/unit/generators/install_spec.rb +0 -31
- data/spec/unit/helpers/collection_spec.rb +0 -68
- data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
- data/spec/unit/helpers/scope_chain_spec.rb +0 -35
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -29
- data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -141
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -124
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -128
- data/spec/unit/pretty_format_spec.rb +0 -82
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -69
- data/spec/unit/resource/attributes_spec.rb +0 -49
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/ordering_spec.rb +0 -35
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -125
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -234
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
- data/spec/unit/resource_controller_spec.rb +0 -273
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -320
- data/spec/unit/routing_spec.rb +0 -211
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -117
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
- data/spec/unit/views/components/attributes_table_spec.rb +0 -271
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -187
- data/spec/unit/views/components/index_list_spec.rb +0 -49
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -76
- data/spec/unit/views/components/status_tag_spec.rb +0 -265
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -67
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -54
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -32
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/parallel_tests.rake +0 -66
data/spec/unit/menu_spec.rb
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
require 'active_admin/menu'
|
3
|
-
require 'active_admin/menu_item'
|
4
|
-
|
5
|
-
include ActiveAdmin
|
6
|
-
|
7
|
-
RSpec.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
|
-
expect(menu.items).to be_empty
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should accept new items" do
|
16
|
-
menu = Menu.new
|
17
|
-
menu.add label: "Dashboard"
|
18
|
-
expect(menu.items.first.label).to eq "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
|
-
expect(menu['Dashboard'].label).to eq '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
|
-
expect(menu["Admin"]["Users"]).to 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
|
-
expect(menu["Admin"]["Projects"]).to 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
|
-
expect(menu["Users"].url).to eq "/some/url"
|
57
|
-
expect(menu["Users"]["Posts"]).to 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
|
-
expect(menu.items.map(&:label)).to eq %w[A B G]
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.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
|
-
expect(app.authorization_adapter).to eq ActiveAdmin::AuthorizationAdapter
|
13
|
-
expect(namespace.authorization_adapter).to eq ActiveAdmin::AuthorizationAdapter
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should be settable on the namespace" do
|
17
|
-
namespace.authorization_adapter = auth
|
18
|
-
expect(namespace.authorization_adapter).to eq auth
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should be settable on the application" do
|
22
|
-
app.authorization_adapter = auth
|
23
|
-
expect(app.authorization_adapter).to eq auth
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Namespace, "registering a page" do
|
4
|
-
let(:application){ ActiveAdmin::Application.new }
|
5
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
6
|
-
let(:menu){ namespace.fetch_menu(:default) }
|
7
|
-
|
8
|
-
context "with no configuration" do
|
9
|
-
before do
|
10
|
-
namespace.register_page "Status"
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should store the namespaced registered configuration" do
|
14
|
-
expect(namespace.resources.keys).to include('Status')
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should create a new controller in the default namespace" do
|
18
|
-
expect(defined?(Admin::StatusController)).to eq 'constant'
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should create a menu item" do
|
22
|
-
expect(menu["Status"]).to be_an_instance_of(ActiveAdmin::MenuItem)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "with a block configuration" do
|
27
|
-
it "should be evaluated in the dsl" do
|
28
|
-
expect{ |block|
|
29
|
-
namespace.register_page "Status", &block
|
30
|
-
}.to yield_control
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "adding to the menu" do
|
35
|
-
describe "adding as a top level item" do
|
36
|
-
before do
|
37
|
-
namespace.register_page "Status"
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should add a new menu item" do
|
41
|
-
expect(menu['Status']).to_not eq nil
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe "adding as a child" do
|
46
|
-
before do
|
47
|
-
namespace.register_page "Status" do
|
48
|
-
menu parent: 'Extra'
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should generate the parent menu item" do
|
53
|
-
expect(menu['Extra']).to_not eq nil
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should generate its own child item" do
|
57
|
-
expect(menu['Extra']['Status']).to_not eq nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe "disabling the menu" do
|
62
|
-
before do
|
63
|
-
namespace.register_page "Status" do
|
64
|
-
menu false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should not create a menu item" do
|
69
|
-
expect(menu["Status"]).to eq nil
|
70
|
-
end
|
71
|
-
end # describe "disabling the menu"
|
72
|
-
end # describe "adding to the menu"
|
73
|
-
|
74
|
-
describe "adding as a belongs to" do
|
75
|
-
context "when not optional" do
|
76
|
-
before do
|
77
|
-
namespace.register_page "Reports" do
|
78
|
-
belongs_to :author
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should be excluded from the menu" do
|
83
|
-
expect(menu["Reports"]).to be_nil
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
context "when optional" do
|
88
|
-
before do
|
89
|
-
namespace.register_page "Reports" do
|
90
|
-
belongs_to :author, optional: true
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should be in the menu" do
|
95
|
-
expect(menu["Reports"]).to_not be_nil
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end # describe "adding as a belongs to"
|
99
|
-
end
|
@@ -1,162 +0,0 @@
|
|
1
|
-
require 'rails_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.
|
5
|
-
|
6
|
-
RSpec.describe ActiveAdmin::Namespace, "registering a resource" do
|
7
|
-
let(:application){ ActiveAdmin::Application.new }
|
8
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
9
|
-
let(:menu){ namespace.fetch_menu(:default) }
|
10
|
-
|
11
|
-
after { namespace.unload! }
|
12
|
-
|
13
|
-
context "with no configuration" do
|
14
|
-
before do
|
15
|
-
namespace.register Category
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should store the namespaced registered configuration" do
|
19
|
-
expect(namespace.resources.keys).to include('Category')
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should create a new controller in the default namespace" do
|
23
|
-
expect(defined?(Admin::CategoriesController)).to eq 'constant'
|
24
|
-
end
|
25
|
-
|
26
|
-
skip "should not create the dashboard controller" do
|
27
|
-
defined?(Admin::DashboardController).to_not eq 'constant'
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should create a menu item" do
|
31
|
-
expect(menu["Categories"]).to be_a ActiveAdmin::MenuItem
|
32
|
-
expect(menu["Categories"].instance_variable_get(:@url)).to be_a Proc
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "with a block configuration" do
|
37
|
-
it "should be evaluated in the dsl" do
|
38
|
-
expect{ |block|
|
39
|
-
namespace.register Category, &block
|
40
|
-
}.to yield_control
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context "with a resource that's namespaced" do
|
45
|
-
before do
|
46
|
-
module ::Mock; class Resource; def self.has_many(arg1, arg2); end; end; end
|
47
|
-
namespace.register Mock::Resource
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should store the namespaced registered configuration" do
|
51
|
-
expect(namespace.resources.keys).to include('Mock::Resource')
|
52
|
-
end
|
53
|
-
it "should create a new controller in the default namespace" do
|
54
|
-
expect(defined?(Admin::MockResourcesController)).to eq 'constant'
|
55
|
-
end
|
56
|
-
it "should create a menu item" do
|
57
|
-
expect(menu["Mock Resources"]).to be_an_instance_of(ActiveAdmin::MenuItem)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should use the resource as the model in the controller" do
|
61
|
-
expect(Admin::MockResourcesController.resource_class).to eq Mock::Resource
|
62
|
-
end
|
63
|
-
end # context "with a resource that's namespaced"
|
64
|
-
|
65
|
-
describe "finding resource instances" do
|
66
|
-
it "should return the resource when its been registered" do
|
67
|
-
post = namespace.register Post
|
68
|
-
expect(namespace.resource_for(Post)).to eq post
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'should return nil when the resource has not been registered' do
|
72
|
-
expect(namespace.resource_for(Post)).to eq nil
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should return the parent when the parent class has been registered and the child has not" do
|
76
|
-
user = namespace.register User
|
77
|
-
expect(namespace.resource_for(Publisher)).to eq user
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return the resource if it and it's parent were registered" do
|
81
|
-
user = namespace.register User
|
82
|
-
publisher = namespace.register Publisher
|
83
|
-
expect(namespace.resource_for(Publisher)).to eq publisher
|
84
|
-
end
|
85
|
-
end # describe "finding resource instances"
|
86
|
-
|
87
|
-
describe "adding to the menu" do
|
88
|
-
describe "adding as a top level item" do
|
89
|
-
before do
|
90
|
-
namespace.register Category
|
91
|
-
end
|
92
|
-
it "should add a new menu item" do
|
93
|
-
expect(menu['Categories']).to_not eq nil
|
94
|
-
end
|
95
|
-
end # describe "adding as a top level item"
|
96
|
-
|
97
|
-
describe "adding as a child" do
|
98
|
-
before do
|
99
|
-
namespace.register Category do
|
100
|
-
menu parent: 'Blog'
|
101
|
-
end
|
102
|
-
end
|
103
|
-
it "should generate the parent menu item" do
|
104
|
-
expect(menu['Blog']).to_not eq nil
|
105
|
-
end
|
106
|
-
it "should generate its own child item" do
|
107
|
-
expect(menu['Blog']['Categories']).to_not eq nil
|
108
|
-
end
|
109
|
-
end # describe "adding as a child"
|
110
|
-
|
111
|
-
describe "disabling the menu" do
|
112
|
-
before do
|
113
|
-
namespace.register Category do
|
114
|
-
menu false
|
115
|
-
end
|
116
|
-
end
|
117
|
-
it "should not create a menu item" do
|
118
|
-
expect(menu["Categories"]).to eq nil
|
119
|
-
end
|
120
|
-
end # describe "disabling the menu"
|
121
|
-
|
122
|
-
describe "adding as a belongs to" do
|
123
|
-
context "when not optional" do
|
124
|
-
before do
|
125
|
-
namespace.register Post do
|
126
|
-
belongs_to :author
|
127
|
-
end
|
128
|
-
end
|
129
|
-
it "should not show up in the menu" do
|
130
|
-
expect(menu["Posts"]).to eq nil
|
131
|
-
end
|
132
|
-
end
|
133
|
-
context "when optional" do
|
134
|
-
before do
|
135
|
-
namespace.register Post do
|
136
|
-
belongs_to :author, optional: true
|
137
|
-
end
|
138
|
-
end
|
139
|
-
it "should show up in the menu" do
|
140
|
-
expect(menu["Posts"]).to_not eq nil
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end # describe "adding to the menu"
|
145
|
-
|
146
|
-
describe "dashboard controller name" do
|
147
|
-
context "when namespaced" do
|
148
|
-
it "should be namespaced" do
|
149
|
-
namespace = ActiveAdmin::Namespace.new(application, :one)
|
150
|
-
namespace.register Category
|
151
|
-
expect(defined?(One::CategoriesController)).to eq 'constant'
|
152
|
-
end
|
153
|
-
end
|
154
|
-
context "when not namespaced" do
|
155
|
-
it "should not be namespaced" do
|
156
|
-
namespace = ActiveAdmin::Namespace.new(application, :two)
|
157
|
-
namespace.register Category
|
158
|
-
expect(defined?(Two::CategoriesController)).to eq 'constant'
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end # describe "dashboard controller name"
|
162
|
-
end # describe "registering a resource"
|
data/spec/unit/namespace_spec.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.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
|
-
expect(namespace.application).to eq application
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should have a name" do
|
15
|
-
expect(namespace.name).to eq :admin
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should have no resources" do
|
19
|
-
expect(namespace.resources).to be_empty
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should not have any menu item" do
|
23
|
-
expect(namespace.fetch_menu(:default).children).to be_empty
|
24
|
-
end
|
25
|
-
end # context "when new"
|
26
|
-
|
27
|
-
describe "#unload!" do
|
28
|
-
context "when controller is only defined without a namespace" do
|
29
|
-
before do
|
30
|
-
# To ensure Admin::PostsController is defined
|
31
|
-
ActiveAdmin.register Post
|
32
|
-
|
33
|
-
# To ensure ::PostsController is defined
|
34
|
-
ActiveAdmin.register Post, namespace: false
|
35
|
-
|
36
|
-
# To prevent unload! from unregistering ::PostsController
|
37
|
-
ActiveAdmin.application.namespaces.instance_variable_get(:@namespaces).delete(:root)
|
38
|
-
|
39
|
-
# To force Admin::PostsController to not be there
|
40
|
-
Admin.send(:remove_const, 'PostsController')
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should not crash" do
|
44
|
-
expect { ActiveAdmin.unload! }.not_to raise_error
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "settings" do
|
50
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
51
|
-
|
52
|
-
it "should inherit the site title from the application" do
|
53
|
-
ActiveAdmin::Namespace.setting :site_title, "Not the Same"
|
54
|
-
expect(namespace.site_title).to eq application.site_title
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should be able to override the site title" do
|
58
|
-
expect(namespace.site_title).to eq application.site_title
|
59
|
-
namespace.site_title = "My Site Title"
|
60
|
-
expect(namespace.site_title).to_not eq application.site_title
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "#fetch_menu" do
|
65
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
66
|
-
|
67
|
-
it "returns the menu" do
|
68
|
-
expect(namespace.fetch_menu(:default)).to be_an_instance_of(ActiveAdmin::Menu)
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should have utility nav menu" do
|
72
|
-
expect(namespace.fetch_menu(:utility_navigation)).to be_an_instance_of(ActiveAdmin::Menu)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should raise an exception if the menu doesn't exist" do
|
76
|
-
expect {
|
77
|
-
namespace.fetch_menu(:not_a_menu_that_exists)
|
78
|
-
}.to raise_error(KeyError)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "#build_menu" do
|
83
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
84
|
-
|
85
|
-
it "should set the block as a menu build callback" do
|
86
|
-
namespace.build_menu do |menu|
|
87
|
-
menu.add label: "menu item"
|
88
|
-
end
|
89
|
-
|
90
|
-
expect(namespace.fetch_menu(:default)["menu item"]).to_not eq nil
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should set a block on a custom menu" do
|
94
|
-
namespace.build_menu :test do |menu|
|
95
|
-
menu.add label: "menu item"
|
96
|
-
end
|
97
|
-
|
98
|
-
expect(namespace.fetch_menu(:test)["menu item"]).to_not eq nil
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "utility navigation" do
|
103
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
104
|
-
let(:menu) do
|
105
|
-
namespace.build_menu :utility_navigation do |menu|
|
106
|
-
menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", html_options: { target: :blank }
|
107
|
-
namespace.add_logout_button_to_menu menu, 1, class: "matt"
|
108
|
-
end
|
109
|
-
namespace.fetch_menu(:utility_navigation)
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should have a logout button to the far left" do
|
113
|
-
expect(menu["Logout"]).to_not eq nil
|
114
|
-
expect(menu["Logout"].priority).to eq 1
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should have a static link with a target of :blank" do
|
118
|
-
expect(menu["ActiveAdmin.info"]).to_not eq nil
|
119
|
-
expect(menu["ActiveAdmin.info"].html_options).to include(target: :blank)
|
120
|
-
end
|
121
|
-
|
122
|
-
end
|
123
|
-
|
124
|
-
end
|