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,19 +0,0 @@
|
|
1
|
-
Then /^I should see a member link to "([^"]*)"$/ do |name|
|
2
|
-
expect(page).to have_css('a.member_link', text: name)
|
3
|
-
end
|
4
|
-
|
5
|
-
Then /^I should not see a member link to "([^"]*)"$/ do |name|
|
6
|
-
%{Then I should not see "#{name}" within "a.member_link"}
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I should see the actions column with the class "([^"]*)" and the title "([^"]*)"$/ do |klass, title|
|
10
|
-
expect(page).to have_css "th#{'.'+klass}", text: title
|
11
|
-
end
|
12
|
-
|
13
|
-
Then /^I should see a dropdown menu item to "([^"]*)"$/ do |name|
|
14
|
-
expect(page).to have_css('ul.dropdown_menu_list li a', text: name)
|
15
|
-
end
|
16
|
-
|
17
|
-
Then /^I should not see a dropdown menu item to "([^"]*)"$/ do |name|
|
18
|
-
%{Then I should not see "#{name}" within "ul.dropdown_menu_list li a"}
|
19
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
Then /^I should see a table header with "([^"]*)"$/ do |content|
|
2
|
-
expect(page).to have_xpath '//th', text: content
|
3
|
-
end
|
4
|
-
|
5
|
-
Then /^I should not see a table header with "([^"]*)"$/ do |content|
|
6
|
-
expect(page).to_not have_xpath '//th', text: content
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I should see a sortable table header with "([^"]*)"$/ do |content|
|
10
|
-
expect(page).to have_css 'th.sortable', text: content
|
11
|
-
end
|
12
|
-
|
13
|
-
Then /^I should not see a sortable table header with "([^"]*)"$/ do |content|
|
14
|
-
expect(page).to_not have_css 'th.sortable', text: content
|
15
|
-
end
|
16
|
-
|
17
|
-
Then /^I should not see a sortable table header$/ do
|
18
|
-
step %{I should not see "th.sortable"}
|
19
|
-
end
|
20
|
-
|
21
|
-
Then /^the table "([^"]*)" should have (\d+) rows/ do |selector, count|
|
22
|
-
trs = page.find(selector).all :css, 'tr'
|
23
|
-
expect(trs.size).to eq count.to_i
|
24
|
-
end
|
25
|
-
|
26
|
-
Then /^the table "([^"]*)" should have (\d+) columns/ do |selector, count|
|
27
|
-
tds = page.find(selector).find('tr:first').all :css, 'td'
|
28
|
-
expect(tds.size).to eq count.to_i
|
29
|
-
end
|
30
|
-
|
31
|
-
Then /^there should be (\d+) "([^"]*)" tags$/ do |count, tag|
|
32
|
-
expect(page.all(:css, tag).size).to eq count.to_i
|
33
|
-
end
|
34
|
-
|
35
|
-
Then /^I should see a link to "([^"]*)"$/ do |link|
|
36
|
-
expect(page).to have_xpath '//a', text: link
|
37
|
-
end
|
38
|
-
|
39
|
-
Then /^an "([^"]*)" exception should be raised when I follow "([^"]*)"$/ do |error, link|
|
40
|
-
expect {
|
41
|
-
step "I follow \"#{link}\""
|
42
|
-
}.to raise_error(error.constantize)
|
43
|
-
end
|
44
|
-
|
45
|
-
Then /^I should be in the resource section for (.+)$/ do |resource_name|
|
46
|
-
expect(current_url).to include resource_name.tr(' ', '').underscore.pluralize
|
47
|
-
end
|
48
|
-
|
49
|
-
Then /^I should wait and see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
50
|
-
sleep 1
|
51
|
-
step 'show me the page'
|
52
|
-
selector ||= "*"
|
53
|
-
locate(:xpath, "//#{selector}[text()='#{text}']")
|
54
|
-
end
|
55
|
-
|
56
|
-
Then /^I should see the page title "([^"]*)"$/ do |title|
|
57
|
-
within('h2#page_title') do
|
58
|
-
expect(page).to have_content title
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
Then /^I should see a fieldset titled "([^"]*)"$/ do |title|
|
63
|
-
expect(page).to have_css 'fieldset legend', text: title
|
64
|
-
end
|
65
|
-
|
66
|
-
Then /^the "([^"]*)" field should contain the option "([^"]*)"$/ do |field, option|
|
67
|
-
field = find_field(field)
|
68
|
-
expect(field).to have_css 'option', text: option
|
69
|
-
end
|
70
|
-
|
71
|
-
Then /^I should see the content "([^"]*)"$/ do |content|
|
72
|
-
expect(page).to have_css '#active_admin_content', text: content
|
73
|
-
end
|
74
|
-
|
75
|
-
Then /^I should see a validation error "([^"]*)"$/ do |error_message|
|
76
|
-
expect(page).to have_css '.inline-errors', text: error_message
|
77
|
-
end
|
78
|
-
|
79
|
-
Then /^I should see a table with id "([^"]*)"$/ do |dom_id|
|
80
|
-
page.find("table##{dom_id}")
|
81
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Then /^I should see the css file "([^"]*)"$/ do |path|
|
2
|
-
step %{I should see the css file "#{path}" of media "screen"}
|
3
|
-
end
|
4
|
-
|
5
|
-
Then /^I should see the css file "([^"]*)" of media "([^"]*)"$/ do |path, media|
|
6
|
-
expect(page).to have_xpath("//link[contains(@href, '#{path}') and contains(@media, '#{media}')]", visible: false)
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I should see the js file "([^"]*)"$/ do |path|
|
10
|
-
expect(page).to have_xpath("//script[contains(@src, '#{path}')]", visible: false)
|
11
|
-
end
|
12
|
-
|
13
|
-
Then /^I should see the favicon "([^"]*)"$/ do |path|
|
14
|
-
expect(page).to have_xpath("//link[contains(@href, '#{path}')]", visible: false)
|
15
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
Then /^I should see the attribute "([^"]*)" with "([^"]*)"$/ do |title, value|
|
2
|
-
elems = all ".attributes_table th:contains('#{title}') ~ td:contains('#{value}')"
|
3
|
-
expect(elems.first).to_not eq(nil), "attribute missing"
|
4
|
-
end
|
5
|
-
|
6
|
-
Then /^I should see the attribute "([^"]*)" with a nicely formatted datetime$/ do |title|
|
7
|
-
text = all(".attributes_table th:contains('#{title}') ~ td").first.text
|
8
|
-
expect(text).to match /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
|
9
|
-
end
|
10
|
-
|
11
|
-
Then /^the attribute "([^"]*)" should be empty$/ do |title|
|
12
|
-
elems = all ".attributes_table th:contains('#{title}') ~ td > span.empty"
|
13
|
-
expect(elems.first).to_not eq(nil), 'attribute not empty'
|
14
|
-
end
|
15
|
-
|
16
|
-
Then /^I should not see the attribute "([^"]*)"$/ do |title|
|
17
|
-
expect(page).to_not have_css '.attributes_table th', text: title
|
18
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
Then /^I should see the panel title "([^"]*)"$/ do |title|
|
2
|
-
expect(page).to have_css '.panel > h3', text: title
|
3
|
-
end
|
4
|
-
|
5
|
-
Then /^I should not see the panel title "([^"]*)"$/ do |title|
|
6
|
-
expect(page).to_not have_css '.panel > h3', text: title
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I should see the attributes table$/ do
|
10
|
-
expect(page).to have_css '.panel .attributes_table'
|
11
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
Then /^I (should|should not) be asked to confirm "([^"]*)" for "([^"]*)"$/ do |maybe, confirmation, title|
|
2
|
-
selector = "#batch_actions_popover a.batch_action:contains('#{title}')"
|
3
|
-
selector << "[data-confirm='#{confirmation}']" if maybe == 'should'
|
4
|
-
|
5
|
-
verb = maybe == 'should' ? :to : :to_not
|
6
|
-
expect(page).send verb, have_css(selector)
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I (should|should not) see the batch action :([^\s]*) "([^"]*)"$/ do |maybe, sym, title|
|
10
|
-
selector = ".batch_actions_selector a.batch_action"
|
11
|
-
selector << "[href='#'][data-action='#{sym}']" if maybe == 'should'
|
12
|
-
|
13
|
-
verb = maybe == 'should' ? :to : :to_not
|
14
|
-
expect(page).send verb, have_css(selector, text: title)
|
15
|
-
end
|
16
|
-
|
17
|
-
Then /^the (\d+)(?:st|nd|rd|th) batch action should be "([^"]*)"$/ do |index, title|
|
18
|
-
batch_action = page.all('.batch_actions_selector a.batch_action')[index.to_i - 1]
|
19
|
-
expect(batch_action.text).to match title
|
20
|
-
end
|
21
|
-
|
22
|
-
When /^I check the (\d+)(?:st|nd|rd|th) record$/ do |index|
|
23
|
-
page.all("table.index_table input[type=checkbox]")[index.to_i].set true
|
24
|
-
end
|
25
|
-
|
26
|
-
When /^I toggle the collection selection$/ do
|
27
|
-
page.find("#collection_selection_toggle_all").click
|
28
|
-
end
|
29
|
-
|
30
|
-
Then /^I should see that the batch action button is disabled$/ do
|
31
|
-
expect(page).to have_css ".batch_actions_selector .dropdown_menu_button.disabled"
|
32
|
-
end
|
33
|
-
|
34
|
-
Then /^I (should|should not) see the batch action (button|selector)$/ do |maybe, type|
|
35
|
-
selector = "div.table_tools .batch_actions_selector"
|
36
|
-
selector << ' .dropdown_menu_button' if maybe == 'should' && type == 'button'
|
37
|
-
|
38
|
-
verb = maybe == 'should' ? :to : :to_not
|
39
|
-
expect(page).send verb, have_css(selector)
|
40
|
-
end
|
41
|
-
|
42
|
-
Then /^I should see the batch action popover exists$/ do
|
43
|
-
expect(page).to have_css '.batch_actions_selector'
|
44
|
-
end
|
45
|
-
|
46
|
-
Given /^I submit the batch action form with "([^"]*)"$/ do |action|
|
47
|
-
page.find("#batch_action", visible: false).set action
|
48
|
-
form = page.find "#collection_selection"
|
49
|
-
params = page.all("#main_content input", visible: false).each_with_object({}) do |input, obj|
|
50
|
-
key, value = input['name'], input['value']
|
51
|
-
if key == 'collection_selection[]'
|
52
|
-
(obj[key] ||= []).push value if input.checked?
|
53
|
-
else
|
54
|
-
obj[key] = value
|
55
|
-
end
|
56
|
-
end
|
57
|
-
page.driver.submit form['method'], form['action'], params
|
58
|
-
end
|
59
|
-
|
60
|
-
When /^I click "(.*?)" and accept confirmation$/ do |link|
|
61
|
-
# Use this implementation instead if poltergeist ever implements it
|
62
|
-
# page.driver.accept_modal(:confirm) { click_link(link) }
|
63
|
-
|
64
|
-
click_link(link)
|
65
|
-
expect(page).to have_content("Are you sure you want to delete these posts?")
|
66
|
-
click_button("OK")
|
67
|
-
end
|
68
|
-
|
69
|
-
Then /^I should not see checkboxes in the table$/ do
|
70
|
-
expect(page).to_not have_css '.paginated_collection table input[type=checkbox]'
|
71
|
-
end
|
72
|
-
|
73
|
-
Then /^I should be show a input with name "([^"]*)" and type "([^"]*)"$/ do |name, type|
|
74
|
-
selector = ".batch_actions_selector a.batch_action:first"
|
75
|
-
expect(page.find(selector)["data-inputs"]).to eq "{\"#{name}\":\"#{type}\"}"
|
76
|
-
end
|
77
|
-
|
78
|
-
Then /^I should be show a select with name "([^"]*)" with the values "([^"]*)"$/ do |name, values|
|
79
|
-
selector = ".batch_actions_selector a.batch_action:first"
|
80
|
-
expect(JSON[page.find(selector)["data-inputs"]]).to eq Hash[name, values.split(', ')]
|
81
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
Then /^I should see a comment by "([^"]*)"$/ do |name|
|
2
|
-
step %{I should see "#{name}" within ".active_admin_comment_author"}
|
3
|
-
end
|
4
|
-
|
5
|
-
When /^I add a comment "([^"]*)"$/ do |comment|
|
6
|
-
step %{I fill in "active_admin_comment_body" with "#{comment}"}
|
7
|
-
step %{I press "Add Comment"}
|
8
|
-
end
|
9
|
-
|
10
|
-
Given /^a tag with the name "([^"]*)" exists$/ do |tag_name|
|
11
|
-
Tag.create(name: tag_name)
|
12
|
-
end
|
13
|
-
|
14
|
-
Given /^(a|\d+) comments added by admin with an email "([^"]+)"?$/ do |number, email|
|
15
|
-
number = number == 'a' ? 1 : number.to_i
|
16
|
-
admin_user = ensure_user_created(email)
|
17
|
-
|
18
|
-
comment_text = 'Comment %i'
|
19
|
-
|
20
|
-
number.times do |i|
|
21
|
-
ActiveAdmin::Comment.create!(namespace: 'admin',
|
22
|
-
body: comment_text % i,
|
23
|
-
resource_type: Post.to_s,
|
24
|
-
resource_id: Post.first.id,
|
25
|
-
author_type: admin_user.class.to_s,
|
26
|
-
author_id: admin_user.id)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
Then /^I should see (\d+) comments?$/ do |number|
|
31
|
-
expect(page).to have_selector('div.active_admin_comment', count: number.to_i)
|
32
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
module ActiveAdminReloading
|
2
|
-
def load_aa_config(config_content)
|
3
|
-
ActiveSupport::Notifications.publish ActiveAdmin::Application::BeforeLoadEvent, ActiveAdmin.application
|
4
|
-
eval(config_content)
|
5
|
-
ActiveSupport::Notifications.publish ActiveAdmin::Application::AfterLoadEvent, ActiveAdmin.application
|
6
|
-
Rails.application.reload_routes!
|
7
|
-
ActiveAdmin.application.namespaces.each &:reset_menu!
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
module ActiveAdminContentsRollback
|
12
|
-
def files
|
13
|
-
@files ||= {}
|
14
|
-
end
|
15
|
-
|
16
|
-
# Records the contents of a file the first time we are
|
17
|
-
# about to change it
|
18
|
-
def record(filename)
|
19
|
-
contents = File.read(filename) rescue nil
|
20
|
-
files[filename] = contents unless files.has_key? filename
|
21
|
-
end
|
22
|
-
|
23
|
-
# Rolls the recorded files back to their original states
|
24
|
-
def rollback!
|
25
|
-
files.each{ |file, contents| rollback_file(file, contents) }
|
26
|
-
@files = {}
|
27
|
-
end
|
28
|
-
|
29
|
-
# If the file originally had content, override the stuff on disk.
|
30
|
-
# Else, remove the file and its parent folder structure until Rails.root OR other files exist.
|
31
|
-
def rollback_file(file, contents)
|
32
|
-
if contents.present?
|
33
|
-
File.open(file, 'w') { |f| f << contents }
|
34
|
-
else
|
35
|
-
File.delete(file)
|
36
|
-
begin
|
37
|
-
dir = File.dirname(file)
|
38
|
-
until dir == Rails.root
|
39
|
-
Dir.rmdir(dir) # delete current folder
|
40
|
-
dir = dir.split('/')[0..-2].join('/') # select parent folder
|
41
|
-
end
|
42
|
-
rescue Errno::ENOTEMPTY # Directory not empty
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
World(ActiveAdminReloading)
|
49
|
-
World(ActiveAdminContentsRollback)
|
50
|
-
|
51
|
-
After do
|
52
|
-
rollback!
|
53
|
-
end
|
54
|
-
|
55
|
-
Given /^a(?:n? (index|show))? configuration of:$/ do |action, config_content|
|
56
|
-
load_aa_config(config_content)
|
57
|
-
|
58
|
-
case action
|
59
|
-
when 'index'
|
60
|
-
step 'I am logged in'
|
61
|
-
case resource = config_content.match(/ActiveAdmin\.register (\w+)/)[1]
|
62
|
-
when 'Post'
|
63
|
-
step 'I am on the index page for posts'
|
64
|
-
when 'Category'
|
65
|
-
step 'I am on the index page for categories'
|
66
|
-
else
|
67
|
-
raise "#{resource} is not supported"
|
68
|
-
end
|
69
|
-
when 'show'
|
70
|
-
case resource = config_content.match(/ActiveAdmin\.register (\w+)/)[1]
|
71
|
-
when 'Post'
|
72
|
-
step 'I am logged in'
|
73
|
-
step 'I am on the index page for posts'
|
74
|
-
step 'I follow "View"'
|
75
|
-
when 'Tag'
|
76
|
-
step 'I am logged in'
|
77
|
-
Tag.create!
|
78
|
-
visit admin_tag_path Tag.last
|
79
|
-
else
|
80
|
-
raise "#{resource} is not supported"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
Given /^"([^"]*)" contains:$/ do |filename, contents|
|
86
|
-
path = Rails.root + filename
|
87
|
-
FileUtils.mkdir_p File.dirname path
|
88
|
-
record path
|
89
|
-
|
90
|
-
File.open(path, 'w+'){ |f| f << contents }
|
91
|
-
end
|
92
|
-
|
93
|
-
Given /^I add "([^"]*)" to the "([^"]*)" model$/ do |code, model_name|
|
94
|
-
path = File.join Rails.root, "app", "models", "#{model_name}.rb"
|
95
|
-
record path
|
96
|
-
|
97
|
-
str = File.read(path).gsub /^(class .+)$/, "\\1\n #{code}\n"
|
98
|
-
File.open(path, 'w+') { |f| f << str }
|
99
|
-
ActiveSupport::Dependencies.clear
|
100
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Then /^I should see the default welcome message$/ do
|
2
|
-
step %{I should see "Welcome to Active Admin" within "#dashboard_default_message"}
|
3
|
-
end
|
4
|
-
|
5
|
-
Then /^I should not see the default welcome message$/ do
|
6
|
-
step %{I should not see "Welcome to Active Admin"}
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^I should see a dashboard widget "([^"]*)"$/ do |name|
|
10
|
-
expect(page).to have_css '.dashboard .panel h3', text: name
|
11
|
-
end
|
12
|
-
|
13
|
-
Then /^I should not see a dashboard widget "([^"]*)"$/ do |name|
|
14
|
-
expect(page).to_not have_css '.dashboard .panel h3', text: name
|
15
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
def create_user(name, type = 'User')
|
2
|
-
first_name, last_name = name.split(' ')
|
3
|
-
user = type.camelize.constantize.where(first_name: first_name, last_name: last_name).first_or_create(username: name.tr(' ', '').underscore)
|
4
|
-
end
|
5
|
-
|
6
|
-
Given /^(a|\d+)( published)?( unstarred|starred)? posts?(?: with the title "([^"]*)")?(?: and body "([^"]*)")?(?: written by "([^"]*)")?(?: in category "([^"]*)")? exists?$/ do |count, published, starred, title, body, user, category_name|
|
7
|
-
count = count == 'a' ? 1 : count.to_i
|
8
|
-
published = Time.now if published
|
9
|
-
starred = starred == " starred" if starred
|
10
|
-
author = create_user(user) if user
|
11
|
-
category = Category.where(name: category_name).first_or_create if category_name
|
12
|
-
title ||= "Hello World %i"
|
13
|
-
count.times do |i|
|
14
|
-
Post.create! title: title % i, body: body, author: author, published_date: published, custom_category_id: category.try(:id), starred: starred
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
Given /^a category named "([^"]*)" exists$/ do |name|
|
19
|
-
Category.create! name: name
|
20
|
-
end
|
21
|
-
|
22
|
-
Given /^a (user|publisher) named "([^"]*)" exists$/ do |type, name|
|
23
|
-
create_user name, type
|
24
|
-
end
|
25
|
-
|
26
|
-
Given /^a store named "([^"]*)" exists$/ do |name|
|
27
|
-
Store.create! name: name
|
28
|
-
end
|
29
|
-
|
30
|
-
Given /^I create a new post with the title "([^"]*)"$/ do |title|
|
31
|
-
first(:link, 'Posts').click
|
32
|
-
click_link "New Post"
|
33
|
-
fill_in 'post_title', with: title
|
34
|
-
click_button "Create Post"
|
35
|
-
end
|