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,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
@@ -1,47 +0,0 @@
1
- Then /^I should see a select filter for "([^"]*)"$/ do |label|
2
- expect(page).to have_css '.filter_select label', text: label
3
- end
4
-
5
- Then /^I should see a string filter for "([^"]*)"$/ do |label|
6
- expect(page).to have_css '.filter_string label', text: label
7
- end
8
-
9
- Then /^I should see a date range filter for "([^"]*)"$/ do |label|
10
- expect(page).to have_css '.filter_date_range label', text: label
11
- end
12
-
13
- Then /^I should see the following filters:$/ do |table|
14
- table.rows_hash.each do |label, type|
15
- step %{I should see a #{type} filter for "#{label}"}
16
- end
17
- end
18
-
19
- Given(/^I add parameter "([^"]*)" with value "([^"]*)" to the URL$/) do |key, value|
20
- url = page.current_url
21
- separator = url.include?('?') ? '&' : '?'
22
- visit url + separator + key.to_s + '=' + value.to_s
23
- end
24
-
25
- Then(/^I should( not)? have parameter "([^"]*)" with value "([^"]*)"$/) do |negative, key, value|
26
- query = URI(page.current_url).query
27
- if query.nil?
28
- expect(negative).to eq true
29
- else
30
- params = Rack::Utils.parse_query query
31
- expect(params[key]).to_not eq value if negative
32
- expect(params[key]).to eq value unless negative
33
- end
34
- end
35
-
36
- Then /^I should see current filter "([^"]*)" equal to "([^"]*)" with label "([^"]*)"$/ do |name, value, label|
37
- expect(page).to have_css "li.current_filter_#{name} span", text: label
38
- expect(page).to have_css "li.current_filter_#{name} b", text: value
39
- end
40
-
41
- Then /^I should see current filter "([^"]*)" equal to "([^"]*)"$/ do |name, value|
42
- expect(page).to have_css "li.current_filter_#{name} b", text: value
43
- end
44
-
45
- Then /^I should see link "([^"]*)" in current filters/ do |label|
46
- expect(page).to have_css "li.current_filter b a", text: label
47
- end
@@ -1,11 +0,0 @@
1
- Then /^I should see a flash with "([^"]*)"$/ do |text|
2
- expect(page).to have_content text
3
- end
4
-
5
- Then /^I should see a successful create flash$/ do
6
- expect(page).to have_css 'div.flash_notice', text: /was successfully created/
7
- end
8
-
9
- Then /^I should not see a successful create flash$/ do
10
- expect(page).to_not have_css 'div.flash_notice', text: /was successfully created/
11
- end
@@ -1,11 +0,0 @@
1
- Then /^I should see the default footer$/ do
2
- expect(page).to have_css '#footer', text: "Powered by Active Admin #{ActiveAdmin::VERSION}"
3
- end
4
-
5
- Then /^I should see the footer "([^"]*)"$/ do |footer|
6
- expect(page).to have_css '#footer', text: footer
7
- end
8
-
9
- Then /^I should not see the footer "([^"]*)"$/ do |footer|
10
- expect(page).to_not have_css '#footer', text: footer
11
- end
@@ -1,56 +0,0 @@
1
- require 'csv'
2
-
3
- Then "I should see nicely formatted datetimes" do
4
- expect(page.body).to match /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
5
- end
6
-
7
- Then /^I should( not)? see a link to download "([^"]*)"$/ do |negate, format|
8
- method = negate ? :to_not : :to
9
- expect(page).send method, have_css("#index_footer a", text: format)
10
- end
11
-
12
- # Check first rows of the displayed CSV.
13
- Then /^I should download a CSV file with "([^"]*)" separator for "([^"]*)" containing:$/ do |sep, resource_name, table|
14
- body = page.driver.response.body
15
- content_type_header, content_disposition_header = %w[Content-Type Content-Disposition].map do |header_name|
16
- page.response_headers[header_name]
17
- end
18
- expect(content_type_header).to eq 'text/csv; charset=utf-8'
19
- expect(content_disposition_header).to match /\Aattachment; filename=".+?\.csv"\z/
20
-
21
- begin
22
- csv = CSV.parse(body, col_sep: sep)
23
- table.raw.each_with_index do |expected_row, row_index|
24
- expected_row.each_with_index do |expected_cell, col_index|
25
- cell = csv.try(:[], row_index).try(:[], col_index)
26
- if expected_cell.blank?
27
- expect(cell).to eq nil
28
- else
29
- expect(cell || '').to match /#{expected_cell}/
30
- end
31
- end
32
- end
33
- rescue
34
- puts "Expecting:"
35
- p table.raw
36
- puts "to match:"
37
- p csv
38
- raise $!
39
- end
40
- end
41
-
42
- Then /^I should download a CSV file for "([^"]*)" containing:$/ do |resource_name, table|
43
- step %{I should download a CSV file with "," separator for "#{resource_name}" containing:}, table
44
- end
45
-
46
- Then /^the CSV file should contain "([^"]*)" in quotes$/ do |text|
47
- expect(page.driver.response.body).to match /"#{text}"/
48
- end
49
-
50
- Then /^the encoding of the CSV file should be "([^"]*)"$/ do |text|
51
- expect(page.driver.response.body.encoding).to be Encoding.find(Encoding.aliases[text] || text)
52
- end
53
-
54
- Then /^access denied$/ do
55
- expect(page).to have_content(I18n.t("active_admin.access_denied.message"))
56
- end
@@ -1,11 +0,0 @@
1
- Given /^String "([^"]*)" corresponds to "([^"]*)"$/ do |translation, key|
2
- *seq, last_key = key.split('.')
3
- result = seq.reverse.inject({last_key.to_sym => translation}) do |temp_result, nested_key|
4
- {nested_key.to_sym => temp_result}
5
- end
6
- I18n.backend.store_translations :en, active_admin: result
7
- end
8
-
9
- When /^I set my locale to "([^"]*)"$/ do |lang|
10
- I18n.locale = lang
11
- end
@@ -1,29 +0,0 @@
1
- Then /^I should( not)? see the scope "([^"]*)"( selected)?$/ do |negate, name, selected|
2
- should = "I should#{' not' if negate}"
3
- scope = ".scopes#{' .selected' if selected}"
4
- step %{#{should} see "#{name}" within "#{scope}"}
5
- end
6
-
7
- Then /^I should see the scope "([^"]*)" not selected$/ do |name|
8
- step %{I should see the scope "#{name}"}
9
- expect(page).to_not have_css '.scopes .selected', text: name
10
- end
11
-
12
- Then /^I should see the scope "([^"]*)" with the count (\d+)$/ do |name, count|
13
- name = name.tr(' ', '').underscore.downcase
14
- step %{I should see "#{count}" within ".scopes .#{name} .count"}
15
- end
16
-
17
- Then /^I should see the scope with label "([^"]*)"$/ do |label|
18
- expect(page).to have_link(label)
19
- end
20
-
21
- Then /^I should see the current scope with label "([^"]*)"$/ do |label|
22
- expect(page).to have_css '.current_scope_name', text: label
23
- end
24
-
25
- Then /^I should see the scope "([^"]*)" with no count$/ do |name|
26
- name = name.tr(" ", "").underscore.downcase
27
- expect(page).to have_css ".scopes .#{name}"
28
- expect(page).to_not have_css ".scopes .#{name} .count"
29
- end
@@ -1,3 +0,0 @@
1
- When /^I click "(.*?)"$/ do |link|
2
- click_link(link)
3
- end
@@ -1,3 +0,0 @@
1
- Then /^I should see the Active Admin layout$/ do
2
- expect(page).to have_css '#active_admin_content #main_content_wrapper'
3
- end
@@ -1,7 +0,0 @@
1
- Then /^I should see an action item button "([^"]*)"$/ do |content|
2
- expect(page).to have_css '.action_items a', text: content
3
- end
4
-
5
- Then /^I should not see an action item button "([^"]*)"$/ do |content|
6
- expect(page).to_not have_css '.action_items', text: content
7
- end
@@ -1,11 +0,0 @@
1
- Then /^I should see a menu item for "([^"]*)"$/ do |name|
2
- expect(page).to have_css '#tabs > li > a', text: name
3
- end
4
-
5
- Then /^I should not see a menu item for "([^"]*)"$/ do |name|
6
- expect(page).to_not have_css '#tabs > li > a', text: name
7
- end
8
-
9
- Then /^I should see a nested menu item for "([^"]*)"$/ do |name|
10
- expect(page).to have_css '#tabs > li > ul > li > a', text: name
11
- end
@@ -1,3 +0,0 @@
1
- Then /^the site should contain a meta tag with name "([^"]*)" and content "([^"]*)"$/ do |name, content|
2
- expect(page).to have_xpath("//meta[@name='#{name}' and @content='#{content}']", visible: false)
3
- end
@@ -1,15 +0,0 @@
1
- Then /^I should not see pagination$/ do
2
- expect(page).to_not have_css '.pagination'
3
- end
4
-
5
- Then /^I should see pagination with (\d+) pages$/ do |count|
6
- expect(page).to have_css '.pagination span.page', count: count
7
- end
8
-
9
- Then /^I should see the pagination "Next" link/ do
10
- expect(page).to have_css "a", text: "Next"
11
- end
12
-
13
- Then /^I should not see the pagination "Next" link/ do
14
- expect(page).to_not have_css "a", text: "Next"
15
- end
@@ -1,11 +0,0 @@
1
- Then /^I should see a sidebar titled "([^"]*)"$/ do |title|
2
- expect(page).to have_css '.sidebar_section h3', text: title
3
- end
4
-
5
- Then /^I should not see a sidebar titled "([^"]*)"$/ do |title|
6
- expect(page).not_to have_css '.sidebar_section h3', text: title
7
- end
8
-
9
- Then(/^I should see a sidebar titled "(.*?)" above sidebar titled "(.*?)"$/) do |top_title, bottom_title|
10
- expect(page).to have_css %Q(.sidebar_section:contains('#{top_title}') + .sidebar_section:contains('#{bottom_title}'))
11
- end
@@ -1,17 +0,0 @@
1
- Then /^I should see the site title "([^"]*)"$/ do |title|
2
- expect(page).to have_css 'h1#site_title', text: title
3
- end
4
-
5
- Then /^I should not see the site title "([^"]*)"$/ do |title|
6
- expect(page).to_not have_css 'h1#site_title', text: title
7
- end
8
-
9
- Then /^I should see the site title image "([^"]*)"$/ do |image|
10
- img = page.find('h1#site_title img')
11
- expect(img[:src]).to eq(image)
12
- end
13
-
14
- Then /^I should see the site title image linked to "([^"]*)"$/ do |url|
15
- link = page.find('h1#site_title a')
16
- expect(link[:href]).to eq(url)
17
- end
@@ -1,8 +0,0 @@
1
- Then /^the "([^"]*)" tab should be selected$/ do |name|
2
- step %{I should see "#{name}" within "ul#tabs li.current"}
3
- end
4
-
5
- Then(/^I should see two tabs "(.*?)" and "(.*?)"$/) do |tab_1, tab_2|
6
- expect(page).to have_link(tab_1)
7
- expect(page).to have_link(tab_2)
8
- end
@@ -1,116 +0,0 @@
1
- Then /^I should see (\d+) ([\w]*) in the table$/ do |count, resource_type|
2
- expect(page).to \
3
- have_css("table.index_table tr > td:first-child", count: count.to_i)
4
- end
5
-
6
- # TODO: simplify this, if possible?
7
- class HtmlTableToTextHelper
8
- def initialize(html, table_css_selector = "table")
9
- @html = html
10
- @selector = table_css_selector
11
- end
12
-
13
- def to_array
14
- rows = Nokogiri::HTML(@html).css("#{@selector} tr")
15
- rows.map do |row|
16
- row.css('th, td').map do |td|
17
- cell_to_string(td)
18
- end
19
- end
20
- end
21
-
22
- private
23
-
24
- def cell_to_string(td)
25
- str = ""
26
- input = td.css('input').last
27
-
28
- if input
29
- str << input_to_string(input)
30
- end
31
-
32
- str << td.content.strip.gsub("\n", ' ')
33
- end
34
-
35
- def input_to_string(input)
36
- case input.attribute("type").value
37
- when "checkbox"
38
- if input.attribute("disabled")
39
- "_"
40
- else
41
- if input.attribute("checked")
42
- "[X]"
43
- else
44
- "[ ]"
45
- end
46
- end
47
- when "text"
48
- if input.attribute("value").present?
49
- "[#{input.attribute("value")}]"
50
- else
51
- "[ ]"
52
- end
53
- when "submit"
54
- input.attribute("value")
55
- else
56
- raise "I don't know what to do with #{input}"
57
- end
58
- end
59
- end
60
-
61
- module TableMatchHelper
62
- # @param table [Array[Array]]
63
- # @param expected_table [Array[Array[String]]]
64
- # The expected_table values are String. They are converted to
65
- # Regexp when they start and end with a '/'
66
- # Example:
67
- #
68
- # assert_table_match(
69
- # [["Name", "Date"], ["Philippe", "Feb 08"]],
70
- # [["Name", "Date"], ["Philippe", "/\w{3} \d{2}/"]]
71
- # )
72
- def assert_tables_match(table, expected_table)
73
- expected_table.each_index do |row_index|
74
- expected_table[row_index].each_index do |column_index|
75
- expected_cell = expected_table[row_index][column_index]
76
- cell = table.try(:[], row_index).try(:[], column_index)
77
- begin
78
- assert_cells_match(cell, expected_cell)
79
- rescue
80
- puts "Cell at line #{row_index} and column #{column_index}: #{cell.inspect} does not match #{expected_cell.inspect}"
81
- puts "Expecting:"
82
- table.each { |row| puts row.inspect }
83
- puts "to match:"
84
- expected_table.each { |row| puts row.inspect }
85
- raise $!
86
- end
87
- end
88
- end
89
- end
90
-
91
- def assert_cells_match(cell, expected_cell)
92
- if expected_cell =~ /^\/.*\/$/
93
- expect(cell).to match /#{expected_cell[1..-2]}/
94
- else
95
- expect((cell || "").strip).to eq expected_cell
96
- end
97
- end
98
- end
99
-
100
- World(TableMatchHelper)
101
-
102
- # Usage:
103
- #
104
- # I should see the "invoices" table:
105
- # | Invoice # | Date | Total Amount |
106
- # | /\d+/ | 27/01/12 | $30.00 |
107
- # | /\d+/ | 12/02/12 | $25.00 |
108
- #
109
- Then /^I should see the "([^"]*)" table:$/ do |table_id, expected_table|
110
- expect(page).to have_css "table##{table_id}"
111
-
112
- assert_tables_match(
113
- HtmlTableToTextHelper.new(page.body, "table##{table_id}").to_array,
114
- expected_table.raw
115
- )
116
- end
@@ -1,52 +0,0 @@
1
- def ensure_user_created(email)
2
- user = AdminUser.where(email: email).first_or_create(password: 'password', password_confirmation: 'password')
3
-
4
- unless user.persisted?
5
- raise "Could not create user #{email}: #{user.errors.full_messages}"
6
- end
7
- user
8
- end
9
-
10
- Given /^(?:I am logged|log) out$/ do
11
- click_link 'Logout' if page.all(:css, "a", text: 'Logout').any?
12
- end
13
-
14
- Given /^I am logged in$/ do
15
- step 'log out'
16
- login_as ensure_user_created 'admin@example.com'
17
- end
18
-
19
- # only for @requires-reloading scenario
20
- Given /^I am logged in with capybara$/ do
21
- ensure_user_created 'admin@example.com'
22
- step 'log out'
23
-
24
- visit new_admin_user_session_path
25
- fill_in 'Email', with: 'admin@example.com'
26
- fill_in 'Password', with: 'password'
27
- click_button 'Login'
28
- end
29
-
30
- Given /^an admin user "([^"]*)" exists$/ do |email|
31
- ensure_user_created(email)
32
- end
33
-
34
- Given /^"([^"]*)" requests a password reset with token "([^"]*)"( but it expires)?$/ do |email, token, expired|
35
- visit new_admin_user_password_path
36
- fill_in 'Email', with: email
37
- allow(Devise).to receive(:friendly_token).and_return(token)
38
- click_button "Reset My Password"
39
-
40
- AdminUser.where(email: email).first.update_attribute :reset_password_sent_at, 1.month.ago if expired
41
- end
42
-
43
- Given /^override locale "([^"]*)" with "([^"]*)"$/ do |path, value|
44
- keys_value = path.split('.') + [value]
45
- locale_hash = keys_value.reverse.inject{|a, n| {n=>a}}
46
- I18n.available_locales
47
- I18n.backend.store_translations(I18n.locale, locale_hash)
48
- end
49
-
50
- When /^I fill in the password field with "([^"]*)"$/ do |password|
51
- fill_in 'admin_user_password', with: password
52
- end