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.

Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +467 -0
  3. data/.gitignore +2 -5
  4. data/.rspec +1 -0
  5. data/.rspec_parallel +2 -0
  6. data/.rubocop.yml +25 -7
  7. data/.simplecov +4 -6
  8. data/CHANGELOG.md +175 -83
  9. data/CODE_OF_CONDUCT.md +64 -12
  10. data/CONTRIBUTING.md +77 -40
  11. data/Gemfile +7 -55
  12. data/Gemfile.common +53 -0
  13. data/Gemfile.lock +431 -0
  14. data/README.md +39 -18
  15. data/Rakefile +1 -32
  16. data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  19. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  20. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  21. data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
  22. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  23. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  24. data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
  25. data/bin/install_chromedriver.sh +17 -0
  26. data/config/locales/de.yml +10 -0
  27. data/config/locales/en.yml +19 -1
  28. data/config/locales/es.yml +20 -1
  29. data/config/locales/fi.yml +1 -1
  30. data/config/locales/it.yml +4 -0
  31. data/config/locales/nb.yml +15 -5
  32. data/config/locales/nl.yml +11 -0
  33. data/config/locales/pl.yml +71 -3
  34. data/config/locales/ru.yml +2 -0
  35. data/config/locales/tr.yml +9 -0
  36. data/config/locales/zh-CN.yml +33 -5
  37. data/config/mdl_style.rb +2 -0
  38. data/cucumber.yml +7 -3
  39. data/docs/.gitignore +1 -0
  40. data/docs/1-general-configuration.md +16 -1
  41. data/docs/10-custom-pages.md +14 -0
  42. data/docs/12-arbre-components.md +28 -1
  43. data/docs/13-authorization-adapter.md +36 -17
  44. data/docs/2-resource-customization.md +8 -3
  45. data/docs/3-index-pages.md +17 -0
  46. data/docs/3-index-pages/custom-index.md +1 -1
  47. data/docs/3-index-pages/index-as-blog.md +1 -1
  48. data/docs/3-index-pages/index-as-table.md +5 -5
  49. data/docs/5-forms.md +16 -2
  50. data/docs/8-custom-actions.md +11 -0
  51. data/docs/Gemfile +2 -0
  52. data/docs/Gemfile.lock +249 -0
  53. data/docs/_config.yml +1 -1
  54. data/docs/_includes/toc.html +1 -1
  55. data/docs/_includes/top-menu.html +9 -1
  56. data/docs/documentation.md +1 -1
  57. data/docs/images/tidelift.svg +14 -0
  58. data/docs/stylesheets/main.css +26 -2
  59. data/gemfiles/rails_42.gemfile +2 -2
  60. data/gemfiles/rails_42.gemfile.lock +410 -0
  61. data/gemfiles/rails_50.gemfile +2 -2
  62. data/gemfiles/rails_50.gemfile.lock +424 -0
  63. data/gemfiles/rails_51.gemfile +2 -2
  64. data/gemfiles/rails_51.gemfile.lock +423 -0
  65. data/lib/active_admin/abstract_view_factory.rb +13 -51
  66. data/lib/active_admin/application.rb +42 -142
  67. data/lib/active_admin/application_settings.rb +39 -0
  68. data/lib/active_admin/base_controller/authorization.rb +1 -2
  69. data/lib/active_admin/batch_actions/controller.rb +1 -1
  70. data/lib/active_admin/dependency.rb +8 -0
  71. data/lib/active_admin/deprecation.rb +0 -25
  72. data/lib/active_admin/dynamic_setting.rb +38 -0
  73. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  74. data/lib/active_admin/engine.rb +5 -0
  75. data/lib/active_admin/filters/active_filter.rb +1 -1
  76. data/lib/active_admin/filters/resource_extension.rb +1 -1
  77. data/lib/active_admin/form_builder.rb +95 -60
  78. data/lib/active_admin/inputs/datepicker_input.rb +7 -0
  79. data/lib/active_admin/menu.rb +2 -8
  80. data/lib/active_admin/menu_item.rb +3 -31
  81. data/lib/active_admin/namespace.rb +18 -6
  82. data/lib/active_admin/namespace_settings.rb +107 -0
  83. data/lib/active_admin/orm/active_record/comments.rb +11 -0
  84. data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
  85. data/lib/active_admin/resource/action_items.rb +6 -1
  86. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  87. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  88. data/lib/active_admin/router.rb +89 -84
  89. data/lib/active_admin/scope.rb +5 -1
  90. data/lib/active_admin/settings_node.rb +19 -0
  91. data/lib/active_admin/version.rb +1 -1
  92. data/lib/active_admin/views/components/active_admin_form.rb +2 -3
  93. data/lib/active_admin/views/components/menu.rb +32 -0
  94. data/lib/active_admin/views/components/menu_item.rb +58 -0
  95. data/lib/active_admin/views/components/scopes.rb +11 -4
  96. data/lib/active_admin/views/components/sidebar.rb +13 -0
  97. data/lib/active_admin/views/components/site_title.rb +5 -6
  98. data/lib/active_admin/views/components/table_for.rb +1 -10
  99. data/lib/active_admin/views/components/tabs.rb +4 -1
  100. data/lib/active_admin/views/footer.rb +2 -6
  101. data/lib/active_admin/views/header.rb +3 -15
  102. data/lib/active_admin/views/index_as_blog.rb +1 -1
  103. data/lib/active_admin/views/index_as_grid.rb +25 -25
  104. data/lib/active_admin/views/index_as_table.rb +6 -6
  105. data/lib/active_admin/views/pages/base.rb +27 -53
  106. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  107. data/lib/bug_report_templates/active_admin_master.rb +2 -3
  108. data/tasks/application_generator.rb +48 -0
  109. data/tasks/gemfiles.rake +8 -0
  110. data/tasks/lint.rake +96 -7
  111. data/tasks/local.rake +10 -8
  112. data/tasks/test.rake +30 -16
  113. metadata +26 -440
  114. data/.travis.yml +0 -51
  115. data/features/action_item.feature +0 -73
  116. data/features/authorization.feature +0 -64
  117. data/features/authorization_cancan.feature +0 -52
  118. data/features/authorization_pundit.feature +0 -37
  119. data/features/belongs_to.feature +0 -124
  120. data/features/breadcrumb.feature +0 -75
  121. data/features/comments/commenting.feature +0 -178
  122. data/features/comments/viewing_index.feature +0 -19
  123. data/features/create_another.feature +0 -55
  124. data/features/dashboard.feature +0 -16
  125. data/features/decorators.feature +0 -43
  126. data/features/development_reloading.feature +0 -28
  127. data/features/edit_page.feature +0 -116
  128. data/features/favicon.feature +0 -20
  129. data/features/first_boot.feature +0 -16
  130. data/features/footer.feature +0 -28
  131. data/features/global_navigation.feature +0 -29
  132. data/features/i18n.feature +0 -55
  133. data/features/index/batch_actions.feature +0 -218
  134. data/features/index/filters.feature +0 -250
  135. data/features/index/format_as_csv.feature +0 -220
  136. data/features/index/formats.feature +0 -88
  137. data/features/index/index_as_block.feature +0 -15
  138. data/features/index/index_as_blog.feature +0 -69
  139. data/features/index/index_as_grid.feature +0 -45
  140. data/features/index/index_as_table.feature +0 -291
  141. data/features/index/index_blank_slate.feature +0 -83
  142. data/features/index/index_parameters.feature +0 -75
  143. data/features/index/index_scope_to.feature +0 -56
  144. data/features/index/index_scopes.feature +0 -285
  145. data/features/index/page_title.feature +0 -41
  146. data/features/index/pagination.feature +0 -63
  147. data/features/index/switch_index_view.feature +0 -73
  148. data/features/menu.feature +0 -72
  149. data/features/meta_tags.feature +0 -21
  150. data/features/new_page.feature +0 -136
  151. data/features/registering_assets.feature +0 -38
  152. data/features/registering_pages.feature +0 -237
  153. data/features/registering_resources.feature +0 -33
  154. data/features/renamed_resource.feature +0 -30
  155. data/features/root_to.feature +0 -17
  156. data/features/show/attributes_table_title.feature +0 -54
  157. data/features/show/columns.feature +0 -40
  158. data/features/show/default_content.feature +0 -44
  159. data/features/show/page_title.feature +0 -58
  160. data/features/show/tabs.feature +0 -33
  161. data/features/sidebar_sections.feature +0 -210
  162. data/features/site_title.feature +0 -47
  163. data/features/specifying_actions.feature +0 -118
  164. data/features/step_definitions/action_item_steps.rb +0 -7
  165. data/features/step_definitions/action_link_steps.rb +0 -19
  166. data/features/step_definitions/additional_web_steps.rb +0 -81
  167. data/features/step_definitions/asset_steps.rb +0 -15
  168. data/features/step_definitions/attribute_steps.rb +0 -18
  169. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  170. data/features/step_definitions/batch_action_steps.rb +0 -81
  171. data/features/step_definitions/blog_steps.rb +0 -3
  172. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  173. data/features/step_definitions/column_steps.rb +0 -8
  174. data/features/step_definitions/comment_steps.rb +0 -32
  175. data/features/step_definitions/configuration_steps.rb +0 -100
  176. data/features/step_definitions/dashboard_steps.rb +0 -15
  177. data/features/step_definitions/factory_steps.rb +0 -35
  178. data/features/step_definitions/filter_steps.rb +0 -47
  179. data/features/step_definitions/flash_steps.rb +0 -11
  180. data/features/step_definitions/footer_steps.rb +0 -11
  181. data/features/step_definitions/format_steps.rb +0 -56
  182. data/features/step_definitions/i18n_steps.rb +0 -11
  183. data/features/step_definitions/index_scope_steps.rb +0 -29
  184. data/features/step_definitions/index_views_steps.rb +0 -3
  185. data/features/step_definitions/layout_steps.rb +0 -3
  186. data/features/step_definitions/member_link_steps.rb +0 -7
  187. data/features/step_definitions/menu_steps.rb +0 -11
  188. data/features/step_definitions/meta_tag_steps.rb +0 -3
  189. data/features/step_definitions/pagination_steps.rb +0 -15
  190. data/features/step_definitions/sidebar_steps.rb +0 -11
  191. data/features/step_definitions/site_title_steps.rb +0 -17
  192. data/features/step_definitions/tab_steps.rb +0 -8
  193. data/features/step_definitions/table_steps.rb +0 -116
  194. data/features/step_definitions/user_steps.rb +0 -52
  195. data/features/step_definitions/web_steps.rb +0 -86
  196. data/features/sti_resource.feature +0 -65
  197. data/features/strong_parameters.feature +0 -69
  198. data/features/support/env.rb +0 -122
  199. data/features/support/paths.rb +0 -73
  200. data/features/support/regular_env.rb +0 -7
  201. data/features/support/reload_env.rb +0 -7
  202. data/features/support/selectors.rb +0 -45
  203. data/features/users/logging_in.feature +0 -36
  204. data/features/users/logging_out.feature +0 -13
  205. data/features/users/resetting_password.feature +0 -34
  206. data/gemfiles/rails_52.gemfile +0 -11
  207. data/lib/active_admin/helpers/settings.rb +0 -114
  208. data/spec/bug_report_templates_spec.rb +0 -26
  209. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  210. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  211. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  212. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  213. data/spec/javascripts/fixtures/flashes.html +0 -2
  214. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  215. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  216. data/spec/javascripts/support/jasmine.yml +0 -74
  217. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  218. data/spec/rails_helper.rb +0 -59
  219. data/spec/requests/default_namespace_spec.rb +0 -81
  220. data/spec/requests/memory_spec.rb +0 -25
  221. data/spec/requests/stylesheets_spec.rb +0 -18
  222. data/spec/spec_helper.rb +0 -1
  223. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  224. data/spec/support/active_admin_request_helpers.rb +0 -39
  225. data/spec/support/rails_template.rb +0 -153
  226. data/spec/support/rails_template_with_data.rb +0 -327
  227. data/spec/support/templates/admin/stores.rb +0 -7
  228. data/spec/support/templates/en.yml +0 -8
  229. data/spec/support/templates/manifest.js +0 -3
  230. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  231. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  232. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  233. data/spec/support/templates/policies/application_policy.rb +0 -44
  234. data/spec/support/templates/policies/category_policy.rb +0 -7
  235. data/spec/support/templates/policies/post_policy.rb +0 -15
  236. data/spec/support/templates/policies/store_policy.rb +0 -11
  237. data/spec/support/templates/policies/user_policy.rb +0 -11
  238. data/spec/support/templates/post_decorator.rb +0 -24
  239. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  240. data/spec/unit/action_builder_spec.rb +0 -158
  241. data/spec/unit/active_admin_spec.rb +0 -11
  242. data/spec/unit/application_spec.rb +0 -184
  243. data/spec/unit/asset_registration_spec.rb +0 -81
  244. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  245. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  246. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  247. data/spec/unit/auto_link_spec.rb +0 -93
  248. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  249. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  250. data/spec/unit/belongs_to_spec.rb +0 -76
  251. data/spec/unit/cancan_adapter_spec.rb +0 -43
  252. data/spec/unit/comments_spec.rb +0 -176
  253. data/spec/unit/component_spec.rb +0 -18
  254. data/spec/unit/config_shared_examples.rb +0 -59
  255. data/spec/unit/controller_filters_spec.rb +0 -41
  256. data/spec/unit/csv_builder_spec.rb +0 -313
  257. data/spec/unit/dependency_spec.rb +0 -135
  258. data/spec/unit/devise_spec.rb +0 -110
  259. data/spec/unit/dsl_spec.rb +0 -120
  260. data/spec/unit/filters/active_filter_spec.rb +0 -189
  261. data/spec/unit/filters/active_spec.rb +0 -24
  262. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  263. data/spec/unit/filters/resource_spec.rb +0 -128
  264. data/spec/unit/form_builder_spec.rb +0 -990
  265. data/spec/unit/generators/install_spec.rb +0 -31
  266. data/spec/unit/helpers/collection_spec.rb +0 -68
  267. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  268. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  269. data/spec/unit/helpers/settings_spec.rb +0 -30
  270. data/spec/unit/i18n_spec.rb +0 -29
  271. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  272. data/spec/unit/menu_collection_spec.rb +0 -62
  273. data/spec/unit/menu_item_spec.rb +0 -141
  274. data/spec/unit/menu_spec.rb +0 -71
  275. data/spec/unit/namespace/authorization_spec.rb +0 -27
  276. data/spec/unit/namespace/register_page_spec.rb +0 -99
  277. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  278. data/spec/unit/namespace_spec.rb +0 -124
  279. data/spec/unit/order_clause_spec.rb +0 -81
  280. data/spec/unit/page_controller_spec.rb +0 -5
  281. data/spec/unit/page_spec.rb +0 -128
  282. data/spec/unit/pretty_format_spec.rb +0 -82
  283. data/spec/unit/pundit_adapter_spec.rb +0 -98
  284. data/spec/unit/resource/action_items_spec.rb +0 -69
  285. data/spec/unit/resource/attributes_spec.rb +0 -49
  286. data/spec/unit/resource/includes_spec.rb +0 -21
  287. data/spec/unit/resource/menu_spec.rb +0 -18
  288. data/spec/unit/resource/naming_spec.rb +0 -122
  289. data/spec/unit/resource/ordering_spec.rb +0 -35
  290. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  291. data/spec/unit/resource/pagination_spec.rb +0 -38
  292. data/spec/unit/resource/routes_spec.rb +0 -125
  293. data/spec/unit/resource/scopes_spec.rb +0 -50
  294. data/spec/unit/resource/sidebars_spec.rb +0 -43
  295. data/spec/unit/resource_collection_spec.rb +0 -175
  296. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  297. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  298. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  299. data/spec/unit/resource_controller_spec.rb +0 -273
  300. data/spec/unit/resource_registration_spec.rb +0 -61
  301. data/spec/unit/resource_spec.rb +0 -320
  302. data/spec/unit/routing_spec.rb +0 -211
  303. data/spec/unit/scope_spec.rb +0 -209
  304. data/spec/unit/settings_spec.rb +0 -117
  305. data/spec/unit/view_factory_spec.rb +0 -19
  306. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  307. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  308. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  309. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  310. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  311. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  312. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  313. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  314. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  315. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  316. data/spec/unit/views/components/columns_spec.rb +0 -187
  317. data/spec/unit/views/components/index_list_spec.rb +0 -49
  318. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  319. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  320. data/spec/unit/views/components/panel_spec.rb +0 -58
  321. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  322. data/spec/unit/views/components/site_title_spec.rb +0 -76
  323. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  324. data/spec/unit/views/components/table_for_spec.rb +0 -436
  325. data/spec/unit/views/components/tabs_spec.rb +0 -67
  326. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  327. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  328. data/spec/unit/views/pages/form_spec.rb +0 -54
  329. data/spec/unit/views/pages/index_spec.rb +0 -60
  330. data/spec/unit/views/pages/layout_spec.rb +0 -59
  331. data/spec/unit/views/pages/show_spec.rb +0 -32
  332. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  333. data/tasks/parallel_tests.rake +0 -66
@@ -1,7 +0,0 @@
1
- Then /^I should see an action item link to "([^"]*)"$/ do |link|
2
- expect(page).to have_css('.action_item a', text: link)
3
- end
4
-
5
- Then /^I should not see an action item link to "([^"]*)"$/ do |link|
6
- expect(page).to_not have_css('.action_item a', text: link)
7
- end
@@ -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,3 +0,0 @@
1
- Then /^I should see a blog header "([^"]*)"$/ do |header_text|
2
- expect(page).to have_css 'h3', text: header_text
3
- end
@@ -1,3 +0,0 @@
1
- Then /^I should see a link to "([^"]*)" in the breadcrumb$/ do |text|
2
- expect(page).to have_css '.breadcrumb > a', text: text
3
- end
@@ -1,8 +0,0 @@
1
- Then /^I should see a columns container$/ do
2
- expect(page).to have_css '.columns'
3
- end
4
-
5
- Then /^I should see (a|\d+) columns?$/ do |count|
6
- count = count == 'a' ? 1 : count.to_i
7
- expect(page).to have_css '.column', count: count
8
- 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