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
@@ -1,44 +0,0 @@
|
|
1
|
-
class ApplicationPolicy
|
2
|
-
attr_reader :user, :record
|
3
|
-
|
4
|
-
def initialize(user, record)
|
5
|
-
@user = user
|
6
|
-
@record = record
|
7
|
-
end
|
8
|
-
|
9
|
-
def index?
|
10
|
-
true
|
11
|
-
end
|
12
|
-
|
13
|
-
def show?
|
14
|
-
scope.where(id: record.id).exists?
|
15
|
-
end
|
16
|
-
|
17
|
-
def new?
|
18
|
-
create?
|
19
|
-
end
|
20
|
-
|
21
|
-
def create?
|
22
|
-
true
|
23
|
-
end
|
24
|
-
|
25
|
-
def edit?
|
26
|
-
update?
|
27
|
-
end
|
28
|
-
|
29
|
-
def update?
|
30
|
-
true
|
31
|
-
end
|
32
|
-
|
33
|
-
def destroy?
|
34
|
-
true
|
35
|
-
end
|
36
|
-
|
37
|
-
def destroy_all?
|
38
|
-
true
|
39
|
-
end
|
40
|
-
|
41
|
-
def scope
|
42
|
-
Pundit.policy_scope!(user, record.class)
|
43
|
-
end
|
44
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'draper'
|
2
|
-
|
3
|
-
class PostDecorator < Draper::Decorator
|
4
|
-
decorates :post
|
5
|
-
delegate_all
|
6
|
-
|
7
|
-
# @param attributes [Hash]
|
8
|
-
def assign_attributes(attributes)
|
9
|
-
object.assign_attributes attributes.except(:virtual_title)
|
10
|
-
self.virtual_title = attributes.fetch(:virtual_title) if attributes.key?(:virtual_title)
|
11
|
-
end
|
12
|
-
|
13
|
-
def virtual_title
|
14
|
-
object.title
|
15
|
-
end
|
16
|
-
|
17
|
-
def virtual_title=(virtual_title)
|
18
|
-
object.title = virtual_title
|
19
|
-
end
|
20
|
-
|
21
|
-
def decorator_method
|
22
|
-
'A method only available on the decorator'
|
23
|
-
end
|
24
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
require 'active_admin/abstract_view_factory'
|
4
|
-
|
5
|
-
RSpec.describe ActiveAdmin::AbstractViewFactory do
|
6
|
-
|
7
|
-
let(:view_factory){ ActiveAdmin::AbstractViewFactory.new }
|
8
|
-
let(:view){ Class.new }
|
9
|
-
|
10
|
-
describe "registering a new view key" do
|
11
|
-
before do
|
12
|
-
view_factory.register my_new_view_class: view
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should respond to :my_new_view_class" do
|
16
|
-
expect(view_factory.respond_to? :my_new_view_class).to be true
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should respond to :my_new_view_class=" do
|
20
|
-
expect(view_factory.respond_to? :my_new_view_class=).to be true
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should generate a getter method" do
|
24
|
-
expect(view_factory.my_new_view_class).to eq view
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should be settable view a setter method" do
|
28
|
-
view_factory.my_new_view_class = "Some Obj"
|
29
|
-
expect(view_factory.my_new_view_class).to eq "Some Obj"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "array syntax access" do
|
34
|
-
before do
|
35
|
-
view_factory.register my_new_view_class: view
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should be available through array syntax" do
|
39
|
-
expect(view_factory[:my_new_view_class]).to eq view
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should be settable through array syntax" do
|
43
|
-
view_factory[:my_new_view_class] = "My New View Class"
|
44
|
-
expect(view_factory[:my_new_view_class]).to eq "My New View Class"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "registering default views" do
|
49
|
-
before do
|
50
|
-
ActiveAdmin::AbstractViewFactory.register my_default_view_class: view
|
51
|
-
end
|
52
|
-
it "should generate a getter method" do
|
53
|
-
expect(view_factory.my_default_view_class).to eq view
|
54
|
-
end
|
55
|
-
it "should be settable view a setter method and not change default" do
|
56
|
-
view_factory.my_default_view_class = "Some Obj"
|
57
|
-
expect(view_factory.my_default_view_class).to eq "Some Obj"
|
58
|
-
expect(view_factory.default_for(:my_default_view_class)).to eq view
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "subclassing the ViewFactory" do
|
63
|
-
let(:subclass) do
|
64
|
-
ActiveAdmin::AbstractViewFactory.register my_subclassed_view: "From Parent"
|
65
|
-
Class.new(ActiveAdmin::AbstractViewFactory) do
|
66
|
-
def my_subclassed_view
|
67
|
-
"From Subclass"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should use the subclass implementation" do
|
73
|
-
factory = subclass.new
|
74
|
-
expect(factory.my_subclassed_view).to eq "From Subclass"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
@@ -1,158 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe 'defining actions from registration blocks', type: :controller do
|
4
|
-
let(:klass){ Admin::PostsController }
|
5
|
-
|
6
|
-
before do
|
7
|
-
load_resources { action! }
|
8
|
-
|
9
|
-
@controller = klass.new
|
10
|
-
end
|
11
|
-
|
12
|
-
describe 'creates a member action' do
|
13
|
-
after(:each) do
|
14
|
-
klass.clear_member_actions!
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'with a block' do
|
18
|
-
let(:action!) do
|
19
|
-
ActiveAdmin.register Post do
|
20
|
-
member_action :comment do
|
21
|
-
# Do nothing
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should create a new public instance method' do
|
27
|
-
expect(klass.public_instance_methods.collect(&:to_s)).to include('comment')
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'should add itself to the member actions config' do
|
31
|
-
expect(klass.active_admin_config.member_actions.size).to eq 1
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should create a new named route' do
|
35
|
-
expect(Rails.application.routes.url_helpers.methods.collect(&:to_s)).to include('comment_admin_post_path')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'without a block' do
|
40
|
-
let(:action!) do
|
41
|
-
ActiveAdmin.register Post do
|
42
|
-
member_action :comment
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should still generate a new empty action' do
|
47
|
-
expect(klass.public_instance_methods.collect(&:to_s)).to include('comment')
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'with :title' do
|
52
|
-
let(:action!) do
|
53
|
-
ActiveAdmin.register Post do
|
54
|
-
member_action :comment, title: 'My Awesome Comment' do
|
55
|
-
render json: {a: 2}
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'sets the page title' do
|
61
|
-
params = {id: 1}
|
62
|
-
params = {params: params} if ActiveAdmin::Dependency.rails5?
|
63
|
-
get :comment, params
|
64
|
-
|
65
|
-
expect(controller.instance_variable_get(:@page_title)).to eq 'My Awesome Comment'
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'creates a collection action' do
|
71
|
-
after(:each) do
|
72
|
-
klass.clear_collection_actions!
|
73
|
-
end
|
74
|
-
|
75
|
-
context 'with a block' do
|
76
|
-
let(:action!) do
|
77
|
-
ActiveAdmin.register Post do
|
78
|
-
collection_action :comments do
|
79
|
-
# Do nothing
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'should create a public instance method' do
|
85
|
-
expect(klass.public_instance_methods.collect(&:to_s)).to include('comments')
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'should add itself to the member actions config' do
|
89
|
-
expect(klass.active_admin_config.collection_actions.size).to eq 1
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'should create a named route' do
|
93
|
-
expect(Rails.application.routes.url_helpers.methods.collect(&:to_s)).to include('comments_admin_posts_path')
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
context 'without a block' do
|
98
|
-
let(:action!) do
|
99
|
-
ActiveAdmin.register Post do
|
100
|
-
collection_action :comments
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should still generate a new empty action' do
|
105
|
-
expect(klass.public_instance_methods.collect(&:to_s)).to include('comments')
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
context 'with :title' do
|
110
|
-
let(:action!) do
|
111
|
-
ActiveAdmin.register Post do
|
112
|
-
collection_action :comments, title: 'My Awesome Comments' do
|
113
|
-
render json: {a: 2}
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'sets the page title' do
|
119
|
-
get :comments
|
120
|
-
|
121
|
-
expect(controller.instance_variable_get(:@page_title)).to eq 'My Awesome Comments'
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
context 'when method with given name is already defined' do
|
127
|
-
around :each do |example|
|
128
|
-
original_stderr = $stderr
|
129
|
-
$stderr = StringIO.new
|
130
|
-
example.run
|
131
|
-
$stderr = original_stderr
|
132
|
-
end
|
133
|
-
|
134
|
-
describe 'defining member action' do
|
135
|
-
let :action! do
|
136
|
-
ActiveAdmin.register Post do
|
137
|
-
member_action :process
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'writes warning to $stderr' do
|
142
|
-
expect($stderr.string).to include('Warning: method `process` already defined')
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
describe 'defining collection action' do
|
147
|
-
let :action! do
|
148
|
-
ActiveAdmin.register Post do
|
149
|
-
collection_action :process
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
it 'writes warning to $stderr' do
|
154
|
-
expect($stderr.string).to include('Warning: method `process` already defined')
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin do
|
4
|
-
%w(register register_page unload! load! routes).each do |method|
|
5
|
-
it "delegates ##{method} to application" do
|
6
|
-
expect(ActiveAdmin.application).to receive(method)
|
7
|
-
|
8
|
-
ActiveAdmin.send(method)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
@@ -1,184 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
RSpec.describe ActiveAdmin::Application do
|
5
|
-
|
6
|
-
let(:application) { ActiveAdmin::Application.new }
|
7
|
-
|
8
|
-
around do |example|
|
9
|
-
old_load_paths = application.load_paths
|
10
|
-
# TODO: Figure out why load paths need to be overriden
|
11
|
-
application.load_paths = [File.expand_path('app/admin', Rails.root)]
|
12
|
-
|
13
|
-
example.call
|
14
|
-
|
15
|
-
application.load_paths = old_load_paths
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should have a default load path of ['app/admin']" do
|
19
|
-
expect(application.load_paths).to eq [File.expand_path('app/admin', Rails.root)]
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should remove app/admin from the autoload paths (Active Admin deals with loading)" do
|
23
|
-
expect(ActiveSupport::Dependencies.autoload_paths).to_not include(File.join(Rails.root, "app/admin"))
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should store the site's title" do
|
27
|
-
expect(application.site_title).to eq ""
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should set the site title" do
|
31
|
-
application.site_title = "New Title"
|
32
|
-
expect(application.site_title).to eq "New Title"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should store the site's title link" do
|
36
|
-
expect(application.site_title_link).to eq ""
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should set the site's title link" do
|
40
|
-
application.site_title_link = "http://www.mygreatsite.com"
|
41
|
-
expect(application.site_title_link).to eq "http://www.mygreatsite.com"
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should store the site's title image" do
|
45
|
-
expect(application.site_title_image).to eq ""
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should set the site's title image" do
|
49
|
-
application.site_title_image = "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
50
|
-
expect(application.site_title_image).to eq "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should store the site's favicon" do
|
54
|
-
expect(application.favicon).to eq false
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should return default localize format" do
|
58
|
-
expect(application.localize_format).to eq :long
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should set localize format" do
|
62
|
-
application.localize_format = :default
|
63
|
-
expect(application.localize_format).to eq :default
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should set the site's favicon" do
|
67
|
-
application.favicon = "/a/favicon.ico"
|
68
|
-
expect(application.favicon).to eq "/a/favicon.ico"
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should store meta tags" do
|
72
|
-
expect(application.meta_tags).to eq({})
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should set meta tags" do
|
76
|
-
application.meta_tags = { author: "My Company" }
|
77
|
-
expect(application.meta_tags).to eq(author: "My Company")
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should contains robots meta tags by default" do
|
81
|
-
result = application.meta_tags_for_logged_out_pages
|
82
|
-
expect(result).to eq(robots: "noindex, nofollow")
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should set meta tags for logged out pages" do
|
86
|
-
value = { author: "My Company" }
|
87
|
-
application.meta_tags_for_logged_out_pages = value
|
88
|
-
expect(application.meta_tags_for_logged_out_pages).to eq value
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should have a view factory" do
|
92
|
-
expect(application.view_factory).to be_an_instance_of(ActiveAdmin::ViewFactory)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should allow comments by default" do
|
96
|
-
expect(application.comments).to eq true
|
97
|
-
end
|
98
|
-
|
99
|
-
it "should have default order clause class" do
|
100
|
-
expect(application.order_clause).to eq ActiveAdmin::OrderClause
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should have default show_count for scopes" do
|
104
|
-
expect(application.scopes_show_count).to eq true
|
105
|
-
end
|
106
|
-
|
107
|
-
describe "authentication settings" do
|
108
|
-
|
109
|
-
it "should have no default current_user_method" do
|
110
|
-
expect(application.current_user_method).to eq false
|
111
|
-
end
|
112
|
-
|
113
|
-
it "should have no default authentication method" do
|
114
|
-
expect(application.authentication_method).to eq false
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should have a logout link path (Devise's default)" do
|
118
|
-
expect(application.logout_link_path).to eq :destroy_admin_user_session_path
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should have a logout link method (Devise's default)" do
|
122
|
-
expect(application.logout_link_method).to eq :get
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "files in load path" do
|
127
|
-
it "should load files in the first level directory" do
|
128
|
-
expect(application.files).to include(File.expand_path("app/admin/dashboard.rb", Rails.root))
|
129
|
-
end
|
130
|
-
|
131
|
-
it "should load files from subdirectories" do
|
132
|
-
test_dir = File.expand_path("app/admin/public", Rails.root)
|
133
|
-
test_file = File.expand_path("app/admin/public/posts.rb", Rails.root)
|
134
|
-
|
135
|
-
begin
|
136
|
-
FileUtils.mkdir_p(test_dir)
|
137
|
-
FileUtils.touch(test_file)
|
138
|
-
expect(application.files).to include(test_file)
|
139
|
-
ensure
|
140
|
-
FileUtils.remove_entry_secure(test_dir, force: true)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
describe "#namespace" do
|
146
|
-
|
147
|
-
it "should yield a new namespace" do
|
148
|
-
application.namespace :new_namespace do |ns|
|
149
|
-
expect(ns.name).to eq :new_namespace
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
it "should return an instantiated namespace" do
|
154
|
-
admin = application.namespace :admin
|
155
|
-
expect(admin).to eq application.namespaces[:admin]
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should yield an existing namespace" do
|
159
|
-
expect {
|
160
|
-
application.namespace :admin do |ns|
|
161
|
-
expect(ns).to eq application.namespaces[:admin]
|
162
|
-
raise "found"
|
163
|
-
end
|
164
|
-
}.to raise_error("found")
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should not pollute the global app" do
|
168
|
-
expect(application.namespaces).to be_empty
|
169
|
-
application.namespace(:brand_new_ns)
|
170
|
-
expect(application.namespaces.names).to eq [:brand_new_ns]
|
171
|
-
expect(ActiveAdmin.application.namespaces.names).to eq [:admin]
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
describe "#register_page" do
|
176
|
-
it "finds or create the namespace and register the page to it" do
|
177
|
-
namespace = double
|
178
|
-
expect(application).to receive(:namespace).with("public").and_return namespace
|
179
|
-
expect(namespace).to receive(:register_page).with("My Page", {namespace: "public"})
|
180
|
-
application.register_page("My Page", namespace: "public")
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
end
|