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,68 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::SidebarSection do
|
4
|
-
|
5
|
-
let(:options) { {} }
|
6
|
-
|
7
|
-
let(:section) do
|
8
|
-
ActiveAdmin::SidebarSection.new("Help Section", options) do
|
9
|
-
span "Help Me"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
let(:html) do
|
14
|
-
render_arbre_component section: section do
|
15
|
-
sidebar_section(assigns[:section])
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should have a title h3" do
|
20
|
-
expect(html.find_by_tag("h3").first.content).to eq "Help Section"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should have the class of 'sidebar_section'" do
|
24
|
-
expect(html.class_list).to include("sidebar_section")
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should have an id based on the title" do
|
28
|
-
expect(html.id).to eq "help-section_sidebar_section"
|
29
|
-
end
|
30
|
-
|
31
|
-
it "should have a contents div" do
|
32
|
-
expect(html.find_by_tag("div").first.class_list).to include("panel_contents")
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should add children to the contents div" do
|
36
|
-
expect(html.find_by_tag("span").first.parent).to eq html.find_by_tag("div").first
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'with a custom class attribute' do
|
40
|
-
let(:options) { { class: 'custom_class' } }
|
41
|
-
|
42
|
-
it "should have 'custom_class' class" do
|
43
|
-
expect(html.class_list).to include("custom_class")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "with attributes_table for resource" do
|
48
|
-
let(:post) { Post.create!(title: "Testing.") }
|
49
|
-
let(:section) do
|
50
|
-
ActiveAdmin::SidebarSection.new("Summary", options) do
|
51
|
-
attributes_table do
|
52
|
-
row :title
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
let(:assigns) { { resource: post, section: section } }
|
57
|
-
let(:html) do
|
58
|
-
render_arbre_component assigns do
|
59
|
-
sidebar_section(assigns[:section])
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should have table" do
|
64
|
-
expect(html.find_by_tag("th").first.content).to eq "Title"
|
65
|
-
expect(html.find_by_tag("td").first.content).to eq "Testing."
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::SiteTitle do
|
4
|
-
|
5
|
-
let(:helpers){ mock_action_view }
|
6
|
-
|
7
|
-
def build_title(namespace)
|
8
|
-
render_arbre_component({namespace: namespace}, helpers) do
|
9
|
-
insert_tag ActiveAdmin::Views::SiteTitle, assigns[:namespace]
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "when a value" do
|
14
|
-
|
15
|
-
it "renders the string when a string is passed in" do
|
16
|
-
namespace = double site_title: "Hello World",
|
17
|
-
site_title_image: nil,
|
18
|
-
site_title_link: nil
|
19
|
-
|
20
|
-
site_title = build_title(namespace)
|
21
|
-
expect(site_title.content).to eq "Hello World"
|
22
|
-
end
|
23
|
-
|
24
|
-
it "renders the return value of a method when a symbol" do
|
25
|
-
expect(helpers).to receive(:hello_world).and_return("Hello World")
|
26
|
-
|
27
|
-
namespace = double site_title: :hello_world,
|
28
|
-
site_title_image: nil,
|
29
|
-
site_title_link: nil
|
30
|
-
|
31
|
-
site_title = build_title(namespace)
|
32
|
-
expect(site_title.content).to eq "Hello World"
|
33
|
-
end
|
34
|
-
|
35
|
-
it "renders the return value of a proc" do
|
36
|
-
namespace = double site_title: proc{ "Hello World" },
|
37
|
-
site_title_image: nil,
|
38
|
-
site_title_link: nil
|
39
|
-
|
40
|
-
site_title = build_title(namespace)
|
41
|
-
expect(site_title.content).to eq "Hello World"
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
context "when an image" do
|
47
|
-
|
48
|
-
it "renders the string when a string is passed in" do
|
49
|
-
expect(helpers).to receive(:image_tag).
|
50
|
-
with("an/image.png", alt: nil, id: "site_title_image").
|
51
|
-
and_return '<img src="/assets/an/image.png" />'.html_safe
|
52
|
-
|
53
|
-
namespace = double site_title: nil,
|
54
|
-
site_title_image: "an/image.png",
|
55
|
-
site_title_link: nil
|
56
|
-
|
57
|
-
site_title = build_title(namespace)
|
58
|
-
expect(site_title.content.strip).to eq '<img src="/assets/an/image.png" />'
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
context "when a link is present" do
|
64
|
-
|
65
|
-
it "renders the string when a string is passed in" do
|
66
|
-
namespace = double site_title: "Hello World",
|
67
|
-
site_title_image: nil,
|
68
|
-
site_title_link: "/"
|
69
|
-
|
70
|
-
site_title = build_title(namespace)
|
71
|
-
expect(site_title.content).to eq '<a href="/">Hello World</a>'
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
@@ -1,265 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::StatusTag do
|
4
|
-
|
5
|
-
describe "#status_tag" do
|
6
|
-
|
7
|
-
# Helper method to build StatusTag objects in an Arbre context
|
8
|
-
def status_tag(*args)
|
9
|
-
render_arbre_component(status_tag_args: args) do
|
10
|
-
status_tag(*assigns[:status_tag_args])
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
subject { status_tag(nil) }
|
15
|
-
|
16
|
-
describe '#tag_name' do
|
17
|
-
subject { super().tag_name }
|
18
|
-
it { is_expected.to eq 'span' }
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#class_list' do
|
22
|
-
subject { super().class_list }
|
23
|
-
it { is_expected.to include('status_tag') }
|
24
|
-
end
|
25
|
-
|
26
|
-
context "when status is 'completed'" do
|
27
|
-
subject { status_tag('completed') }
|
28
|
-
|
29
|
-
describe '#tag_name' do
|
30
|
-
subject { super().tag_name }
|
31
|
-
it { is_expected.to eq 'span' }
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#class_list' do
|
35
|
-
subject { super().class_list }
|
36
|
-
it { is_expected.to include('status_tag') }
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '#class_list' do
|
40
|
-
subject { super().class_list }
|
41
|
-
it { is_expected.to include('completed') }
|
42
|
-
end
|
43
|
-
|
44
|
-
describe '#content' do
|
45
|
-
subject { super().content }
|
46
|
-
it { is_expected.to eq 'Completed' }
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when status is 'in_progress'" do
|
51
|
-
subject { status_tag('in_progress') }
|
52
|
-
|
53
|
-
describe '#class_list' do
|
54
|
-
subject { super().class_list }
|
55
|
-
it { is_expected.to include('in_progress') }
|
56
|
-
end
|
57
|
-
|
58
|
-
describe '#content' do
|
59
|
-
subject { super().content }
|
60
|
-
it { is_expected.to eq 'In Progress' }
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context "when status is 'In progress'" do
|
65
|
-
subject { status_tag('In progress') }
|
66
|
-
|
67
|
-
describe '#class_list' do
|
68
|
-
subject { super().class_list }
|
69
|
-
it { is_expected.to include('in_progress') }
|
70
|
-
end
|
71
|
-
|
72
|
-
describe '#content' do
|
73
|
-
subject { super().content }
|
74
|
-
it { is_expected.to eq 'In Progress' }
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "when status is an empty string" do
|
79
|
-
subject { status_tag('') }
|
80
|
-
|
81
|
-
describe '#class_list' do
|
82
|
-
subject { super().class_list }
|
83
|
-
it { is_expected.to include('status_tag') }
|
84
|
-
end
|
85
|
-
|
86
|
-
describe '#content' do
|
87
|
-
subject { super().content }
|
88
|
-
it { is_expected.to eq '' }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "when status is 'false'" do
|
93
|
-
subject { status_tag('false') }
|
94
|
-
|
95
|
-
describe '#class_list' do
|
96
|
-
subject { super().class_list }
|
97
|
-
it { is_expected.to include('status_tag') }
|
98
|
-
end
|
99
|
-
|
100
|
-
describe '#content' do
|
101
|
-
subject { super().content }
|
102
|
-
it { is_expected.to eq('No') }
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
context "when status is false" do
|
107
|
-
subject { status_tag(false) }
|
108
|
-
|
109
|
-
describe '#class_list' do
|
110
|
-
subject { super().class_list }
|
111
|
-
it { is_expected.to include('status_tag') }
|
112
|
-
end
|
113
|
-
|
114
|
-
describe '#content' do
|
115
|
-
subject { super().content }
|
116
|
-
it { is_expected.to eq('No') }
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "when status is nil" do
|
121
|
-
subject { status_tag(nil) }
|
122
|
-
|
123
|
-
describe '#class_list' do
|
124
|
-
subject { super().class_list }
|
125
|
-
it { is_expected.to include('status_tag') }
|
126
|
-
end
|
127
|
-
|
128
|
-
describe '#content' do
|
129
|
-
subject { super().content }
|
130
|
-
it { is_expected.to eq('No') }
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
context "when status is 'Active' and type is :ok" do
|
135
|
-
subject { status_tag('Active', :ok) }
|
136
|
-
|
137
|
-
describe 'is deprecated' do
|
138
|
-
subject { super().class_list }
|
139
|
-
it do
|
140
|
-
expect(ActiveAdmin::Deprecation)
|
141
|
-
.to receive(:warn)
|
142
|
-
.with(<<-MSG.strip_heredoc
|
143
|
-
The `type` parameter has been deprecated. Provide the "ok" type as
|
144
|
-
a class instead. For example, `status_tag(status, :ok, class: "abc")`
|
145
|
-
would change to `status_tag(status, class: "ok abc")`. Also note that
|
146
|
-
the "ok" CSS rule will be removed too, so you'll have to provide
|
147
|
-
the styles yourself. See https://github.com/activeadmin/activeadmin/blob/master/CHANGELOG.md#110-
|
148
|
-
for more information.
|
149
|
-
MSG
|
150
|
-
)
|
151
|
-
is_expected.to include('ok')
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
describe '#class_list' do
|
156
|
-
before { expect(ActiveAdmin::Deprecation).to receive(:warn).once }
|
157
|
-
subject { super().class_list }
|
158
|
-
it { is_expected.to include('status_tag') }
|
159
|
-
end
|
160
|
-
|
161
|
-
describe '#class_list' do
|
162
|
-
before { expect(ActiveAdmin::Deprecation).to receive(:warn).once }
|
163
|
-
subject { super().class_list }
|
164
|
-
it { is_expected.to include('active') }
|
165
|
-
end
|
166
|
-
|
167
|
-
describe '#class_list' do
|
168
|
-
before { expect(ActiveAdmin::Deprecation).to receive(:warn).once }
|
169
|
-
subject { super().class_list }
|
170
|
-
it { is_expected.to include('ok') }
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
context "when status is 'Active' and class is 'ok'" do
|
175
|
-
subject { status_tag('Active', class: 'ok') }
|
176
|
-
|
177
|
-
describe '#class_list' do
|
178
|
-
subject { super().class_list }
|
179
|
-
it { is_expected.to include('status_tag') }
|
180
|
-
end
|
181
|
-
|
182
|
-
describe '#class_list' do
|
183
|
-
subject { super().class_list }
|
184
|
-
it { is_expected.to include('active') }
|
185
|
-
end
|
186
|
-
|
187
|
-
describe '#class_list' do
|
188
|
-
subject { super().class_list }
|
189
|
-
it { is_expected.to include('ok') }
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
context "when status is 'Active' and label is 'on'" do
|
194
|
-
subject { status_tag('Active', label: 'on') }
|
195
|
-
|
196
|
-
describe '#content' do
|
197
|
-
subject { super().content }
|
198
|
-
it { is_expected.to eq 'on' }
|
199
|
-
end
|
200
|
-
|
201
|
-
describe '#class_list' do
|
202
|
-
subject { super().class_list }
|
203
|
-
it { is_expected.to include('status_tag') }
|
204
|
-
end
|
205
|
-
|
206
|
-
describe '#class_list' do
|
207
|
-
subject { super().class_list }
|
208
|
-
it { is_expected.to include('active') }
|
209
|
-
end
|
210
|
-
|
211
|
-
describe '#class_list' do
|
212
|
-
subject { super().class_list }
|
213
|
-
it { is_expected.not_to include('on') }
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
context "when status is 'So useless', class is 'woot awesome' and id is 'useless'" do
|
218
|
-
subject { status_tag('So useless', class: 'woot awesome', id: 'useless') }
|
219
|
-
|
220
|
-
describe '#content' do
|
221
|
-
subject { super().content }
|
222
|
-
it { is_expected.to eq 'So Useless' }
|
223
|
-
end
|
224
|
-
|
225
|
-
describe '#class_list' do
|
226
|
-
subject { super().class_list }
|
227
|
-
it { is_expected.to include('status_tag') }
|
228
|
-
end
|
229
|
-
|
230
|
-
describe '#class_list' do
|
231
|
-
subject { super().class_list }
|
232
|
-
it { is_expected.to include('so_useless') }
|
233
|
-
end
|
234
|
-
|
235
|
-
describe '#class_list' do
|
236
|
-
subject { super().class_list }
|
237
|
-
it { is_expected.to include('woot') }
|
238
|
-
end
|
239
|
-
|
240
|
-
describe '#class_list' do
|
241
|
-
subject { super().class_list }
|
242
|
-
it { is_expected.to include('awesome') }
|
243
|
-
end
|
244
|
-
|
245
|
-
describe '#id' do
|
246
|
-
subject { super().id }
|
247
|
-
it { is_expected.to eq 'useless' }
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
context "when status is set to a Fixnum" do
|
252
|
-
subject { status_tag(42) }
|
253
|
-
|
254
|
-
describe '#content' do
|
255
|
-
subject { super().content }
|
256
|
-
it { is_expected.to eq '42' }
|
257
|
-
end
|
258
|
-
|
259
|
-
describe '#class_list' do
|
260
|
-
subject { super().class_list }
|
261
|
-
it { is_expected.not_to include('42') }
|
262
|
-
end
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
@@ -1,436 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Views::TableFor do
|
4
|
-
describe "creating with the dsl" do
|
5
|
-
|
6
|
-
let(:collection) do
|
7
|
-
[
|
8
|
-
Post.new(title: "First Post", starred: true),
|
9
|
-
Post.new(title: "Second Post"),
|
10
|
-
Post.new(title: "Third Post", starred: false)
|
11
|
-
]
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:assigns){ { collection: collection } }
|
15
|
-
let(:helpers){ mock_action_view }
|
16
|
-
|
17
|
-
context "when creating a column using symbol argument" do
|
18
|
-
let(:table) do
|
19
|
-
render_arbre_component assigns, helpers do
|
20
|
-
table_for(collection, :title)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should create a table header based on the symbol" do
|
25
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should create a table row for each element in the collection" do
|
29
|
-
expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
|
30
|
-
end
|
31
|
-
|
32
|
-
["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
|
33
|
-
it "should create a cell with #{content}" do
|
34
|
-
expect(table.find_by_tag("td")[index].content).to eq content
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when creating many columns using symbol arguments" do
|
40
|
-
let(:table) do
|
41
|
-
render_arbre_component assigns, helpers do
|
42
|
-
table_for(collection, :title, :created_at)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should create a table header based on the symbol" do
|
47
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
48
|
-
expect(table.find_by_tag("th").last.content).to eq "Created At"
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should add a class to each table header based on the col name" do
|
52
|
-
expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
|
53
|
-
expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should create a table row for each element in the collection" do
|
57
|
-
expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should create a cell for each column" do
|
61
|
-
expect(table.find_by_tag("td").size).to eq 6
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should add a class for each cell based on the col name" do
|
65
|
-
expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
|
66
|
-
expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "when creating a column using symbol arguments and another using block" do
|
71
|
-
let(:table) do
|
72
|
-
render_arbre_component assigns, helpers do
|
73
|
-
table_for(collection, :title) do
|
74
|
-
column :created_at
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should create a table header based on the symbol" do
|
80
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
81
|
-
expect(table.find_by_tag("th").last.content).to eq "Created At"
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should add a class to each table header based on the col name" do
|
85
|
-
expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
|
86
|
-
expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
87
|
-
end
|
88
|
-
|
89
|
-
it "should create a table row for each element in the collection" do
|
90
|
-
expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should create a cell for each column" do
|
94
|
-
expect(table.find_by_tag("td").size).to eq 6
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should add a class for each cell based on the col name" do
|
98
|
-
expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
|
99
|
-
expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context "when creating a column with a symbol" do
|
104
|
-
let(:table) do
|
105
|
-
render_arbre_component assigns, helpers do
|
106
|
-
table_for(collection) do
|
107
|
-
column :title
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should create a table header based on the symbol" do
|
113
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should create a table row for each element in the collection" do
|
117
|
-
expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
|
118
|
-
end
|
119
|
-
|
120
|
-
["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
|
121
|
-
it "should create a cell with #{content}" do
|
122
|
-
expect(table.find_by_tag("td")[index].content).to eq content
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context "when creating many columns with symbols" do
|
128
|
-
let(:table) do
|
129
|
-
render_arbre_component assigns, helpers do
|
130
|
-
table_for(collection) do
|
131
|
-
column :title
|
132
|
-
column :created_at
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should create a table header based on the symbol" do
|
138
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
139
|
-
expect(table.find_by_tag("th").last.content).to eq "Created At"
|
140
|
-
end
|
141
|
-
|
142
|
-
it "should add a class to each table header based on the col name" do
|
143
|
-
expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-title"
|
144
|
-
expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
145
|
-
end
|
146
|
-
|
147
|
-
it "should create a table row for each element in the collection" do
|
148
|
-
expect(table.find_by_tag("tr").size).to eq 4 # 1 for head, 3 for rows
|
149
|
-
end
|
150
|
-
|
151
|
-
it "should create a cell for each column" do
|
152
|
-
expect(table.find_by_tag("td").size).to eq 6
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should add a class for each cell based on the col name" do
|
156
|
-
expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-title"
|
157
|
-
expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col col-created_at"
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
context "when creating a column with block content" do
|
162
|
-
let(:table) do
|
163
|
-
render_arbre_component assigns, helpers do
|
164
|
-
table_for(collection) do
|
165
|
-
column :title do |post|
|
166
|
-
span(post.title)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
it "should add a class to each table header based on the col name" do
|
173
|
-
expect(table.find_by_tag("th").first.class_list).to include("col-title")
|
174
|
-
end
|
175
|
-
|
176
|
-
[ "<span>First Post</span>",
|
177
|
-
"<span>Second Post</span>",
|
178
|
-
"<span>Third Post</span>"
|
179
|
-
].each_with_index do |content, index|
|
180
|
-
it "should create a cell with #{content}" do
|
181
|
-
expect(table.find_by_tag("td")[index].content.strip).to eq content
|
182
|
-
end
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
context "when creating a column with multiple block content" do
|
187
|
-
let(:table) do
|
188
|
-
render_arbre_component assigns, helpers do
|
189
|
-
table_for(collection) do
|
190
|
-
column :title do |post|
|
191
|
-
span(post.title)
|
192
|
-
span(post.title)
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
3.times do |index|
|
199
|
-
it "should create a cell with multiple elements in row #{index}" do
|
200
|
-
expect(table.find_by_tag("td")[index].find_by_tag("span").size).to eq 2
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
context "when creating many columns with symbols, blocks and strings" do
|
206
|
-
let(:table) do
|
207
|
-
render_arbre_component assigns, helpers do
|
208
|
-
table_for(collection) do
|
209
|
-
column "My Custom Title", :title
|
210
|
-
column :created_at, class: "datetime"
|
211
|
-
end
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
it "should add a class to each header based on class option or the col name" do
|
216
|
-
expect(table.find_by_tag("th").first.class_list.to_a.join(' ')).to eq "col col-my_custom_title"
|
217
|
-
expect(table.find_by_tag("th").last.class_list.to_a.join(' ')).to eq "col datetime"
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should add a class to each cell based on class option or the col name" do
|
221
|
-
expect(table.find_by_tag("td").first.class_list.to_a.join(' ')).to eq "col col-my_custom_title"
|
222
|
-
expect(table.find_by_tag("td").last.class_list.to_a.join(' ')).to eq "col datetime"
|
223
|
-
end
|
224
|
-
end
|
225
|
-
|
226
|
-
context "when using a single record instead of a collection" do
|
227
|
-
let(:table) do
|
228
|
-
render_arbre_component nil, helpers do
|
229
|
-
table_for Post.new do
|
230
|
-
column :title
|
231
|
-
end
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
|
-
it "should render" do
|
236
|
-
expect(table.find_by_tag("th").first.content).to eq "Title"
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
context "when using a single Hash" do
|
241
|
-
let(:table) do
|
242
|
-
render_arbre_component nil, helpers do
|
243
|
-
table_for foo: 1, bar: 2 do
|
244
|
-
column :foo
|
245
|
-
column :bar
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
|
250
|
-
it "should render" do
|
251
|
-
expect(table.find_by_tag("th")[0].content).to eq "Foo"
|
252
|
-
expect(table.find_by_tag("th")[1].content).to eq "Bar"
|
253
|
-
expect(table.find_by_tag("td")[0].content).to eq "1"
|
254
|
-
expect(table.find_by_tag("td")[1].content).to eq "2"
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
context "when using an Array of Hashes" do
|
259
|
-
let(:table) do
|
260
|
-
render_arbre_component nil, helpers do
|
261
|
-
table_for [{foo: 1}, {foo: 2}] do
|
262
|
-
column :foo
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
|
267
|
-
it "should render" do
|
268
|
-
expect(table.find_by_tag("th")[0].content).to eq "Foo"
|
269
|
-
expect(table.find_by_tag("td")[0].content).to eq "1"
|
270
|
-
expect(table.find_by_tag("td")[1].content).to eq "2"
|
271
|
-
end
|
272
|
-
end
|
273
|
-
|
274
|
-
context "when record attribute is boolean" do
|
275
|
-
let(:table) do
|
276
|
-
render_arbre_component assigns, helpers do
|
277
|
-
table_for(collection) do
|
278
|
-
column :starred
|
279
|
-
end
|
280
|
-
end
|
281
|
-
end
|
282
|
-
|
283
|
-
it "should render boolean attribute within status tag" do
|
284
|
-
expect(table.find_by_tag("span").first.class_list.to_a.join(' ')).to eq "status_tag yes"
|
285
|
-
expect(table.find_by_tag("span").first.content).to eq "Yes"
|
286
|
-
expect(table.find_by_tag("span").last.class_list.to_a.join(' ')).to eq "status_tag no"
|
287
|
-
expect(table.find_by_tag("span").last.content).to eq "No"
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
context 'when row_class' do
|
292
|
-
let(:table) do
|
293
|
-
render_arbre_component assigns, helpers do
|
294
|
-
table_for(collection, row_class: -> e { 'starred' if e.starred }) do
|
295
|
-
column :starred
|
296
|
-
end
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
|
-
it 'should render boolean attribute within status tag' do
|
301
|
-
trs = table.find_by_tag('tr')
|
302
|
-
expect(trs.size).to eq 4
|
303
|
-
expect(trs.first.class_list.to_a.join(' ')).to eq ''
|
304
|
-
expect(trs.second.class_list.to_a.join(' ')).to eq 'odd starred'
|
305
|
-
expect(trs.third.class_list.to_a.join(' ')).to eq 'even'
|
306
|
-
expect(trs.fourth.class_list.to_a.join(' ')).to eq 'odd'
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
context "when i18n option is specified" do
|
311
|
-
around do |example|
|
312
|
-
with_translation(activerecord: { attributes: { post: { title: "Name" } } }) do
|
313
|
-
example.call
|
314
|
-
end
|
315
|
-
end
|
316
|
-
|
317
|
-
let(:table) do
|
318
|
-
render_arbre_component assigns, helpers do
|
319
|
-
table_for(collection, i18n: Post) do
|
320
|
-
column :title
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
it "should use localized column key" do
|
326
|
-
expect(table.find_by_tag("th").first.content).to eq "Name"
|
327
|
-
end
|
328
|
-
end
|
329
|
-
|
330
|
-
context "when i18n option is not specified" do
|
331
|
-
around do |example|
|
332
|
-
with_translation(activerecord: { attributes: { post: { title: "Name" } } }) do
|
333
|
-
example.call
|
334
|
-
end
|
335
|
-
end
|
336
|
-
|
337
|
-
let(:collection) do
|
338
|
-
Post.create([
|
339
|
-
{ title: "First Post", starred: true },
|
340
|
-
{ title: "Second Post" },
|
341
|
-
])
|
342
|
-
Post.where(starred: true)
|
343
|
-
end
|
344
|
-
|
345
|
-
let(:table) do
|
346
|
-
render_arbre_component assigns, helpers do
|
347
|
-
table_for(collection) do
|
348
|
-
column :title
|
349
|
-
end
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
|
-
it "should predict localized key based on AR collection klass" do
|
354
|
-
expect(table.find_by_tag("th").first.content).to eq "Name"
|
355
|
-
end
|
356
|
-
end
|
357
|
-
end
|
358
|
-
|
359
|
-
describe "column sorting" do
|
360
|
-
def build_column(*args, &block)
|
361
|
-
ActiveAdmin::Views::TableFor::Column.new(*args, &block)
|
362
|
-
end
|
363
|
-
|
364
|
-
subject { table_column }
|
365
|
-
|
366
|
-
context "when default" do
|
367
|
-
let(:table_column){ build_column(:username) }
|
368
|
-
it { is_expected.to be_sortable }
|
369
|
-
|
370
|
-
describe '#sort_key' do
|
371
|
-
subject { super().sort_key }
|
372
|
-
it{ is_expected.to eq("username") }
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
context "when a block given with no sort key" do
|
377
|
-
let(:table_column){ build_column("Username"){ } }
|
378
|
-
it { is_expected.to be_sortable }
|
379
|
-
end
|
380
|
-
|
381
|
-
context "when a block given with a sort key" do
|
382
|
-
let(:table_column){ build_column("Username", sortable: :username){ } }
|
383
|
-
it { is_expected.to be_sortable }
|
384
|
-
|
385
|
-
describe '#sort_key' do
|
386
|
-
subject { super().sort_key }
|
387
|
-
it{ is_expected.to eq("username") }
|
388
|
-
end
|
389
|
-
end
|
390
|
-
|
391
|
-
context 'when a block given with virtual attribute and no sort key' do
|
392
|
-
let(:table_column) { build_column(:virtual, nil, Post) { } }
|
393
|
-
it { is_expected.not_to be_sortable }
|
394
|
-
end
|
395
|
-
|
396
|
-
context 'when symbol given as a data column should be sortable' do
|
397
|
-
let(:table_column){ build_column('Username column', :username) }
|
398
|
-
it { is_expected.to be_sortable }
|
399
|
-
|
400
|
-
describe '#sort_key' do
|
401
|
-
subject { super().sort_key }
|
402
|
-
it { is_expected.to eq 'username' }
|
403
|
-
end
|
404
|
-
end
|
405
|
-
|
406
|
-
context 'when sortable: true with a symbol and string' do
|
407
|
-
let(:table_column){ build_column('Username column', :username, sortable: true) }
|
408
|
-
it { is_expected.to be_sortable }
|
409
|
-
|
410
|
-
describe '#sort_key' do
|
411
|
-
subject { super().sort_key }
|
412
|
-
it { is_expected.to eq 'username' }
|
413
|
-
end
|
414
|
-
end
|
415
|
-
|
416
|
-
context "when sortable: false with a symbol" do
|
417
|
-
let(:table_column){ build_column(:username, sortable: false) }
|
418
|
-
it { is_expected.not_to be_sortable }
|
419
|
-
end
|
420
|
-
|
421
|
-
context "when sortable: false with a symbol and string" do
|
422
|
-
let(:table_column){ build_column("Username", :username, sortable: false) }
|
423
|
-
it { is_expected.not_to be_sortable }
|
424
|
-
end
|
425
|
-
|
426
|
-
context "when :sortable column is an association" do
|
427
|
-
let(:table_column){ build_column("Category", :category, Post) }
|
428
|
-
it { is_expected.not_to be_sortable }
|
429
|
-
end
|
430
|
-
|
431
|
-
context 'when :sortable column is an association and block given' do
|
432
|
-
let(:table_column){ build_column('Category', :category, Post) { } }
|
433
|
-
it { is_expected.not_to be_sortable }
|
434
|
-
end
|
435
|
-
end
|
436
|
-
end
|