activeadmin 1.3.0 → 2.0.0.rc1

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 (423) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +307 -123
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +90 -46
  5. data/README.md +66 -19
  6. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  8. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  9. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  10. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  11. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  12. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  13. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +55 -0
  14. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  15. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  16. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  17. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  18. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  19. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  20. data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
  21. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  22. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  23. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  25. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  26. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  27. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  28. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  29. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  30. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  31. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  32. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  33. data/config/locales/bg.yml +0 -1
  34. data/config/locales/de.yml +10 -0
  35. data/config/locales/en.yml +19 -1
  36. data/config/locales/es.yml +20 -1
  37. data/config/locales/fi.yml +1 -1
  38. data/config/locales/he.yml +0 -1
  39. data/config/locales/hu.yml +4 -0
  40. data/config/locales/it.yml +4 -0
  41. data/config/locales/lt.yml +2 -2
  42. data/config/locales/nb.yml +15 -5
  43. data/config/locales/nl.yml +11 -0
  44. data/config/locales/pl.yml +71 -3
  45. data/config/locales/ru.yml +2 -0
  46. data/config/locales/tr.yml +9 -0
  47. data/config/locales/uk.yml +2 -0
  48. data/config/locales/zh-CN.yml +33 -5
  49. data/docs/.gitignore +1 -0
  50. data/docs/0-installation.md +2 -2
  51. data/docs/1-general-configuration.md +16 -1
  52. data/docs/10-custom-pages.md +14 -0
  53. data/docs/12-arbre-components.md +28 -1
  54. data/docs/13-authorization-adapter.md +40 -21
  55. data/docs/2-resource-customization.md +8 -3
  56. data/docs/3-index-pages/custom-index.md +1 -1
  57. data/docs/3-index-pages/index-as-blog.md +1 -1
  58. data/docs/3-index-pages/index-as-table.md +5 -5
  59. data/docs/3-index-pages.md +17 -0
  60. data/docs/5-forms.md +16 -2
  61. data/docs/8-custom-actions.md +11 -0
  62. data/docs/CNAME +1 -1
  63. data/docs/Gemfile +2 -0
  64. data/docs/Gemfile.lock +249 -0
  65. data/docs/_config.yml +1 -1
  66. data/docs/_includes/toc.html +1 -1
  67. data/docs/_includes/top-menu.html +9 -1
  68. data/docs/documentation.md +1 -1
  69. data/docs/images/tidelift.svg +14 -0
  70. data/docs/index.html +2 -2
  71. data/docs/stylesheets/main.css +26 -2
  72. data/lib/active_admin/abstract_view_factory.rb +13 -51
  73. data/lib/active_admin/application.rb +49 -155
  74. data/lib/active_admin/application_settings.rb +42 -0
  75. data/lib/active_admin/asset_registration.rb +0 -8
  76. data/lib/active_admin/base_controller/authorization.rb +3 -6
  77. data/lib/active_admin/base_controller.rb +6 -6
  78. data/lib/active_admin/batch_actions/controller.rb +2 -2
  79. data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
  80. data/lib/active_admin/callbacks.rb +1 -1
  81. data/lib/active_admin/csv_builder.rb +1 -1
  82. data/lib/active_admin/dependency.rb +1 -69
  83. data/lib/active_admin/deprecation.rb +0 -25
  84. data/lib/active_admin/dsl.rb +1 -8
  85. data/lib/active_admin/dynamic_setting.rb +38 -0
  86. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  87. data/lib/active_admin/engine.rb +5 -0
  88. data/lib/active_admin/error.rb +1 -1
  89. data/lib/active_admin/filters/active_filter.rb +4 -2
  90. data/lib/active_admin/filters/active_sidebar.rb +5 -1
  91. data/lib/active_admin/filters/forms.rb +7 -4
  92. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  93. data/lib/active_admin/filters/resource_extension.rb +4 -4
  94. data/lib/active_admin/form_builder.rb +97 -62
  95. data/lib/active_admin/generators/boilerplate.rb +1 -1
  96. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  97. data/lib/active_admin/inputs/datepicker_input.rb +8 -1
  98. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  99. data/lib/active_admin/menu.rb +2 -8
  100. data/lib/active_admin/menu_item.rb +4 -32
  101. data/lib/active_admin/namespace.rb +20 -8
  102. data/lib/active_admin/namespace_settings.rb +110 -0
  103. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  104. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
  105. data/lib/active_admin/orm/active_record/comments.rb +15 -4
  106. data/lib/active_admin/page_dsl.rb +1 -1
  107. data/lib/active_admin/pundit_adapter.rb +13 -4
  108. data/lib/active_admin/resource/action_items.rb +7 -2
  109. data/lib/active_admin/resource/attributes.rb +7 -4
  110. data/lib/active_admin/resource/menu.rb +3 -3
  111. data/lib/active_admin/resource/naming.rb +3 -3
  112. data/lib/active_admin/resource/routes.rb +9 -4
  113. data/lib/active_admin/resource/scopes.rb +3 -3
  114. data/lib/active_admin/resource/sidebars.rb +1 -1
  115. data/lib/active_admin/resource.rb +2 -2
  116. data/lib/active_admin/resource_collection.rb +2 -2
  117. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  118. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  119. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  120. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  121. data/lib/active_admin/resource_dsl.rb +5 -3
  122. data/lib/active_admin/router.rb +89 -84
  123. data/lib/active_admin/scope.rb +9 -5
  124. data/lib/active_admin/settings_node.rb +19 -0
  125. data/lib/active_admin/version.rb +1 -1
  126. data/lib/active_admin/view_helpers/display_helper.rb +10 -2
  127. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  128. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
  129. data/lib/active_admin/view_helpers.rb +1 -1
  130. data/lib/active_admin/views/components/active_admin_form.rb +9 -4
  131. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  132. data/lib/active_admin/views/components/menu.rb +32 -0
  133. data/lib/active_admin/views/components/menu_item.rb +58 -0
  134. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  135. data/lib/active_admin/views/components/scopes.rb +11 -4
  136. data/lib/active_admin/views/components/sidebar.rb +13 -0
  137. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  138. data/lib/active_admin/views/components/site_title.rb +5 -6
  139. data/lib/active_admin/views/components/status_tag.rb +1 -18
  140. data/lib/active_admin/views/components/table_for.rb +3 -12
  141. data/lib/active_admin/views/components/tabs.rb +15 -3
  142. data/lib/active_admin/views/footer.rb +3 -7
  143. data/lib/active_admin/views/header.rb +3 -15
  144. data/lib/active_admin/views/index_as_blog.rb +1 -1
  145. data/lib/active_admin/views/index_as_grid.rb +25 -25
  146. data/lib/active_admin/views/index_as_table.rb +11 -10
  147. data/lib/active_admin/views/pages/base.rb +30 -53
  148. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  149. data/lib/active_admin/views.rb +1 -1
  150. data/lib/active_admin.rb +9 -4
  151. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  152. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  153. data/lib/generators/active_admin/install/install_generator.rb +6 -2
  154. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
  155. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  156. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  157. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  158. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  159. data/lib/ransack_ext.rb +3 -3
  160. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  161. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  162. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  163. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  164. metadata +120 -523
  165. data/.github/ISSUE_TEMPLATE.md +0 -20
  166. data/.gitignore +0 -49
  167. data/.mdlrc +0 -1
  168. data/.rubocop.yml +0 -76
  169. data/.simplecov +0 -13
  170. data/.travis.yml +0 -51
  171. data/.yardopts +0 -7
  172. data/Gemfile +0 -58
  173. data/Rakefile +0 -54
  174. data/activeadmin.gemspec +0 -32
  175. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  176. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  177. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  178. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  179. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  180. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  181. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  182. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  183. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  184. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  185. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  186. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  187. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  188. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  189. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  190. data/codecov.yml +0 -25
  191. data/config/i18n-tasks.yml +0 -26
  192. data/config/mdl_style.rb +0 -9
  193. data/cucumber.yml +0 -3
  194. data/features/action_item.feature +0 -73
  195. data/features/authorization.feature +0 -64
  196. data/features/authorization_cancan.feature +0 -52
  197. data/features/authorization_pundit.feature +0 -37
  198. data/features/belongs_to.feature +0 -124
  199. data/features/breadcrumb.feature +0 -75
  200. data/features/comments/commenting.feature +0 -178
  201. data/features/comments/viewing_index.feature +0 -19
  202. data/features/create_another.feature +0 -55
  203. data/features/dashboard.feature +0 -16
  204. data/features/decorators.feature +0 -43
  205. data/features/development_reloading.feature +0 -28
  206. data/features/edit_page.feature +0 -116
  207. data/features/favicon.feature +0 -20
  208. data/features/first_boot.feature +0 -16
  209. data/features/footer.feature +0 -28
  210. data/features/global_navigation.feature +0 -29
  211. data/features/i18n.feature +0 -55
  212. data/features/index/batch_actions.feature +0 -218
  213. data/features/index/filters.feature +0 -250
  214. data/features/index/format_as_csv.feature +0 -220
  215. data/features/index/formats.feature +0 -88
  216. data/features/index/index_as_block.feature +0 -15
  217. data/features/index/index_as_blog.feature +0 -69
  218. data/features/index/index_as_grid.feature +0 -45
  219. data/features/index/index_as_table.feature +0 -291
  220. data/features/index/index_blank_slate.feature +0 -83
  221. data/features/index/index_parameters.feature +0 -75
  222. data/features/index/index_scope_to.feature +0 -56
  223. data/features/index/index_scopes.feature +0 -285
  224. data/features/index/page_title.feature +0 -41
  225. data/features/index/pagination.feature +0 -63
  226. data/features/index/switch_index_view.feature +0 -73
  227. data/features/menu.feature +0 -72
  228. data/features/meta_tags.feature +0 -21
  229. data/features/new_page.feature +0 -136
  230. data/features/registering_assets.feature +0 -38
  231. data/features/registering_pages.feature +0 -237
  232. data/features/registering_resources.feature +0 -33
  233. data/features/renamed_resource.feature +0 -30
  234. data/features/root_to.feature +0 -17
  235. data/features/show/attributes_table_title.feature +0 -54
  236. data/features/show/columns.feature +0 -40
  237. data/features/show/default_content.feature +0 -44
  238. data/features/show/page_title.feature +0 -58
  239. data/features/show/tabs.feature +0 -33
  240. data/features/sidebar_sections.feature +0 -210
  241. data/features/site_title.feature +0 -47
  242. data/features/specifying_actions.feature +0 -118
  243. data/features/step_definitions/action_item_steps.rb +0 -7
  244. data/features/step_definitions/action_link_steps.rb +0 -19
  245. data/features/step_definitions/additional_web_steps.rb +0 -81
  246. data/features/step_definitions/asset_steps.rb +0 -15
  247. data/features/step_definitions/attribute_steps.rb +0 -18
  248. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  249. data/features/step_definitions/batch_action_steps.rb +0 -81
  250. data/features/step_definitions/blog_steps.rb +0 -3
  251. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  252. data/features/step_definitions/column_steps.rb +0 -8
  253. data/features/step_definitions/comment_steps.rb +0 -32
  254. data/features/step_definitions/configuration_steps.rb +0 -100
  255. data/features/step_definitions/dashboard_steps.rb +0 -15
  256. data/features/step_definitions/factory_steps.rb +0 -35
  257. data/features/step_definitions/filter_steps.rb +0 -47
  258. data/features/step_definitions/flash_steps.rb +0 -11
  259. data/features/step_definitions/footer_steps.rb +0 -11
  260. data/features/step_definitions/format_steps.rb +0 -56
  261. data/features/step_definitions/i18n_steps.rb +0 -11
  262. data/features/step_definitions/index_scope_steps.rb +0 -29
  263. data/features/step_definitions/index_views_steps.rb +0 -3
  264. data/features/step_definitions/layout_steps.rb +0 -3
  265. data/features/step_definitions/member_link_steps.rb +0 -7
  266. data/features/step_definitions/menu_steps.rb +0 -11
  267. data/features/step_definitions/meta_tag_steps.rb +0 -3
  268. data/features/step_definitions/pagination_steps.rb +0 -15
  269. data/features/step_definitions/sidebar_steps.rb +0 -11
  270. data/features/step_definitions/site_title_steps.rb +0 -17
  271. data/features/step_definitions/tab_steps.rb +0 -8
  272. data/features/step_definitions/table_steps.rb +0 -116
  273. data/features/step_definitions/user_steps.rb +0 -52
  274. data/features/step_definitions/web_steps.rb +0 -86
  275. data/features/sti_resource.feature +0 -65
  276. data/features/strong_parameters.feature +0 -69
  277. data/features/support/env.rb +0 -122
  278. data/features/support/paths.rb +0 -73
  279. data/features/support/regular_env.rb +0 -7
  280. data/features/support/reload_env.rb +0 -7
  281. data/features/support/selectors.rb +0 -45
  282. data/features/users/logging_in.feature +0 -36
  283. data/features/users/logging_out.feature +0 -13
  284. data/features/users/resetting_password.feature +0 -34
  285. data/gemfiles/rails_42.gemfile +0 -10
  286. data/gemfiles/rails_50.gemfile +0 -10
  287. data/gemfiles/rails_51.gemfile +0 -10
  288. data/gemfiles/rails_52.gemfile +0 -11
  289. data/lib/active_admin/event.rb +0 -24
  290. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  291. data/lib/active_admin/helpers/settings.rb +0 -114
  292. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  293. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  294. data/spec/bug_report_templates_spec.rb +0 -26
  295. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  296. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  297. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  298. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  299. data/spec/javascripts/fixtures/flashes.html +0 -2
  300. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  301. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  302. data/spec/javascripts/support/jasmine.yml +0 -74
  303. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  304. data/spec/rails_helper.rb +0 -59
  305. data/spec/requests/default_namespace_spec.rb +0 -81
  306. data/spec/requests/memory_spec.rb +0 -25
  307. data/spec/requests/stylesheets_spec.rb +0 -18
  308. data/spec/spec_helper.rb +0 -1
  309. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  310. data/spec/support/active_admin_request_helpers.rb +0 -39
  311. data/spec/support/rails_template.rb +0 -153
  312. data/spec/support/rails_template_with_data.rb +0 -327
  313. data/spec/support/templates/admin/stores.rb +0 -7
  314. data/spec/support/templates/en.yml +0 -8
  315. data/spec/support/templates/manifest.js +0 -3
  316. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  317. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  318. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  319. data/spec/support/templates/policies/application_policy.rb +0 -44
  320. data/spec/support/templates/policies/category_policy.rb +0 -7
  321. data/spec/support/templates/policies/post_policy.rb +0 -15
  322. data/spec/support/templates/policies/store_policy.rb +0 -11
  323. data/spec/support/templates/policies/user_policy.rb +0 -11
  324. data/spec/support/templates/post_decorator.rb +0 -24
  325. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  326. data/spec/unit/action_builder_spec.rb +0 -158
  327. data/spec/unit/active_admin_spec.rb +0 -11
  328. data/spec/unit/application_spec.rb +0 -184
  329. data/spec/unit/asset_registration_spec.rb +0 -81
  330. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  331. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  332. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  333. data/spec/unit/auto_link_spec.rb +0 -93
  334. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  335. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  336. data/spec/unit/belongs_to_spec.rb +0 -76
  337. data/spec/unit/cancan_adapter_spec.rb +0 -43
  338. data/spec/unit/comments_spec.rb +0 -176
  339. data/spec/unit/component_spec.rb +0 -18
  340. data/spec/unit/config_shared_examples.rb +0 -59
  341. data/spec/unit/controller_filters_spec.rb +0 -41
  342. data/spec/unit/csv_builder_spec.rb +0 -313
  343. data/spec/unit/dependency_spec.rb +0 -135
  344. data/spec/unit/devise_spec.rb +0 -110
  345. data/spec/unit/dsl_spec.rb +0 -120
  346. data/spec/unit/filters/active_filter_spec.rb +0 -189
  347. data/spec/unit/filters/active_spec.rb +0 -24
  348. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  349. data/spec/unit/filters/resource_spec.rb +0 -128
  350. data/spec/unit/form_builder_spec.rb +0 -990
  351. data/spec/unit/generators/install_spec.rb +0 -31
  352. data/spec/unit/helpers/collection_spec.rb +0 -68
  353. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  354. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  355. data/spec/unit/helpers/settings_spec.rb +0 -30
  356. data/spec/unit/i18n_spec.rb +0 -29
  357. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  358. data/spec/unit/menu_collection_spec.rb +0 -62
  359. data/spec/unit/menu_item_spec.rb +0 -141
  360. data/spec/unit/menu_spec.rb +0 -71
  361. data/spec/unit/namespace/authorization_spec.rb +0 -27
  362. data/spec/unit/namespace/register_page_spec.rb +0 -99
  363. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  364. data/spec/unit/namespace_spec.rb +0 -124
  365. data/spec/unit/order_clause_spec.rb +0 -81
  366. data/spec/unit/page_controller_spec.rb +0 -5
  367. data/spec/unit/page_spec.rb +0 -128
  368. data/spec/unit/pretty_format_spec.rb +0 -82
  369. data/spec/unit/pundit_adapter_spec.rb +0 -98
  370. data/spec/unit/resource/action_items_spec.rb +0 -69
  371. data/spec/unit/resource/attributes_spec.rb +0 -49
  372. data/spec/unit/resource/includes_spec.rb +0 -21
  373. data/spec/unit/resource/menu_spec.rb +0 -18
  374. data/spec/unit/resource/naming_spec.rb +0 -122
  375. data/spec/unit/resource/ordering_spec.rb +0 -35
  376. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  377. data/spec/unit/resource/pagination_spec.rb +0 -38
  378. data/spec/unit/resource/routes_spec.rb +0 -125
  379. data/spec/unit/resource/scopes_spec.rb +0 -50
  380. data/spec/unit/resource/sidebars_spec.rb +0 -43
  381. data/spec/unit/resource_collection_spec.rb +0 -175
  382. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  383. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  384. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  385. data/spec/unit/resource_controller_spec.rb +0 -273
  386. data/spec/unit/resource_registration_spec.rb +0 -61
  387. data/spec/unit/resource_spec.rb +0 -320
  388. data/spec/unit/routing_spec.rb +0 -211
  389. data/spec/unit/scope_spec.rb +0 -209
  390. data/spec/unit/settings_spec.rb +0 -117
  391. data/spec/unit/view_factory_spec.rb +0 -19
  392. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  393. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  394. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  395. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  396. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  397. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  398. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  399. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  400. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  401. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  402. data/spec/unit/views/components/columns_spec.rb +0 -187
  403. data/spec/unit/views/components/index_list_spec.rb +0 -49
  404. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  405. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  406. data/spec/unit/views/components/panel_spec.rb +0 -58
  407. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  408. data/spec/unit/views/components/site_title_spec.rb +0 -76
  409. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  410. data/spec/unit/views/components/table_for_spec.rb +0 -436
  411. data/spec/unit/views/components/tabs_spec.rb +0 -67
  412. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  413. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  414. data/spec/unit/views/pages/form_spec.rb +0 -54
  415. data/spec/unit/views/pages/index_spec.rb +0 -60
  416. data/spec/unit/views/pages/layout_spec.rb +0 -59
  417. data/spec/unit/views/pages/show_spec.rb +0 -32
  418. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  419. data/tasks/docs.rake +0 -64
  420. data/tasks/lint.rake +0 -21
  421. data/tasks/local.rake +0 -25
  422. data/tasks/parallel_tests.rake +0 -66
  423. data/tasks/test.rake +0 -29
@@ -1,88 +0,0 @@
1
- Feature: Index Formats
2
-
3
- Scenario: View index with default formats
4
- Given an index configuration of:
5
- """
6
- ActiveAdmin.register Post
7
- """
8
- And 1 post exists
9
- When I am on the index page for posts
10
- Then I should see a link to download "CSV"
11
- And I should see a link to download "XML"
12
- And I should see a link to download "JSON"
13
-
14
- Scenario: View index with download_links set to false
15
- Given an index configuration of:
16
- """
17
- ActiveAdmin.register Post do
18
- index download_links: false
19
- end
20
- """
21
- And 1 post exists
22
- When I am on the index page for posts
23
- Then I should not see a link to download "CSV"
24
- And I should not see a link to download "XML"
25
- And I should not see a link to download "JSON"
26
-
27
- Scenario: View index with pdf download link set
28
- Given an index configuration of:
29
- """
30
- ActiveAdmin.register Post do
31
- index download_links: [:pdf]
32
- end
33
- """
34
- And 1 post exists
35
- When I am on the index page for posts
36
- Then I should not see a link to download "CSV"
37
- And I should not see a link to download "XML"
38
- And I should not see a link to download "JSON"
39
- And I should see a link to download "PDF"
40
-
41
- Scenario: View index with download_links block which returns false
42
- Given an index configuration of:
43
- """
44
- ActiveAdmin.register Post do
45
- index download_links: proc { false }
46
- end
47
- """
48
- And 1 post exists
49
- When I am on the index page for posts
50
- Then I should not see a link to download "CSV"
51
- And I should not see a link to download "XML"
52
- And I should not see a link to download "JSON"
53
-
54
- When I go to the csv index page for posts
55
- Then access denied
56
-
57
- When I go to the xml index page for posts
58
- Then access denied
59
-
60
- When I go to the json index page for posts
61
- Then access denied
62
-
63
- Scenario: View index with download_links block which returns [:csv]
64
- Given an index configuration of:
65
- """
66
- ActiveAdmin.register Post do
67
- index download_links: -> { [:csv] }
68
- end
69
- """
70
- And 1 post exists
71
- When I am on the index page for posts
72
- Then I should see a link to download "CSV"
73
- And I should not see a link to download "XML"
74
- And I should not see a link to download "JSON"
75
- And I should not see a link to download "PDF"
76
-
77
- Scenario: View index with restricted formats
78
- Given an index configuration of:
79
- """
80
- ActiveAdmin.register Post do
81
- index download_links: -> { [:json] }
82
- end
83
- """
84
- When I go to the csv index page for posts
85
- Then access denied
86
-
87
- When I go to the xml index page for posts
88
- Then access denied
@@ -1,15 +0,0 @@
1
- Feature: Index as Block
2
-
3
- Viewing the resource as a block which is renderered by the user
4
-
5
- Scenario: Viewing the index as a block
6
- Given a post with the title "Hello World from Block" exists
7
- And an index configuration of:
8
- """
9
- ActiveAdmin.register Post do
10
- index as: :block do |post|
11
- span(link_to(post.title, admin_post_path(post)))
12
- end
13
- end
14
- """
15
- Then I should see "Hello World from Block" within ".index_as_block"
@@ -1,69 +0,0 @@
1
- Feature: Index as Blog
2
-
3
- Viewing resources as a blog on the index page
4
-
5
- Scenario: Viewing the blog with a resource
6
- Given a post with the title "Hello World" exists
7
- And an index configuration of:
8
- """
9
- ActiveAdmin.register Post do
10
- index as: :blog
11
- end
12
- """
13
- And I am logged in
14
- When I am on the index page for posts
15
- Then I should see a blog header "Hello World"
16
- And I should see a link to "Hello World"
17
-
18
- Scenario: Viewing the blog with a resource as a simple configuration
19
- Given a post with the title "Hello World" and body "My great post body" exists
20
- And an index configuration of:
21
- """
22
- ActiveAdmin.register Post do
23
- index as: :blog do
24
- title :title
25
- body :body
26
- end
27
- end
28
- """
29
- Then I should see a blog header "Hello World"
30
- And I should see a link to "Hello World"
31
- And I should see "My great post body" within ".post"
32
-
33
- Scenario: Viewing the blog with a resource as a block configuration
34
- Given a post with the title "Hello World" and body "My great post body" exists
35
- And an index configuration of:
36
- """
37
- ActiveAdmin.register Post do
38
- index as: :blog do
39
- title do |post|
40
- post.title + " From Block"
41
- end
42
- body do |post|
43
- post.body + " From Block"
44
- end
45
- end
46
- end
47
- """
48
- Then I should see a blog header "Hello World From Block"
49
- And I should see a link to "Hello World From Block"
50
- And I should see "My great post body From Block" within ".post"
51
-
52
- Scenario: Viewing a blog with a resource as a block configuration should render Abre components
53
- Given a post with the title "Hello World" and body "My great post body" exists
54
- And an index configuration of:
55
- """
56
- ActiveAdmin.register Post do
57
- index as: :blog do
58
- title do |post|
59
- span(class: :title_span) { post.title + " From Block " }
60
- end
61
- body do |post|
62
- span(class: :body_span) { post.body + " From Block" }
63
- end
64
- end
65
- end
66
- """
67
- Then I should see "Hello World From Block" within "span.title_span"
68
- And I should see a link to "Hello World From Block"
69
- And I should see "My great post body From Block" within ".post span.body_span"
@@ -1,45 +0,0 @@
1
- Feature: Index as Grid
2
-
3
- Viewing resources as a grid on the index page
4
-
5
- Scenario: Viewing index as a grid with a simple block configuration
6
- Given 9 posts exist
7
- And an index configuration of:
8
- """
9
- ActiveAdmin.register Post do
10
- index as: :grid do |post|
11
- h2 auto_link(post)
12
- end
13
- end
14
- """
15
- Then the table ".index_grid" should have 3 rows
16
- And the table ".index_grid" should have 3 columns
17
- And there should be 9 "a" tags within index grid
18
-
19
- Scenario: Viewing index as a grid and set the number of columns
20
- Given 9 posts exist
21
- And an index configuration of:
22
- """
23
- ActiveAdmin.register Post do
24
- index as: :grid, columns: 1 do |post|
25
- h2 auto_link(post)
26
- end
27
- end
28
- """
29
- Then the table ".index_grid" should have 9 rows
30
- And the table ".index_grid" should have 1 columns
31
- And there should be 9 "a" tags within "table.index_grid"
32
-
33
- Scenario: Viewing index as a grid with an odd number of items
34
- Given 9 posts exist
35
- And an index configuration of:
36
- """
37
- ActiveAdmin.register Post do
38
- index as: :grid, columns: 2 do |post|
39
- h2 auto_link(post)
40
- end
41
- end
42
- """
43
- Then the table ".index_grid" should have 5 rows
44
- And the table ".index_grid" should have 2 columns
45
- And there should be 9 "a" tags within "table.index_grid"
@@ -1,291 +0,0 @@
1
- Feature: Index as Table
2
-
3
- Viewing resources as a table on the index page
4
-
5
- Scenario: Viewing the default table with one resources
6
- Given an index configuration of:
7
- """
8
- ActiveAdmin.register Post
9
- """
10
- And 1 post exists
11
- When I am on the index page for posts
12
- Then I should see a sortable table header with "Id"
13
- And I should see a sortable table header with "Title"
14
- And I should see a table with id "index_table_posts"
15
-
16
- Scenario: Viewing the default table with a resource
17
- Given a post with the title "Hello World" exists
18
- And an index configuration of:
19
- """
20
- ActiveAdmin.register Post
21
- """
22
- Then I should see "Hello World"
23
- Then I should see nicely formatted datetimes
24
- And I should see a link to "View"
25
- And I should see a link to "Edit"
26
- And I should see a link to "Delete"
27
-
28
- Scenario: Customizing the columns with symbols
29
- Given a post with the title "Hello World" and body "From the body" exists
30
- And an index configuration of:
31
- """
32
- ActiveAdmin.register Post do
33
- index do
34
- column :title
35
- column :body
36
- end
37
- end
38
- """
39
- Then I should see a sortable table header with "Title"
40
- And I should see a sortable table header with "Body"
41
- And I should see "Hello World"
42
- And I should see "From the body"
43
-
44
- Scenario: Customizing the columns with a block
45
- Given a post with the title "Hello World" and body "From the body" exists
46
- And an index configuration of:
47
- """
48
- ActiveAdmin.register Post do
49
- index do
50
- column("My Title") do |post|
51
- post.title
52
- end
53
- column("My Body") do |post|
54
- post.body
55
- end
56
- end
57
- end
58
- """
59
- Then I should see a table header with "My Title"
60
- And I should see a table header with "My Body"
61
- And I should see "Hello World"
62
- And I should see "From the body"
63
-
64
- Scenario: Showing and Hiding columns
65
- Given a post with the title "Hello World" and body "From the body" exists
66
- And an index configuration of:
67
- """
68
- ActiveAdmin.register Post do
69
- index do
70
- if current_active_admin_user
71
- column :title
72
- end
73
- if current_active_admin_user.nil?
74
- column :body
75
- end
76
- end
77
- end
78
- """
79
- Then I should see a sortable table header with "Title"
80
- And I should not see a table header with "Body"
81
- And I should see "Hello World"
82
- And I should not see "From the body"
83
-
84
- Scenario: Default Actions
85
- Given a post with the title "Hello World" and body "From the body" exists
86
- And an index configuration of:
87
- """
88
- ActiveAdmin.register Post do
89
- actions :index, :show, :edit, :update
90
- end
91
- """
92
- Then I should see a member link to "View"
93
- And I should see a member link to "Edit"
94
- And I should not see a member link to "Delete"
95
-
96
- Scenario: Actions with custom column options
97
- Given a post with the title "Hello World" and body "From the body" exists
98
- And an index configuration of:
99
- """
100
- ActiveAdmin.register Post do
101
- index do
102
- column :category
103
- actions class: 'custom-column-class', name: 'That text'
104
- end
105
- end
106
- """
107
- Then I should see the actions column with the class "custom-column-class" and the title "That text"
108
-
109
- Scenario: Actions with defaults and custom actions
110
- Given a post with the title "Hello World" and body "From the body" exists
111
- And an index configuration of:
112
- """
113
- ActiveAdmin.register Post do
114
- actions :index, :show, :edit, :update
115
-
116
- index do
117
- column :category
118
- actions do |resource|
119
- link_to 'Custom Action', edit_admin_post_path(resource), class: 'member_link'
120
- end
121
- end
122
- end
123
- """
124
- Then I should see a member link to "View"
125
- And I should see a member link to "Edit"
126
- And I should not see a member link to "Delete"
127
- And I should see a member link to "Custom Action"
128
-
129
- Scenario: Actions without default actions
130
- Given a post with the title "Hello World" and body "From the body" exists
131
- And an index configuration of:
132
- """
133
- ActiveAdmin.register Post do
134
- actions :index, :show, :edit, :update
135
-
136
- index do
137
- column :category
138
- actions defaults: false do |resource|
139
- link_to 'Custom Action', edit_admin_post_path(resource), class: 'member_link'
140
- end
141
- end
142
- end
143
- """
144
- Then I should not see a member link to "View"
145
- And I should not see a member link to "Edit"
146
- And I should not see a member link to "Delete"
147
- And I should see a member link to "Custom Action"
148
-
149
- Scenario: Actions with defaults and custom actions within a dropdown
150
- Given a post with the title "Hello World" and body "From the body" exists
151
- And an index configuration of:
152
- """
153
- ActiveAdmin.register Post do
154
- actions :index, :show, :edit, :update
155
-
156
- index do
157
- column :category
158
- actions dropdown: true do |resource|
159
- item 'Custom Action', edit_admin_post_path(resource)
160
- end
161
- end
162
- end
163
- """
164
- Then I should see a dropdown menu item to "View"
165
- And I should see a dropdown menu item to "Edit"
166
- And I should not see a dropdown menu item to "Delete"
167
- And I should see a dropdown menu item to "Custom Action"
168
-
169
- Scenario: Actions without default actions within a dropdown
170
- Given a post with the title "Hello World" and body "From the body" exists
171
- And an index configuration of:
172
- """
173
- ActiveAdmin.register Post do
174
- actions :index, :show, :edit, :update
175
-
176
- index do
177
- column :category
178
- actions defaults: false, dropdown: true do |resource|
179
- item 'Custom Action', edit_admin_post_path(resource)
180
- end
181
- end
182
- end
183
- """
184
- Then I should not see a dropdown menu item to "View"
185
- And I should not see a dropdown menu item to "Edit"
186
- And I should not see a dropdown menu item to "Delete"
187
- And I should see a dropdown menu item to "Custom Action"
188
-
189
- Scenario: Index page without show action
190
- Given a post with the title "Hello World" and body "From the body" exists
191
- And an index configuration of:
192
- """
193
- ActiveAdmin.register Post do
194
- actions :index
195
- end
196
- """
197
- Then I should not see a member link to "View"
198
- And I should not see a member link to "Edit"
199
- And I should not see a member link to "Delete"
200
- And I should see "Hello World"
201
-
202
- Scenario: Associations are not sortable
203
- Given 1 post exists
204
- And an index configuration of:
205
- """
206
- ActiveAdmin.register Post do
207
- index do
208
- column :category
209
- end
210
- end
211
- """
212
- Then I should not see a sortable table header with "Category"
213
-
214
- Scenario: Columns with block are sortable by default
215
- Given 1 post exists
216
- And an index configuration of:
217
- """
218
- ActiveAdmin.register Post do
219
- index do
220
- column :author_id do end
221
- column 'published_date' do end
222
- column :category do end
223
- end
224
- end
225
- """
226
- Then I should see a sortable table header with "Author"
227
- Then I should see a sortable table header with "published_date"
228
- Then I should not see a sortable table header with "Category"
229
-
230
- Scenario: Columns with block are not sortable by when sortable option equals to false
231
- Given 1 post exists
232
- And an index configuration of:
233
- """
234
- ActiveAdmin.register Post do
235
- index do
236
- column :author_id, sortable: false do end
237
- column 'published_date', sortable: false do end
238
- end
239
- end
240
- """
241
- Then I should not see a sortable table header with "Author"
242
- Then I should not see a sortable table header with "published_date"
243
-
244
- Scenario: Sorting
245
- Given a post with the title "Hello World" and body "From the body" exists
246
- And a post with the title "Bye bye world" and body "Move your..." exists
247
- And an index configuration of:
248
- """
249
- ActiveAdmin.register Post
250
- """
251
- When I am on the index page for posts
252
- Then I should see the "index_table_posts" table:
253
- | [ ] | Id | Title | Body | Published Date | Author | Position | Category | Starred | Foo | Created At | Updated At | |
254
- | [ ] | 2 | Bye bye world | Move your... | | | | | No | | /.*/ | /.*/ | ViewEditDelete |
255
- | [ ] | 1 | Hello World | From the body | | | | | No | | /.*/ | /.*/ | ViewEditDelete |
256
- When I follow "Id"
257
- Then I should see the "index_table_posts" table:
258
- | [ ] | Id | Title | Body | Published Date | Author | Position | Category | Starred | Foo | Created At | Updated At | |
259
- | [ ] | 1 | Hello World | From the body | | | | | No | | /.*/ | /.*/ | ViewEditDelete |
260
- | [ ] | 2 | Bye bye world | Move your... | | | | | No | | /.*/ | /.*/ | ViewEditDelete |
261
-
262
- Scenario: Sorting by a virtual column
263
- Given a post with the title "Hello World" exists
264
- And a post with the title "Bye bye world" exists
265
- And an index configuration of:
266
- """
267
- ActiveAdmin.register Post do
268
- controller do
269
- def scoped_collection
270
- Post.select("id, title, length(title) as title_length")
271
- end
272
- end
273
-
274
- index do
275
- column :id
276
- column :title
277
- column("Title Length", sortable: :title_length) { |post| post.title_length }
278
- end
279
- end
280
- """
281
- When I am on the index page for posts
282
- And I follow "Title Length"
283
- Then I should see the "index_table_posts" table:
284
- | Id | Title | Title Length |
285
- | 2 | Bye bye world | 13 |
286
- | 1 | Hello World | 11 |
287
- When I follow "Title Length"
288
- Then I should see the "index_table_posts" table:
289
- | Id | Title | Title Length |
290
- | 1 | Hello World | 11 |
291
- | 2 | Bye bye world | 13 |
@@ -1,83 +0,0 @@
1
- Feature: Index Blank Slate
2
-
3
- Viewing an index page with no resources yet
4
-
5
- Scenario: Viewing the default table with no resources
6
- Given an index configuration of:
7
- """
8
- ActiveAdmin.register Post do
9
- batch_action :favourite do
10
- # nothing
11
- end
12
- scope :all, default: true
13
- end
14
- """
15
- Then I should not see a sortable table header
16
- And I should see "There are no Posts yet. Create one"
17
- And I should not see ".index_table"
18
- And I should not see pagination
19
- When I follow "Create one"
20
- Then I should be on the new post page
21
-
22
- Scenario: Viewing the default table with no resources and no 'new' action
23
- Given an index configuration of:
24
- """
25
- ActiveAdmin.register Post do
26
- actions :index, :show
27
- end
28
- """
29
- And I should see "There are no Posts yet."
30
- And I should not see "Create one"
31
-
32
- Scenario: Viewing a index using a grid with no resources
33
- Given an index configuration of:
34
- """
35
- ActiveAdmin.register Post do
36
- index as: :grid do |post|
37
- h2 auto_link(post)
38
- end
39
- end
40
- """
41
- And I should see "There are no Posts yet. Create one"
42
-
43
- Scenario: Viewing a index using blocks with no resources
44
- Given an index configuration of:
45
- """
46
- ActiveAdmin.register Post do
47
- index as: :block do |post|
48
- span(link_to(post.title, admin_post_path(post)))
49
- end
50
- end
51
- """
52
- And I should see "There are no Posts yet. Create one"
53
-
54
- Scenario: Viewing a blog with no resources
55
- Given an index configuration of:
56
- """
57
- ActiveAdmin.register Post do
58
- index as: :blog
59
- end
60
- """
61
- And I should see "There are no Posts yet. Create one"
62
-
63
- Scenario: Customizing the default table with no resources
64
- Given an index configuration of:
65
- """
66
- ActiveAdmin.register Post do
67
- index blank_slate_link: ->{link_to("Go to dashboard", admin_root_path)} do |post|
68
- end
69
- end
70
- """
71
- When I follow "Go to dashboard"
72
- Then I should see "Dashboard"
73
-
74
- Scenario: Customizing the default table with no blank slate link
75
- Given an index configuration of:
76
- """
77
- ActiveAdmin.register Post do
78
- index blank_slate_link: false do |post|
79
- end
80
- end
81
- """
82
- Then I should see "There are no Posts yet."
83
- And I should not see "Create one"
@@ -1,75 +0,0 @@
1
- Feature: Index Parameters
2
-
3
- Scenario: Viewing index when download_links disabled
4
- Given an index configuration of:
5
- """
6
- ActiveAdmin.register Post do
7
- index as: :table, download_links: false
8
- end
9
- """
10
- Given 31 posts exist
11
- When I am on the index page for posts
12
- Then I should not see a link to download "CSV"
13
-
14
- Scenario: Viewing index when download_links disabled globally
15
- Given a configuration of:
16
- """
17
- ActiveAdmin.application.download_links = false
18
- """
19
- Given an index configuration of:
20
- """
21
- ActiveAdmin.register Post do
22
- index as: :table
23
- end
24
- """
25
- Given 1 posts exist
26
- When I am on the index page for posts
27
- Then I should be on the index page for posts
28
- Then I should not see a link to download "CSV"
29
- Given a configuration of:
30
- """
31
- ActiveAdmin.application.download_links = true
32
- """
33
-
34
- Scenario: Viewing index when download_links disabled only in one namespace
35
- Given a configuration of:
36
- """
37
- ActiveAdmin.application.namespace(:superadmin).download_links = false
38
- ActiveAdmin.register AdminUser, namespace: :superadmin
39
- """
40
- Given an index configuration of:
41
- """
42
- ActiveAdmin.register Post do
43
- index as: :table
44
- end
45
- ActiveAdmin.register Post, namespace: :superadmin do
46
- index as: :table
47
- end
48
- """
49
- Given 1 posts exist
50
- When I am on the index page for posts in the superadmin namespace
51
- Then I should be on the index page for posts in the superadmin namespace
52
- Then I should not see a link to download "CSV"
53
- When I am on the index page for posts
54
- Then I should be on the index page for posts
55
- Then I should see a link to download "CSV"
56
-
57
- Scenario: Viewing index when download_links enabled only for a resource
58
- Given a configuration of:
59
- """
60
- ActiveAdmin.application.namespace(:superadmin).download_links = false
61
- ActiveAdmin.register AdminUser, namespace: :superadmin
62
- """
63
- Given an index configuration of:
64
- """
65
- ActiveAdmin.register Post do
66
- index as: :table
67
- end
68
- ActiveAdmin.register Post, namespace: :superadmin do
69
- index as: :table, download_links: true
70
- end
71
- """
72
- Given 1 posts exist
73
- When I am on the index page for posts in the superadmin namespace
74
- Then I should be on the index page for posts in the superadmin namespace
75
- Then I should see a link to download "CSV"