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/resource_spec.rb
DELETED
@@ -1,320 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
require File.expand_path('config_shared_examples', File.dirname(__FILE__))
|
3
|
-
|
4
|
-
module ActiveAdmin
|
5
|
-
RSpec.describe Resource do
|
6
|
-
|
7
|
-
it_should_behave_like "ActiveAdmin::Resource"
|
8
|
-
before { load_defaults! }
|
9
|
-
|
10
|
-
let(:application){ ActiveAdmin::Application.new }
|
11
|
-
let(:namespace){ Namespace.new(application, :admin) }
|
12
|
-
|
13
|
-
def config(options = {})
|
14
|
-
@config ||= Resource.new(namespace, Category, options)
|
15
|
-
end
|
16
|
-
|
17
|
-
it { respond_to :resource_class }
|
18
|
-
|
19
|
-
describe "#resource_table_name" do
|
20
|
-
it "should return the resource's table name" do
|
21
|
-
expect(config.resource_table_name).to eq '"categories"'
|
22
|
-
end
|
23
|
-
context "when the :as option is given" do
|
24
|
-
it "should return the resource's table name" do
|
25
|
-
expect(config(as: "My Category").resource_table_name).to eq '"categories"'
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#resource_column_names" do
|
31
|
-
it "should return the resource's column names" do
|
32
|
-
expect(config.resource_column_names).to eq Category.column_names
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#decorator_class' do
|
37
|
-
it 'returns nil by default' do
|
38
|
-
expect(config.decorator_class).to eq nil
|
39
|
-
end
|
40
|
-
context 'when a decorator is defined' do
|
41
|
-
let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
|
42
|
-
specify '#decorator_class_name should return PostDecorator' do
|
43
|
-
expect(resource.decorator_class_name).to eq '::PostDecorator'
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'returns the decorator class' do
|
47
|
-
expect(resource.decorator_class).to eq PostDecorator
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "controller name" do
|
53
|
-
it "should return a namespaced controller name" do
|
54
|
-
expect(config.controller_name).to eq "Admin::CategoriesController"
|
55
|
-
end
|
56
|
-
context "when non namespaced controller" do
|
57
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
|
58
|
-
it "should return a non namespaced controller name" do
|
59
|
-
expect(config.controller_name).to eq "CategoriesController"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "#include_in_menu?" do
|
65
|
-
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
66
|
-
subject{ resource }
|
67
|
-
|
68
|
-
context "when regular resource" do
|
69
|
-
let(:resource){ namespace.register(Post) }
|
70
|
-
it { is_expected.to be_include_in_menu }
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when menu set to false" do
|
74
|
-
let(:resource){ namespace.register(Post){ menu false } }
|
75
|
-
it { is_expected.not_to be_include_in_menu }
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe "#belongs_to" do
|
80
|
-
|
81
|
-
it "should build a belongs to configuration" do
|
82
|
-
expect(config.belongs_to_config).to eq nil
|
83
|
-
config.belongs_to :posts
|
84
|
-
expect(config.belongs_to_config).to_not eq nil
|
85
|
-
end
|
86
|
-
|
87
|
-
it "should not set the target menu to the belongs to target" do
|
88
|
-
expect(config.navigation_menu_name).to eq ActiveAdmin::DEFAULT_MENU
|
89
|
-
config.belongs_to :posts
|
90
|
-
expect(config.navigation_menu_name).to eq ActiveAdmin::DEFAULT_MENU
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
describe "scoping" do
|
96
|
-
context "when using a block" do
|
97
|
-
before do
|
98
|
-
@resource = application.register Category do
|
99
|
-
scope_to do
|
100
|
-
"scoped"
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
it "should call the proc for the begin of association chain" do
|
105
|
-
begin_of_association_chain = @resource.controller.new.send(:begin_of_association_chain)
|
106
|
-
expect(begin_of_association_chain).to eq "scoped"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
context "when using a symbol" do
|
111
|
-
before do
|
112
|
-
@resource = application.register Category do
|
113
|
-
scope_to :current_user
|
114
|
-
end
|
115
|
-
end
|
116
|
-
it "should call the method for the begin of association chain" do
|
117
|
-
controller = @resource.controller.new
|
118
|
-
expect(controller).to receive(:current_user).and_return(true)
|
119
|
-
begin_of_association_chain = controller.send(:begin_of_association_chain)
|
120
|
-
expect(begin_of_association_chain).to eq true
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
describe "getting the method for the association chain" do
|
125
|
-
context "when a simple registration" do
|
126
|
-
before do
|
127
|
-
@resource = application.register Category do
|
128
|
-
scope_to :current_user
|
129
|
-
end
|
130
|
-
end
|
131
|
-
it "should return the pluralized collection name" do
|
132
|
-
expect(@resource.controller.new.send(:method_for_association_chain)).to eq :categories
|
133
|
-
end
|
134
|
-
end
|
135
|
-
context "when passing in the method as an option" do
|
136
|
-
before do
|
137
|
-
@resource = application.register Category do
|
138
|
-
scope_to :current_user, association_method: :blog_categories
|
139
|
-
end
|
140
|
-
end
|
141
|
-
it "should return the method from the option" do
|
142
|
-
expect(@resource.controller.new.send(:method_for_association_chain)).to eq :blog_categories
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe "sort order" do
|
149
|
-
class MockResource
|
150
|
-
end
|
151
|
-
|
152
|
-
context "when resource class responds to primary_key" do
|
153
|
-
it "should sort by primary key desc by default" do
|
154
|
-
expect(MockResource).to receive(:primary_key).and_return("pk")
|
155
|
-
config = Resource.new(namespace, MockResource)
|
156
|
-
expect(config.sort_order).to eq "pk_desc"
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
context "when resource class does not respond to primary_key" do
|
161
|
-
it "should default to id" do
|
162
|
-
config = Resource.new(namespace, MockResource)
|
163
|
-
expect(config.sort_order).to eq "id_desc"
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should be set-able" do
|
168
|
-
config.sort_order = "task_id_desc"
|
169
|
-
expect(config.sort_order).to eq "task_id_desc"
|
170
|
-
end
|
171
|
-
|
172
|
-
end
|
173
|
-
|
174
|
-
describe "adding a scope" do
|
175
|
-
|
176
|
-
it "should add a scope" do
|
177
|
-
config.scope :published
|
178
|
-
expect(config.scopes.first).to be_a(ActiveAdmin::Scope)
|
179
|
-
expect(config.scopes.first.name).to eq "Published"
|
180
|
-
expect(config.scopes.first.show_count).to eq true
|
181
|
-
end
|
182
|
-
|
183
|
-
context 'when show_count disabled' do
|
184
|
-
it "should add a scope show_count = false" do
|
185
|
-
namespace.scopes_show_count = false
|
186
|
-
config.scope :published
|
187
|
-
expect(config.scopes.first.show_count).to eq false
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should retrive a scope by its id" do
|
192
|
-
config.scope :published
|
193
|
-
expect(config.get_scope_by_id(:published).name).to eq "Published"
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should retrieve the default scope by proc" do
|
197
|
-
config.scope :published, default: proc{ true }
|
198
|
-
config.scope :all
|
199
|
-
expect(config.default_scope.name).to eq "Published"
|
200
|
-
end
|
201
|
-
|
202
|
-
end
|
203
|
-
|
204
|
-
describe "#csv_builder" do
|
205
|
-
context "when no csv builder set" do
|
206
|
-
it "should return a default column builder with id and content columns" do
|
207
|
-
expect(config.csv_builder.exec_columns.size).to eq @config.content_columns.size + 1
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
context "when csv builder set" do
|
212
|
-
it "shuld return the csv_builder we set" do
|
213
|
-
csv_builder = CSVBuilder.new
|
214
|
-
config.csv_builder = csv_builder
|
215
|
-
expect(config.csv_builder).to eq csv_builder
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
describe "#breadcrumb" do
|
221
|
-
subject { config.breadcrumb }
|
222
|
-
|
223
|
-
context "when no breadcrumb is set" do
|
224
|
-
it { is_expected.to eq(namespace.breadcrumb) }
|
225
|
-
end
|
226
|
-
|
227
|
-
context "when breadcrumb is set" do
|
228
|
-
context "when set to true" do
|
229
|
-
before { config.breadcrumb = true }
|
230
|
-
it { is_expected.to eq true }
|
231
|
-
end
|
232
|
-
|
233
|
-
context "when set to false" do
|
234
|
-
before { config.breadcrumb = false }
|
235
|
-
it { is_expected.to eq false }
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
describe '#find_resource' do
|
241
|
-
let(:resource) { namespace.register(Post) }
|
242
|
-
let(:post) { double }
|
243
|
-
before do
|
244
|
-
allow(Post).to receive(:find_by).with("id" => "12345") { post }
|
245
|
-
allow(Post).to receive(:find_by).with("id" => "54321") { nil }
|
246
|
-
end
|
247
|
-
|
248
|
-
it 'can find the resource' do
|
249
|
-
expect(resource.find_resource('12345')).to eq post
|
250
|
-
end
|
251
|
-
|
252
|
-
context 'with a decorator' do
|
253
|
-
let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
|
254
|
-
it 'decorates the resource' do
|
255
|
-
expect(resource.find_resource('12345')).to eq PostDecorator.new(post)
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'does not decorate a not found resource' do
|
259
|
-
expect(resource.find_resource('54321')).to equal nil
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
context 'when using a nonstandard primary key' do
|
264
|
-
let(:different_post) { double }
|
265
|
-
before do
|
266
|
-
allow(Post).to receive(:primary_key).and_return 'something_else'
|
267
|
-
allow(Post).to receive(:find_by).
|
268
|
-
with("something_else" => "55555") { different_post }
|
269
|
-
end
|
270
|
-
|
271
|
-
it 'can find the post by the custom primary key' do
|
272
|
-
expect(resource.find_resource('55555')).to eq different_post
|
273
|
-
end
|
274
|
-
end
|
275
|
-
|
276
|
-
context 'when using controller finder' do
|
277
|
-
let(:resource) do
|
278
|
-
namespace.register(Post) do
|
279
|
-
controller do
|
280
|
-
defaults finder: :find_by_title!
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
|
-
it 'can find the post by controller finder' do
|
286
|
-
allow(Post).to receive(:find_by_title!).with('title-name').and_return(post)
|
287
|
-
|
288
|
-
expect(resource.find_resource('title-name')).to eq post
|
289
|
-
end
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
describe "delegation" do
|
294
|
-
let(:controller) {
|
295
|
-
Class.new do
|
296
|
-
def method_missing(name, *args, &block)
|
297
|
-
"called #{name}"
|
298
|
-
end
|
299
|
-
end.new
|
300
|
-
}
|
301
|
-
let(:resource) { ActiveAdmin::ResourceDSL.new(double) }
|
302
|
-
|
303
|
-
before do
|
304
|
-
expect(resource).to receive(:controller).and_return(controller)
|
305
|
-
end
|
306
|
-
|
307
|
-
context "actions" do
|
308
|
-
[
|
309
|
-
:before_action, :skip_before_action,
|
310
|
-
:after_action, :skip_after_action,
|
311
|
-
:around_action, :skip_action
|
312
|
-
].each do |method|
|
313
|
-
it "delegates #{method}" do
|
314
|
-
expect(resource.send(method)).to eq "called #{method}"
|
315
|
-
end
|
316
|
-
end
|
317
|
-
end
|
318
|
-
end
|
319
|
-
end
|
320
|
-
end
|
data/spec/unit/routing_spec.rb
DELETED
@@ -1,211 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin, "Routing", type: :routing do
|
4
|
-
|
5
|
-
before do
|
6
|
-
load_defaults!
|
7
|
-
reload_routes!
|
8
|
-
end
|
9
|
-
|
10
|
-
after :all do
|
11
|
-
load_defaults!
|
12
|
-
reload_routes!
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:namespaces) { ActiveAdmin.application.namespaces }
|
16
|
-
|
17
|
-
it "should only have the namespaces necessary for route testing" do
|
18
|
-
expect(namespaces.names).to eq [:admin]
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should route to the admin dashboard" do
|
22
|
-
expect(get('/admin')).to route_to 'admin/dashboard#index'
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "root path helper" do
|
26
|
-
context "when in admin namespace" do
|
27
|
-
it "should be admin_root_path" do
|
28
|
-
expect(admin_root_path).to eq "/admin"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "route_options" do
|
34
|
-
context "with a custom path set in route_options" do
|
35
|
-
before do
|
36
|
-
namespaces[:admin].route_options = { path: '/custom-path' }
|
37
|
-
reload_routes!
|
38
|
-
end
|
39
|
-
|
40
|
-
after do
|
41
|
-
namespaces[:admin].route_options = {}
|
42
|
-
reload_routes!
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should route using the custom path" do
|
46
|
-
expect(admin_posts_path).to eq "/custom-path/posts"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "standard resources" do
|
52
|
-
context "when in admin namespace" do
|
53
|
-
it "should route the index path" do
|
54
|
-
expect(admin_posts_path).to eq "/admin/posts"
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should route the show path" do
|
58
|
-
expect(admin_post_path(1)).to eq "/admin/posts/1"
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should route the new path" do
|
62
|
-
expect(new_admin_post_path).to eq "/admin/posts/new"
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should route the edit path" do
|
66
|
-
expect(edit_admin_post_path(1)).to eq "/admin/posts/1/edit"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "when in root namespace" do
|
71
|
-
before(:each) do
|
72
|
-
load_resources { ActiveAdmin.register(Post, namespace: false) }
|
73
|
-
end
|
74
|
-
|
75
|
-
after(:each) do
|
76
|
-
namespaces.instance_variable_get(:@namespaces).delete(:root)
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should route the index path" do
|
80
|
-
expect(posts_path).to eq "/posts"
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should route the show path" do
|
84
|
-
expect(post_path(1)).to eq "/posts/1"
|
85
|
-
end
|
86
|
-
|
87
|
-
it "should route the new path" do
|
88
|
-
expect(new_post_path).to eq "/posts/new"
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should route the edit path" do
|
92
|
-
expect(edit_post_path(1)).to eq "/posts/1/edit"
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context "with member action" do
|
97
|
-
context "without an http verb" do
|
98
|
-
before do
|
99
|
-
load_resources do
|
100
|
-
ActiveAdmin.register(Post){ member_action "do_something" }
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should default to GET" do
|
105
|
-
expect({get: "/admin/posts/1/do_something"}).to be_routable
|
106
|
-
expect({post: "/admin/posts/1/do_something"}).to_not be_routable
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
context "with one http verb" do
|
111
|
-
before do
|
112
|
-
load_resources do
|
113
|
-
ActiveAdmin.register(Post){ member_action "do_something", method: :post }
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should properly route" do
|
118
|
-
expect({post: "/admin/posts/1/do_something"}).to be_routable
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
context "with two http verbs" do
|
123
|
-
before do
|
124
|
-
load_resources do
|
125
|
-
ActiveAdmin.register(Post){ member_action "do_something", method: [:put, :delete] }
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should properly route the first verb" do
|
130
|
-
expect({put: "/admin/posts/1/do_something"}).to be_routable
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should properly route the second verb" do
|
134
|
-
expect({delete: "/admin/posts/1/do_something"}).to be_routable
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
describe "belongs to resource" do
|
141
|
-
it "should route the nested index path" do
|
142
|
-
expect(admin_user_posts_path(1)).to eq "/admin/users/1/posts"
|
143
|
-
end
|
144
|
-
|
145
|
-
it "should route the nested show path" do
|
146
|
-
expect(admin_user_post_path(1, 2)).to eq "/admin/users/1/posts/2"
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should route the nested new path" do
|
150
|
-
expect(new_admin_user_post_path(1)).to eq "/admin/users/1/posts/new"
|
151
|
-
end
|
152
|
-
|
153
|
-
it "should route the nested edit path" do
|
154
|
-
expect(edit_admin_user_post_path(1, 2)).to eq "/admin/users/1/posts/2/edit"
|
155
|
-
end
|
156
|
-
|
157
|
-
context "with collection action" do
|
158
|
-
before do
|
159
|
-
load_resources do
|
160
|
-
ActiveAdmin.register(Post) do
|
161
|
-
belongs_to :user, optional: true
|
162
|
-
end
|
163
|
-
ActiveAdmin.register(User) do
|
164
|
-
collection_action "do_something"
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should properly route the collection action" do
|
170
|
-
expect({ get: "/admin/users/do_something" }).to \
|
171
|
-
route_to({ controller: 'admin/users', action: 'do_something'})
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
describe "page" do
|
177
|
-
context "when default namespace" do
|
178
|
-
before(:each) do
|
179
|
-
load_resources { ActiveAdmin.register_page("Chocolate I lØve You!") }
|
180
|
-
end
|
181
|
-
|
182
|
-
it "should route to the page under /admin" do
|
183
|
-
expect(admin_chocolate_i_love_you_path).to eq "/admin/chocolate_i_love_you"
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
context "when in the root namespace" do
|
188
|
-
before(:each) do
|
189
|
-
load_resources { ActiveAdmin.register_page("Chocolate I lØve You!", namespace: false) }
|
190
|
-
end
|
191
|
-
|
192
|
-
after(:each) do
|
193
|
-
namespaces.instance_variable_get(:@namespaces).delete(:root)
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should route to page under /" do
|
197
|
-
expect(chocolate_i_love_you_path).to eq "/chocolate_i_love_you"
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
context "when singular page name" do
|
202
|
-
before(:each) do
|
203
|
-
load_resources { ActiveAdmin.register_page("Log") }
|
204
|
-
end
|
205
|
-
|
206
|
-
it "should not inject _index_ into the route name" do
|
207
|
-
expect(admin_log_path).to eq "/admin/log"
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|