activeadmin 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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,135 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveAdmin::Dependency do
|
|
4
|
-
|
|
5
|
-
k = ActiveAdmin::Dependency
|
|
6
|
-
|
|
7
|
-
describe 'method_missing' do
|
|
8
|
-
before do
|
|
9
|
-
allow(Gem).to receive(:loaded_specs)
|
|
10
|
-
.and_return 'foo' => Gem::Specification.new('foo', '1.2.3')
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'returns a Matcher' do
|
|
14
|
-
expect(k.foo).to be_a ActiveAdmin::Dependency::Matcher
|
|
15
|
-
expect(k.foo.inspect).to eq '<ActiveAdmin::Dependency::Matcher for foo 1.2.3>'
|
|
16
|
-
expect(k.bar.inspect).to eq '<ActiveAdmin::Dependency::Matcher for (missing)>'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe '`?`' do
|
|
20
|
-
it 'base' do
|
|
21
|
-
expect(k.foo?).to eq true
|
|
22
|
-
expect(k.bar?).to eq false
|
|
23
|
-
end
|
|
24
|
-
it '=' do
|
|
25
|
-
expect(k.foo? '= 1.2.3').to eq true
|
|
26
|
-
expect(k.foo? '= 1').to eq false
|
|
27
|
-
end
|
|
28
|
-
it '>' do
|
|
29
|
-
expect(k.foo? '> 1').to eq true
|
|
30
|
-
expect(k.foo? '> 2').to eq false
|
|
31
|
-
end
|
|
32
|
-
it '<' do
|
|
33
|
-
expect(k.foo? '< 2').to eq true
|
|
34
|
-
expect(k.foo? '< 1').to eq false
|
|
35
|
-
end
|
|
36
|
-
it '>=' do
|
|
37
|
-
expect(k.foo? '>= 1.2.3').to eq true
|
|
38
|
-
expect(k.foo? '>= 1.2.2').to eq true
|
|
39
|
-
expect(k.foo? '>= 1.2.4').to eq false
|
|
40
|
-
end
|
|
41
|
-
it '<=' do
|
|
42
|
-
expect(k.foo? '<= 1.2.3').to eq true
|
|
43
|
-
expect(k.foo? '<= 1.2.4').to eq true
|
|
44
|
-
expect(k.foo? '<= 1.2.2').to eq false
|
|
45
|
-
end
|
|
46
|
-
it '~>' do
|
|
47
|
-
expect(k.foo? '~> 1.2.0').to eq true
|
|
48
|
-
expect(k.foo? '~> 1.1').to eq true
|
|
49
|
-
expect(k.foo? '~> 1.2.4').to eq false
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
describe '`!`' do
|
|
54
|
-
it 'raises an error if requirement not met' do
|
|
55
|
-
expect{ k.foo! '5' }.to raise_error ActiveAdmin::DependencyError,
|
|
56
|
-
'You provided foo 1.2.3 but we need: 5.'
|
|
57
|
-
end
|
|
58
|
-
it 'accepts multiple arguments' do
|
|
59
|
-
expect{ k.foo! '> 1', '< 1.2' }.to raise_error ActiveAdmin::DependencyError,
|
|
60
|
-
'You provided foo 1.2.3 but we need: > 1, < 1.2.'
|
|
61
|
-
end
|
|
62
|
-
it 'raises an error if not provided' do
|
|
63
|
-
expect{ k.bar! }.to raise_error ActiveAdmin::DependencyError,
|
|
64
|
-
'To use bar you need to specify it in your Gemfile.'
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe '[]' do
|
|
70
|
-
before do
|
|
71
|
-
allow(Gem).to receive(:loaded_specs)
|
|
72
|
-
.and_return 'a-b' => Gem::Specification.new('a-b', '1.2.3')
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it 'allows access to gems with an arbitrary name' do
|
|
76
|
-
expect(k['a-b']).to be_a ActiveAdmin::Dependency::Matcher
|
|
77
|
-
expect(k['a-b'].inspect).to eq '<ActiveAdmin::Dependency::Matcher for a-b 1.2.3>'
|
|
78
|
-
expect(k['c-d'].inspect).to eq '<ActiveAdmin::Dependency::Matcher for (missing)>'
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
# Note: more extensive tests for match? and match! are above.
|
|
82
|
-
|
|
83
|
-
it 'match?' do
|
|
84
|
-
expect(k['a-b'].match?).to eq true
|
|
85
|
-
expect(k['a-b'].match? '1.2.3').to eq true
|
|
86
|
-
expect(k['b-c'].match?).to eq false
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'match!' do
|
|
90
|
-
expect(k['a-b'].match!).to eq nil
|
|
91
|
-
expect(k['a-b'].match! '1.2.3').to eq nil
|
|
92
|
-
|
|
93
|
-
expect{ k['a-b'].match! '2.5' }.to raise_error ActiveAdmin::DependencyError,
|
|
94
|
-
'You provided a-b 1.2.3 but we need: 2.5.'
|
|
95
|
-
|
|
96
|
-
expect{ k['b-c'].match! }.to raise_error ActiveAdmin::DependencyError,
|
|
97
|
-
'To use b-c you need to specify it in your Gemfile.'
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# Note: Ruby comparison operators are separate from the `foo? '> 1'` syntax
|
|
101
|
-
|
|
102
|
-
describe 'Ruby comparison syntax' do
|
|
103
|
-
|
|
104
|
-
it '==' do
|
|
105
|
-
expect(k['a-b'] == '1.2.3').to eq true
|
|
106
|
-
expect(k['a-b'] == '1.2').to eq false
|
|
107
|
-
expect(k['a-b'] == 1).to eq false
|
|
108
|
-
end
|
|
109
|
-
it '>' do
|
|
110
|
-
expect(k['a-b'] > 1).to eq true
|
|
111
|
-
expect(k['a-b'] > 2).to eq false
|
|
112
|
-
end
|
|
113
|
-
it '<' do
|
|
114
|
-
expect(k['a-b'] < 2).to eq true
|
|
115
|
-
expect(k['a-b'] < 1).to eq false
|
|
116
|
-
end
|
|
117
|
-
it '>=' do
|
|
118
|
-
expect(k['a-b'] >= '1.2.3').to eq true
|
|
119
|
-
expect(k['a-b'] >= '1.2.2').to eq true
|
|
120
|
-
expect(k['a-b'] >= '1.2.4').to eq false
|
|
121
|
-
end
|
|
122
|
-
it '<=' do
|
|
123
|
-
expect(k['a-b'] <= '1.2.3').to eq true
|
|
124
|
-
expect(k['a-b'] <= '1.2.4').to eq true
|
|
125
|
-
expect(k['a-b'] <= '1.2.2').to eq false
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
it 'throws a custom error if the gem is missing' do
|
|
129
|
-
expect{ k['b-c'] < 23 }.to raise_error ActiveAdmin::DependencyError,
|
|
130
|
-
'To use b-c you need to specify it in your Gemfile.'
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
end
|
data/spec/unit/devise_spec.rb
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveAdmin::Devise::Controller do
|
|
4
|
-
|
|
5
|
-
let(:controller_class) do
|
|
6
|
-
klass = Class.new do
|
|
7
|
-
def self.layout(*); end
|
|
8
|
-
def self.helper(*); end
|
|
9
|
-
end
|
|
10
|
-
klass.send(:include, ActiveAdmin::Devise::Controller)
|
|
11
|
-
klass
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
let(:controller) { controller_class.new }
|
|
15
|
-
let(:action_controller_config) { Rails.configuration.action_controller }
|
|
16
|
-
|
|
17
|
-
def with_temp_relative_url_root(relative_url_root)
|
|
18
|
-
previous_relative_url_root = action_controller_config[:relative_url_root]
|
|
19
|
-
action_controller_config[:relative_url_root] = relative_url_root
|
|
20
|
-
|
|
21
|
-
yield
|
|
22
|
-
ensure
|
|
23
|
-
action_controller_config[:relative_url_root] = previous_relative_url_root
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
context 'with a RAILS_RELATIVE_URL_ROOT set' do
|
|
27
|
-
|
|
28
|
-
around do |example|
|
|
29
|
-
with_temp_relative_url_root('/foo') { example.call }
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "should set the root path to the default namespace" do
|
|
33
|
-
expect(controller.root_path).to eq "/foo/admin"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it "should set the root path to '/' when no default namespace" do
|
|
37
|
-
allow(ActiveAdmin.application).to receive(:default_namespace).and_return(false)
|
|
38
|
-
expect(controller.root_path).to eq "/foo/"
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
context 'without a RAILS_RELATIVE_URL_ROOT set' do
|
|
44
|
-
|
|
45
|
-
around do |example|
|
|
46
|
-
with_temp_relative_url_root(nil) { example.call }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
it "should set the root path to the default namespace" do
|
|
50
|
-
expect(controller.root_path).to eq "/admin"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should set the root path to '/' when no default namespace" do
|
|
54
|
-
allow(ActiveAdmin.application).to receive(:default_namespace).and_return(false)
|
|
55
|
-
expect(controller.root_path).to eq "/"
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
context "within a scoped route" do
|
|
61
|
-
|
|
62
|
-
SCOPE = '/aa_scoped'
|
|
63
|
-
|
|
64
|
-
before do
|
|
65
|
-
# Remove existing routes
|
|
66
|
-
routes = Rails.application.routes
|
|
67
|
-
routes.clear!
|
|
68
|
-
|
|
69
|
-
# Add scoped routes
|
|
70
|
-
routes.draw do
|
|
71
|
-
scope path: SCOPE do
|
|
72
|
-
ActiveAdmin.routes(self)
|
|
73
|
-
devise_for :admin_users, ActiveAdmin::Devise.config
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
after do
|
|
79
|
-
# Resume default routes
|
|
80
|
-
reload_routes!
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "should include scope path in root_path" do
|
|
84
|
-
expect(controller.root_path).to eq "#{SCOPE}/admin"
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
describe "#config" do
|
|
90
|
-
let(:config) { ActiveAdmin::Devise.config }
|
|
91
|
-
|
|
92
|
-
describe ":sign_out_via option" do
|
|
93
|
-
it "should contain the application.logout_link_method" do
|
|
94
|
-
expect(::Devise).to receive(:sign_out_via).and_return(:delete)
|
|
95
|
-
expect(ActiveAdmin.application).to receive(:logout_link_method).and_return(:get)
|
|
96
|
-
|
|
97
|
-
expect(config[:sign_out_via]).to include(:get)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "should contain Devise's logout_via_method(s)" do
|
|
101
|
-
expect(::Devise).to receive(:sign_out_via).and_return([:delete, :post])
|
|
102
|
-
expect(ActiveAdmin.application).to receive(:logout_link_method).and_return(:get)
|
|
103
|
-
|
|
104
|
-
expect(config[:sign_out_via]).to eq [:delete, :post, :get]
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
end # describe ":sign_out_via option"
|
|
108
|
-
end # describe "#config"
|
|
109
|
-
|
|
110
|
-
end
|
data/spec/unit/dsl_spec.rb
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
module MockModuleToInclude
|
|
4
|
-
def self.included(dsl)
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
RSpec.describe ActiveAdmin::DSL do
|
|
9
|
-
|
|
10
|
-
let(:application) { ActiveAdmin::Application.new }
|
|
11
|
-
let(:namespace) { ActiveAdmin::Namespace.new application, :admin }
|
|
12
|
-
let(:resource_config) { namespace.register Post }
|
|
13
|
-
let(:dsl){ ActiveAdmin::DSL.new(resource_config) }
|
|
14
|
-
|
|
15
|
-
describe "#include" do
|
|
16
|
-
|
|
17
|
-
it "should call the included class method on the module that is included" do
|
|
18
|
-
expect(MockModuleToInclude).to receive(:included).with(dsl)
|
|
19
|
-
dsl.run_registration_block do
|
|
20
|
-
include MockModuleToInclude
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
describe '#action_item' do
|
|
27
|
-
before do
|
|
28
|
-
@default_items_count = resource_config.action_items.size
|
|
29
|
-
|
|
30
|
-
dsl.run_registration_block do
|
|
31
|
-
action_item :awesome, only: :show do
|
|
32
|
-
"Awesome ActionItem"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "adds action_item to the action_items of config" do
|
|
38
|
-
expect(resource_config.action_items.size).to eq(@default_items_count + 1)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context 'DEPRECATED: when used without a name' do
|
|
42
|
-
it "is configured for only the show action" do
|
|
43
|
-
expect(ActiveAdmin::Deprecation).to receive(:warn).with(instance_of(String))
|
|
44
|
-
|
|
45
|
-
dsl.run_registration_block do
|
|
46
|
-
action_item only: :edit do
|
|
47
|
-
"Awesome ActionItem"
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
item = resource_config.action_items.last
|
|
52
|
-
expect(item.display_on?(:edit)).to be true
|
|
53
|
-
expect(item.display_on?(:index)).to be false
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
describe "#menu" do
|
|
59
|
-
|
|
60
|
-
it "should set the menu_item_options on the configuration" do
|
|
61
|
-
expect(resource_config).to receive(:menu_item_options=).with({parent: "Admin"})
|
|
62
|
-
dsl.run_registration_block do
|
|
63
|
-
menu parent: "Admin"
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe "#navigation_menu" do
|
|
70
|
-
|
|
71
|
-
it "should set the navigation_menu_name on the configuration" do
|
|
72
|
-
expect(resource_config).to receive(:navigation_menu_name=).with(:admin)
|
|
73
|
-
dsl.run_registration_block do
|
|
74
|
-
navigation_menu :admin
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should accept a block" do
|
|
79
|
-
dsl = ActiveAdmin::DSL.new(resource_config)
|
|
80
|
-
dsl.run_registration_block do
|
|
81
|
-
navigation_menu { :dynamic_menu }
|
|
82
|
-
end
|
|
83
|
-
expect(resource_config.navigation_menu_name).to eq :dynamic_menu
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
describe "#sidebar" do
|
|
89
|
-
|
|
90
|
-
before do
|
|
91
|
-
dsl.config.sidebar_sections << ActiveAdmin::SidebarSection.new(:email)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it "add sidebar_section to the sidebar_sections of config" do
|
|
95
|
-
dsl.run_registration_block do
|
|
96
|
-
sidebar :help
|
|
97
|
-
end
|
|
98
|
-
expect(dsl.config.sidebar_sections.map(&:name)).to match_array ['filters', 'Search status:', 'email', 'help']
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
describe "#batch_action" do
|
|
104
|
-
it "should add a batch action by symbol" do
|
|
105
|
-
dsl.run_registration_block do
|
|
106
|
-
config.batch_actions = true
|
|
107
|
-
batch_action :foo
|
|
108
|
-
end
|
|
109
|
-
expect(resource_config.batch_actions.map(&:sym)).to eq [:foo, :destroy]
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should add a batch action by title" do
|
|
113
|
-
dsl.run_registration_block do
|
|
114
|
-
config.batch_actions = true
|
|
115
|
-
batch_action "foo bar"
|
|
116
|
-
end
|
|
117
|
-
expect(resource_config.batch_actions.map(&:sym)).to eq [:foo_bar, :destroy]
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
require 'rails_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveAdmin::Filters::ActiveFilter do
|
|
4
|
-
|
|
5
|
-
let(:namespace) do
|
|
6
|
-
ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
let(:resource) do
|
|
10
|
-
namespace.register(Post)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
let(:user){ User.create! first_name: "John", last_name: "Doe" }
|
|
14
|
-
let(:category){ Category.create! name: "Category" }
|
|
15
|
-
let(:post){ Post.create! title: "Hello World", category: category, author: user }
|
|
16
|
-
|
|
17
|
-
let(:search) do
|
|
18
|
-
Post.ransack(title_equals: post.title)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
let(:condition) do
|
|
22
|
-
search.conditions[0]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
subject do
|
|
26
|
-
ActiveAdmin::Filters::ActiveFilter.new(resource, condition)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'should have valid values' do
|
|
30
|
-
expect(subject.values).to eq([post.title])
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it 'should have valid label' do
|
|
34
|
-
expect(subject.label).to eq("Title equals")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'should pick predicate name translation' do
|
|
38
|
-
expect(subject.predicate_name).to eq(I18n.t("active_admin.filters.predicates.equals"))
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context 'search by belongs_to association' do
|
|
42
|
-
let(:search) do
|
|
43
|
-
Post.ransack(custom_category_id_eq: category.id)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it 'should have valid values' do
|
|
47
|
-
expect(subject.values[0]).to be_a(Category)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it 'should have valid label' do
|
|
51
|
-
expect(subject.label).to eq("Category equals")
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'should pick predicate name translation' do
|
|
55
|
-
expect(subject.predicate_name).to eq(Ransack::Translate.predicate('eq'))
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
context 'search by polymorphic association' do
|
|
61
|
-
let(:resource) do
|
|
62
|
-
namespace.register(ActiveAdmin::Comment)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
let(:search) do
|
|
66
|
-
ActiveAdmin::Comment.ransack(resource_id_eq: post.id, resource_type_eq: post.class.to_s)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
context 'id filter' do
|
|
70
|
-
let(:condition) do
|
|
71
|
-
search.conditions[0]
|
|
72
|
-
end
|
|
73
|
-
it 'should have valid values' do
|
|
74
|
-
expect(subject.values[0]).to eq(post.id)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it 'should have valid label' do
|
|
78
|
-
expect(subject.label).to eq("Resource equals")
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
context 'type filter' do
|
|
83
|
-
let(:condition) do
|
|
84
|
-
search.conditions[1]
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it 'should have valid values' do
|
|
88
|
-
expect(subject.values[0]).to eq(post.class.to_s)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it 'should have valid label' do
|
|
92
|
-
expect(subject.label).to eq("Resource type equals")
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context 'search by has many association' do
|
|
98
|
-
let(:resource) do
|
|
99
|
-
namespace.register(Category)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
let(:search) do
|
|
103
|
-
Category.ransack(posts_id_eq: post.id)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it 'should have valid values' do
|
|
107
|
-
expect(subject.values[0]).to be_a(Post)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it 'should have valid label' do
|
|
111
|
-
expect(subject.label).to eq("Post equals")
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
context 'search by has many through association' do
|
|
115
|
-
let(:resource) do
|
|
116
|
-
namespace.register(User)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
let(:search) do
|
|
120
|
-
User.ransack(posts_category_id_eq: category.id)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it 'should have valid values' do
|
|
124
|
-
expect(subject.values[0]).to be_a(Category)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
it 'should have valid label' do
|
|
128
|
-
expect(subject.label).to eq("Category equals")
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
context 'search has no matching records' do
|
|
136
|
-
let(:search) { Post.ransack(author_id_eq: "foo") }
|
|
137
|
-
|
|
138
|
-
it 'should not produce and error' do
|
|
139
|
-
expect { subject.values }.not_to raise_error
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
it 'should return an enumerable' do
|
|
143
|
-
expect(subject.values).to respond_to(:map)
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
context 'a label is set on the filter' do
|
|
148
|
-
it 'should use the filter label as the label prefix' do
|
|
149
|
-
label = "#{user.first_name}'s Post Title"
|
|
150
|
-
resource.add_filter(:title, label: label)
|
|
151
|
-
|
|
152
|
-
expect(subject.label).to eq ("#{label} equals")
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
context "the association uses a different primary_key than the related class' primary_key" do
|
|
157
|
-
let (:resource_klass) {
|
|
158
|
-
Class.new(Post) do
|
|
159
|
-
belongs_to :kategory, class_name: "Category", primary_key: :name, foreign_key: :title
|
|
160
|
-
|
|
161
|
-
def self.name
|
|
162
|
-
"SuperPost"
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
let(:resource) do
|
|
168
|
-
namespace.register(resource_klass)
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
let(:user){ User.create! first_name: "John", last_name: "Doe" }
|
|
172
|
-
let!(:category){ Category.create! name: "Category" }
|
|
173
|
-
|
|
174
|
-
let(:post){ resource_klass.create! title: "Category", author: user }
|
|
175
|
-
|
|
176
|
-
let(:search) do
|
|
177
|
-
resource_klass.ransack(title_equals: post.title)
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
it "should use the association's primary key to find the associated record" do
|
|
181
|
-
allow(ActiveSupport::Dependencies).to receive(:constantize).with("::SuperPost").and_return(resource_klass)
|
|
182
|
-
|
|
183
|
-
resource.add_filter(:kategory)
|
|
184
|
-
|
|
185
|
-
expect(subject.values.first).to eq category
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
end
|