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,49 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::IndexList do
|
4
|
-
|
5
|
-
describe "#index_list_renderer" do
|
6
|
-
|
7
|
-
let(:index_classes) { [ActiveAdmin::Views::IndexAsTable, ActiveAdmin::Views::IndexAsBlock] }
|
8
|
-
|
9
|
-
let(:collection) {
|
10
|
-
Post.create(title: 'First Post', starred: true)
|
11
|
-
Post.where(nil)
|
12
|
-
}
|
13
|
-
|
14
|
-
let(:helpers) do
|
15
|
-
helpers = mock_action_view
|
16
|
-
allow(helpers).to receive(:url_for) { |url| "/?#{ url.to_query }" }
|
17
|
-
allow(helpers.request).to receive(:query_parameters).and_return as: "table", q: { title_contains: "terms" }
|
18
|
-
allow(helpers).to receive(:params).and_return(ActionController::Parameters.new(as: "table", q: { title_contains: "terms" }))
|
19
|
-
allow(helpers).to receive(:collection).and_return(collection)
|
20
|
-
helpers
|
21
|
-
end
|
22
|
-
|
23
|
-
subject do
|
24
|
-
render_arbre_component({index_classes: index_classes}, helpers) do
|
25
|
-
index_list_renderer(index_classes)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe '#tag_name' do
|
30
|
-
subject { super().tag_name }
|
31
|
-
it { is_expected.to eq 'ul'}
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should contain the names of available indexes in links" do
|
35
|
-
a_tags = subject.find_by_tag("a")
|
36
|
-
expect(a_tags.size).to eq 2
|
37
|
-
expect(a_tags.first.to_s).to include("Table")
|
38
|
-
expect(a_tags.last.to_s).to include("List")
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should maintain index filter parameters" do
|
42
|
-
a_tags = subject.find_by_tag("a")
|
43
|
-
expect(a_tags.first.attributes[:href])
|
44
|
-
.to eq("/?#{ { as: "table", q: { title_contains: "terms" } }.to_query }")
|
45
|
-
expect(a_tags.last.attributes[:href])
|
46
|
-
.to eq("/?#{ { as: "block", q: { title_contains: "terms" } }.to_query }")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,127 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::IndexAsTable::IndexTableFor do
|
4
|
-
describe 'creating with the dsl' do
|
5
|
-
let(:collection) do
|
6
|
-
[Post.new(title: 'First Post', starred: true)]
|
7
|
-
end
|
8
|
-
let(:active_admin_config) do
|
9
|
-
namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
|
10
|
-
namespace.batch_actions = [ActiveAdmin::BatchAction.new(:flag, 'Flag') {}]
|
11
|
-
namespace
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:assigns) do
|
15
|
-
{
|
16
|
-
collection: collection,
|
17
|
-
active_admin_config: active_admin_config
|
18
|
-
}
|
19
|
-
end
|
20
|
-
let(:helpers) { mock_action_view }
|
21
|
-
|
22
|
-
context 'when creating a selectable column' do
|
23
|
-
let(:table) do
|
24
|
-
render_arbre_component assigns, helpers do
|
25
|
-
insert_tag(ActiveAdmin::Views::IndexAsTable::IndexTableFor, collection, {sortable: true}) do
|
26
|
-
selectable_column
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'creates a table header based on the selectable column' do
|
32
|
-
let(:header) do
|
33
|
-
table.find_by_tag('th').first
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'with selectable column class name' do
|
37
|
-
expect(header.attributes[:class]).to include 'col-selectable'
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'not sortable' do
|
41
|
-
expect(header.attributes[:class]).not_to include 'sortable'
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'when creating an index column' do
|
47
|
-
let(:base_collection) do
|
48
|
-
posts = [
|
49
|
-
Post.new(title: 'First Post', starred: true),
|
50
|
-
Post.new(title: 'Second Post', starred: true),
|
51
|
-
Post.new(title: 'Third Post', starred: true),
|
52
|
-
Post.new(title: 'Fourth Post', starred: true)
|
53
|
-
]
|
54
|
-
Kaminari.paginate_array(posts, limit: 2)
|
55
|
-
end
|
56
|
-
let(:collection) do
|
57
|
-
base_collection.page(1)
|
58
|
-
end
|
59
|
-
|
60
|
-
let(:table) do
|
61
|
-
render_arbre_component assigns, helpers do
|
62
|
-
insert_tag(ActiveAdmin::Views::IndexAsTable::IndexTableFor, collection, {sortable: true}) do
|
63
|
-
index_column
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'creates a table header based on the index column' do
|
69
|
-
let(:header) do
|
70
|
-
table.find_by_tag('th').first
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'with index column class name' do
|
74
|
-
expect(header.attributes[:class]).to include 'col-index'
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'not sortable' do
|
78
|
-
expect(header.attributes[:class]).not_to include 'sortable'
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
context 'verifying the indices for the rows' do
|
83
|
-
let(:index_values) do
|
84
|
-
table.find_by_tag('tr').map do |row|
|
85
|
-
next unless row.find_by_tag('td').first
|
86
|
-
row.find_by_tag('td').first.content
|
87
|
-
end.compact
|
88
|
-
end
|
89
|
-
|
90
|
-
context 'viewing the first page' do
|
91
|
-
it 'shows the correct indices' do
|
92
|
-
expect(index_values).to eq(['1', '2'])
|
93
|
-
end
|
94
|
-
end
|
95
|
-
context 'viewing the second page' do
|
96
|
-
let(:collection) do
|
97
|
-
base_collection.page(2)
|
98
|
-
end
|
99
|
-
it 'shows the correct indices' do
|
100
|
-
expect(index_values).to eq(['3', '4'])
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
context 'allows for zero-based indices' do
|
106
|
-
let(:table) do
|
107
|
-
render_arbre_component assigns, helpers do
|
108
|
-
insert_tag(ActiveAdmin::Views::IndexAsTable::IndexTableFor, collection, {sortable: true}) do
|
109
|
-
index_column(0)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
let(:index_values) do
|
115
|
-
table.find_by_tag('tr').map do |row|
|
116
|
-
next unless row.find_by_tag('td').first
|
117
|
-
row.find_by_tag('td').first.content
|
118
|
-
end.compact
|
119
|
-
end
|
120
|
-
|
121
|
-
it 'shows the correct indices' do
|
122
|
-
expect(index_values).to eq(['0', '1'])
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
@@ -1,249 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::PaginatedCollection do
|
4
|
-
describe "creating with the dsl" do
|
5
|
-
|
6
|
-
before :all do
|
7
|
-
load_defaults!
|
8
|
-
reload_routes!
|
9
|
-
end
|
10
|
-
|
11
|
-
let(:view) do
|
12
|
-
view = mock_action_view
|
13
|
-
allow(view.request).to receive(:query_parameters).and_return page: '1'
|
14
|
-
allow(view.request).to receive(:path_parameters).and_return controller: 'admin/posts', action: 'index'
|
15
|
-
view
|
16
|
-
end
|
17
|
-
|
18
|
-
# Helper to render paginated collections within an arbre context
|
19
|
-
def paginated_collection(*args)
|
20
|
-
render_arbre_component({paginated_collection_args: args}, view) do
|
21
|
-
paginated_collection(*paginated_collection_args)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
let(:collection) do
|
26
|
-
posts = [Post.new(title: "First Post"), Post.new(title: "Second Post"), Post.new(title: "Third Post")]
|
27
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
28
|
-
end
|
29
|
-
|
30
|
-
before do
|
31
|
-
allow(collection).to receive(:except) { collection } unless collection.respond_to? :except
|
32
|
-
allow(collection).to receive(:group_values) { [] } unless collection.respond_to? :group_values
|
33
|
-
end
|
34
|
-
|
35
|
-
let(:pagination){ paginated_collection collection }
|
36
|
-
|
37
|
-
it "should set :collection as the passed in collection" do
|
38
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> posts"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should raise error if collection has no pagination scope" do
|
42
|
-
expect {
|
43
|
-
paginated_collection([Post.new, Post.new])
|
44
|
-
}.to raise_error(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'should preserve custom query params' do
|
48
|
-
allow(view.request).to receive(:query_parameters).and_return page: '1', something: 'else'
|
49
|
-
pagination_content = pagination.content
|
50
|
-
expect(pagination_content).to include '/admin/posts.csv?page=1&something=else'
|
51
|
-
expect(pagination_content).to include '/admin/posts.xml?page=1&something=else'
|
52
|
-
expect(pagination_content).to include '/admin/posts.json?page=1&something=else'
|
53
|
-
end
|
54
|
-
|
55
|
-
context "when specifying :param_name option" do
|
56
|
-
let(:collection) do
|
57
|
-
posts = 10.times.map{ Post.new }
|
58
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
59
|
-
end
|
60
|
-
|
61
|
-
let(:pagination) { paginated_collection(collection, param_name: :post_page) }
|
62
|
-
|
63
|
-
it "should customize the page number parameter in pagination links" do
|
64
|
-
expect(pagination.children.last.content).to match(/\/admin\/posts\?post_page=2/)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context "when specifying :params option" do
|
69
|
-
let(:collection) do
|
70
|
-
posts = 10.times.map{ Post.new }
|
71
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
72
|
-
end
|
73
|
-
|
74
|
-
let(:pagination) { paginated_collection(collection, param_name: :post_page, params: { anchor: 'here' }) }
|
75
|
-
|
76
|
-
it "should pass it through to Kaminari" do
|
77
|
-
expect(pagination.children.last.content).to match(/\/admin\/posts\?post_page=2#here/)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context "when specifying download_links: false option" do
|
82
|
-
let(:collection) do
|
83
|
-
posts = 10.times.map{ Post.new }
|
84
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
85
|
-
end
|
86
|
-
|
87
|
-
let(:pagination) { paginated_collection(collection, download_links: false) }
|
88
|
-
|
89
|
-
it "should not render download links" do
|
90
|
-
expect(pagination.find_by_tag('div').last.content).to_not match(/Download:/)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
context "when specifying :entry_name option with a single item" do
|
95
|
-
let(:collection) do
|
96
|
-
posts = [Post.new]
|
97
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
98
|
-
end
|
99
|
-
|
100
|
-
let(:pagination) { paginated_collection(collection, entry_name: "message") }
|
101
|
-
|
102
|
-
it "should use :entry_name as the collection name" do
|
103
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> message"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
context "when specifying :entry_name option with multiple items" do
|
108
|
-
let(:pagination) { paginated_collection(collection, entry_name: "message") }
|
109
|
-
|
110
|
-
it "should use :entry_name as the collection name" do
|
111
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> messages"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
context "when specifying :entry_name and :entries_name option with a single item" do
|
116
|
-
let(:collection) do
|
117
|
-
posts = [Post.new]
|
118
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
119
|
-
end
|
120
|
-
|
121
|
-
let(:pagination) { paginated_collection(collection, entry_name: "singular", entries_name: "plural") }
|
122
|
-
|
123
|
-
it "should use :entry_name as the collection name" do
|
124
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> singular"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
context "when specifying :entry_name and :entries_name option with a multiple items" do
|
129
|
-
let(:pagination) { paginated_collection(collection, entry_name: "singular", entries_name: "plural") }
|
130
|
-
|
131
|
-
it "should use :entries_name as the collection name" do
|
132
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> plural"
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
context "when omitting :entry_name with a single item" do
|
137
|
-
let(:collection) do
|
138
|
-
posts = [Post.new]
|
139
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should use 'post' as the collection name when there is no I18n translation" do
|
143
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> post"
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should use 'Singular' as the collection name when there is an I18n translation" do
|
147
|
-
allow(I18n).to receive(:translate) { "Singular" }
|
148
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> Singular"
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
context "when omitting :entry_name with multiple items" do
|
153
|
-
it "should use 'posts' as the collection name when there is no I18n translation" do
|
154
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> posts"
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should use 'Plural' as the collection name when there is an I18n translation" do
|
158
|
-
allow(I18n).to receive(:translate) { "Plural" }
|
159
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> Plural"
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
context "when specifying an empty collection" do
|
164
|
-
let(:collection) do
|
165
|
-
posts = []
|
166
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
167
|
-
end
|
168
|
-
|
169
|
-
it "should display 'No entries found'" do
|
170
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "No entries found"
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
context "when collection comes from find with GROUP BY" do
|
175
|
-
let(:collection) do
|
176
|
-
%w{Foo Foo Bar}.each {|title| Post.create(title: title) }
|
177
|
-
Post.select(:title).group(:title).page(1).per(5)
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should display proper message (including number and not hash)" do
|
181
|
-
expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 2</b> posts"
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
context "when collection with many pages comes from find with GROUP BY" do
|
186
|
-
let(:collection) do
|
187
|
-
%w{Foo Foo Bar Baz}.each {|title| Post.create(title: title) }
|
188
|
-
Post.select(:title).group(:title).page(1).per(2)
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should display proper message (including number and not hash)" do
|
192
|
-
expect(pagination.find_by_class('pagination_information').first.content.gsub(' ', ' ')).
|
193
|
-
to eq "Displaying posts <b>1 - 2</b> of <b>3</b> in total"
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context "when viewing the last page of a collection that has multiple pages" do
|
198
|
-
let(:collection) do
|
199
|
-
Kaminari.paginate_array([Post.new] * 81).page(3).per(30)
|
200
|
-
end
|
201
|
-
|
202
|
-
it "should show the proper item counts" do
|
203
|
-
expect(pagination.find_by_class('pagination_information').first.content.gsub(' ', ' ')).
|
204
|
-
to eq "Displaying posts <b>61 - 81</b> of <b>81</b> in total"
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
context "with :pagination_total" do
|
209
|
-
let(:collection) do
|
210
|
-
Kaminari.paginate_array([Post.new] * 256).page(1).per(30)
|
211
|
-
end
|
212
|
-
|
213
|
-
describe "set to false" do
|
214
|
-
it "should not show the total item counts" do
|
215
|
-
expect(collection).not_to receive(:total_pages)
|
216
|
-
pagination = paginated_collection(collection, pagination_total: false)
|
217
|
-
info = pagination.find_by_class('pagination_information').first.content.gsub(' ', ' ')
|
218
|
-
expect(info).to eq "Displaying posts <b>1 - 30</b>"
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
describe "set to true" do
|
223
|
-
let(:pagination) { paginated_collection(collection, pagination_total: true) }
|
224
|
-
|
225
|
-
it "should show the total item counts" do
|
226
|
-
info = pagination.find_by_class('pagination_information').first.content.gsub(' ', ' ')
|
227
|
-
expect(info).to eq "Displaying posts <b>1 - 30</b> of <b>256</b> in total"
|
228
|
-
end
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
context "when specifying per_page: array option" do
|
233
|
-
let(:collection) do
|
234
|
-
posts = 10.times.map { Post.new }
|
235
|
-
Kaminari.paginate_array(posts).page(1).per(5)
|
236
|
-
end
|
237
|
-
|
238
|
-
let(:pagination) { paginated_collection(collection, per_page: [1, 2, 3]) }
|
239
|
-
let(:pagination_html) { pagination.find_by_class("pagination_per_page").first }
|
240
|
-
let(:pagination_node) { Capybara.string(pagination_html.to_s) }
|
241
|
-
|
242
|
-
it "should render per_page select tag" do
|
243
|
-
expect(pagination_html.content).to match(/Per page:/)
|
244
|
-
expect(pagination_node).to have_css("select option", count: 3)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
end
|
249
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::Panel do
|
4
|
-
let(:arbre_panel) do
|
5
|
-
render_arbre_component do
|
6
|
-
panel "My Title" do
|
7
|
-
header_action link_to("My Link", "https://www.github.com/activeadmin/activeadmin")
|
8
|
-
span("Hello World")
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
let(:panel_html) { Capybara.string(arbre_panel.to_s) }
|
14
|
-
|
15
|
-
it "should have a title h3" do
|
16
|
-
expect(panel_html).to have_css 'h3', text: "My Title"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should add panel actions to the panel header" do
|
20
|
-
link = panel_html.find('h3 > div.header_action a')
|
21
|
-
expect(link.text).to eq('My Link')
|
22
|
-
expect(link[:href]).to eq("https://www.github.com/activeadmin/activeadmin")
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have a contents div" do
|
26
|
-
expect(panel_html).to have_css 'div.panel_contents'
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should add children to the contents div" do
|
30
|
-
expect(panel_html).to have_css 'div.panel_contents > span', text: "Hello World"
|
31
|
-
end
|
32
|
-
|
33
|
-
context "with html-safe title" do
|
34
|
-
let(:arbre_panel) do
|
35
|
-
title_with_html = %q[Title with <abbr>HTML</abbr>].html_safe
|
36
|
-
render_arbre_component do
|
37
|
-
panel(title_with_html)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should allow a html_safe title" do
|
42
|
-
expect(panel_html).to have_css "h3", text: "Title with HTML"
|
43
|
-
expect(panel_html).to have_css "h3 > abbr", text: "HTML"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "#children?" do
|
48
|
-
let(:arbre_panel) do
|
49
|
-
render_arbre_component do
|
50
|
-
panel("A Panel")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it "returns false if no children have been added to the panel" do
|
55
|
-
expect(arbre_panel.children?).to eq false
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|