yousty-activeadmin 1.0.4.pre → 1.0.5.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -6,16 +6,16 @@ end
6
6
 
7
7
  Then /^I should see the scope "([^"]*)" not selected$/ do |name|
8
8
  step %{I should see the scope "#{name}"}
9
- page.should_not have_css('.scopes .selected', :text => name)
9
+ expect(page).to_not have_css '.scopes .selected', text: name
10
10
  end
11
11
 
12
12
  Then /^I should see the scope "([^"]*)" with the count (\d+)$/ do |name, count|
13
- name = name.gsub(' ','').underscore.downcase
13
+ name = name.tr(' ','').underscore.downcase
14
14
  step %{I should see "#{count}" within ".scopes .#{name} .count"}
15
15
  end
16
16
 
17
17
  Then /^I should see the scope "([^"]*)" with no count$/ do |name|
18
- name = name.gsub(" ", "").underscore.downcase
19
- page.should have_css(".scopes .#{name}")
20
- page.should_not have_css(".scopes .#{name} .count")
18
+ name = name.tr(" ", "").underscore.downcase
19
+ expect(page).to have_css ".scopes .#{name}"
20
+ expect(page).to_not have_css ".scopes .#{name} .count"
21
21
  end
@@ -1,3 +1,3 @@
1
1
  Then /^I should see the Active Admin layout$/ do
2
- page.should have_css("#active_admin_content #main_content_wrapper")
2
+ expect(page).to have_css '#active_admin_content #main_content_wrapper'
3
3
  end
@@ -1,7 +1,7 @@
1
1
  Then /^I should see an action item button "([^"]*)"$/ do |content|
2
- page.should have_css(".action_items a", :text => content)
2
+ expect(page).to have_css '.action_items a', text: content
3
3
  end
4
4
 
5
5
  Then /^I should not see an action item button "([^"]*)"$/ do |content|
6
- page.should_not have_css(".action_items", :text => content)
6
+ expect(page).to_not have_css '.action_items', text: content
7
7
  end
@@ -1,11 +1,11 @@
1
1
  Then /^I should see a menu item for "([^"]*)"$/ do |name|
2
- page.should have_css('#tabs li a', :text => name)
2
+ expect(page).to have_css '#tabs li a', text: name
3
3
  end
4
4
 
5
5
  Then /^I should not see a menu item for "([^"]*)"$/ do |name|
6
- page.should_not have_css('#tabs li a', :text => name)
6
+ expect(page).to_not have_css '#tabs li a', text: name
7
7
  end
8
8
 
9
9
  Then /^I should see a nested menu item for "([^"]*)"$/ do |name|
10
- page.should have_css('#tabs > li > ul > li > a', :text => name)
10
+ expect(page).to have_css '#tabs > li > ul > li > a', text: name
11
11
  end
@@ -1,8 +1,7 @@
1
1
  Then /^I should not see pagination$/ do
2
- page.should_not have_css(".pagination")
2
+ expect(page).to_not have_css '.pagination'
3
3
  end
4
4
 
5
5
  Then /^I should see pagination with (\d+) pages$/ do |count|
6
- step %{I should see "#{count}" within ".pagination a"}
7
- step %{I should not see "#{count.to_i + 1}" within ".pagination a"}
6
+ expect(page).to have_css '.pagination span.page', count: count
8
7
  end
@@ -1,8 +1,13 @@
1
1
  Then /^I should see a sidebar titled "([^"]*)"$/ do |title|
2
- page.should have_css(".sidebar_section h3", :text => title)
2
+ expect(page).to have_css '.sidebar_section h3', text: title
3
3
  end
4
4
 
5
5
  Then /^I should not see a sidebar titled "([^"]*)"$/ do |title|
6
- title = title.gsub(' ', '').underscore
7
- page.all(:css, "##{title}_sidebar_section").count.should == 0
6
+ title = title.tr(' ', '').underscore
7
+ sidebars = page.all :css, "##{title}_sidebar_section"
8
+ expect(sidebars.count).to eq 0
9
+ end
10
+
11
+ Then(/^I should see a sidebar titled "(.*?)" above sidebar titled "(.*?)"$/) do |top_title, bottom_title|
12
+ expect(page).to have_css %Q(.sidebar_section:contains('#{top_title}') + .sidebar_section:contains('#{bottom_title}'))
8
13
  end
@@ -1,15 +1,17 @@
1
1
  Then /^I should see the site title "([^"]*)"$/ do |title|
2
- page.should have_css('h1#site_title', :text => title)
2
+ expect(page).to have_css 'h1#site_title', text: title
3
3
  end
4
4
 
5
5
  Then /^I should not see the site title "([^"]*)"$/ do |title|
6
- page.should_not have_css('h1#site_title', :text => title)
6
+ expect(page).to_not have_css 'h1#site_title', text: title
7
7
  end
8
8
 
9
9
  Then /^I should see the site title image "([^"]*)"$/ do |image|
10
- page.should have_css('h1#site_title img', :src => image)
10
+ img = page.find('h1#site_title img')
11
+ expect(img[:src]).to eq(image)
11
12
  end
12
13
 
13
14
  Then /^I should see the site title image linked to "([^"]*)"$/ do |url|
14
- page.should have_css('h1#site_title a', :href => url)
15
+ link = page.find('h1#site_title a')
16
+ expect(link[:href]).to eq(url)
15
17
  end
@@ -1,3 +1,3 @@
1
1
  Then /^"(.*?)" shouldn't be a symbol$/ do |sym|
2
- Symbol.all_symbols.map(&:to_s).should_not include(sym), 'symbol detected!'
2
+ expect(Symbol.all_symbols.map &:to_s).to_not include(sym), 'symbol detected!'
3
3
  end
@@ -1,3 +1,8 @@
1
1
  Then /^the "([^"]*)" tab should be selected$/ do |name|
2
2
  step %{I should see "#{name}" within "ul#tabs li.current"}
3
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,5 +1,5 @@
1
1
  Then /^I should see (\d+) ([\w]*) in the table$/ do |count, resource_type|
2
- all("table.index_table tr > td:first").count.should eq count.to_i
2
+ expect(all("table.index_table tr > td:first").count).to eq count.to_i
3
3
  end
4
4
 
5
5
  # TODO: simplify this, if possible?
@@ -91,9 +91,9 @@ module TableMatchHelper
91
91
 
92
92
  def assert_cells_match(cell, expected_cell)
93
93
  if expected_cell =~ /^\/.*\/$/
94
- cell.should match(Regexp.new(expected_cell[1..-2]))
94
+ expect(cell).to match /#{expected_cell[1..-2]}/
95
95
  else
96
- (cell || "").strip.should == expected_cell
96
+ expect((cell || "").strip).to eq expected_cell
97
97
  end
98
98
  end
99
99
 
@@ -110,7 +110,7 @@ World(TableMatchHelper)
110
110
  # | /\d+/ | 12/02/12 | $25.00 |
111
111
  #
112
112
  Then /^I should see the "([^"]*)" table:$/ do |table_id, expected_table|
113
- page.should have_css("table##{table_id}")
113
+ expect(page).to have_css "table##{table_id}"
114
114
 
115
115
  assert_tables_match(
116
116
  HtmlTableToTextHelper.new(page.body, "table##{table_id}").to_array,
@@ -1,5 +1,5 @@
1
1
  def ensure_user_created(email)
2
- user = AdminUser.where(:email => email).first_or_create(:password => 'password', :password_confirmation => 'password')
2
+ user = AdminUser.where(email: email).first_or_create(password: 'password', password_confirmation: 'password')
3
3
 
4
4
  unless user.persisted?
5
5
  raise "Could not create user #{email}: #{user.errors.full_messages}"
@@ -8,7 +8,7 @@ def ensure_user_created(email)
8
8
  end
9
9
 
10
10
  Given /^(?:I am logged|log) out$/ do
11
- click_link 'Logout' if page.all(:css, "a", :text => 'Logout').any?
11
+ click_link 'Logout' if page.all(:css, "a", text: 'Logout').any?
12
12
  end
13
13
 
14
14
  Given /^I am logged in$/ do
@@ -22,8 +22,8 @@ Given /^I am logged in with capybara$/ do
22
22
  step 'log out'
23
23
 
24
24
  visit new_admin_user_session_path
25
- fill_in 'Email', :with => 'admin@example.com'
26
- fill_in 'Password', :with => 'password'
25
+ fill_in 'Email', with: 'admin@example.com'
26
+ fill_in 'Password', with: 'password'
27
27
  click_button 'Login'
28
28
  end
29
29
 
@@ -31,9 +31,15 @@ Given /^an admin user "([^"]*)" exists$/ do |email|
31
31
  ensure_user_created(email)
32
32
  end
33
33
 
34
- Given /^an admin user "([^"]*)" exists with( expired)? reset password token "(.*?)"$/ do |email, expired, token|
35
- user = ensure_user_created(email)
36
- user.reset_password_token = token
37
- user.reset_password_sent_at = 1.minute.ago unless expired
38
- user.save
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
+ When /^I fill in the password field with "([^"]*)"$/ do |password|
44
+ fill_in 'admin_user_password', with: password
39
45
  end
@@ -36,15 +36,15 @@ When /^(?:I )press "([^"]*)"$/ do |button|
36
36
  end
37
37
 
38
38
  When /^(?:I )follow "([^"]*)"$/ do |link|
39
- click_link(link)
39
+ first(:link, link).click
40
40
  end
41
41
 
42
42
  When /^(?:I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
43
- fill_in(field, :with => value)
43
+ fill_in(field, with: value)
44
44
  end
45
45
 
46
46
  When /^(?:I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
47
- select(value, :from => field)
47
+ select(value, from: field)
48
48
  end
49
49
 
50
50
  When /^(?:I )(check|uncheck|choose) "([^"]*)"$/ do |action, field|
@@ -56,29 +56,28 @@ When /^(?:I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
56
56
  end
57
57
 
58
58
  Then /^(?:I )should( not)? see( the element)? "([^"]*)"$/ do |negate, is_css, text|
59
- should = negate ? :should_not : :should
59
+ should = negate ? :not_to : :to
60
60
  have = is_css ? have_css(text) : have_content(text)
61
- page.send should, have
61
+ expect(page).send should, have
62
62
  end
63
63
 
64
64
  Then /^the "([^"]*)" field(?: within (.*))? should( not)? contain "([^"]*)"$/ do |field, parent, negate, value|
65
65
  with_scope(parent) do
66
66
  field = find_field(field)
67
- field_value = (field.tag_name == 'textarea') ? field.text : field.value
68
- negate ? field_value.should_not =~ /#{value}/ : field_value.should =~ /#{value}/
67
+ value = field.tag_name == 'textarea' ? field.text : field.value
68
+
69
+ expect(value).send negate ? :not_to : :to, match(/#{value}/)
69
70
  end
70
71
  end
71
72
 
72
73
  Then /^the "([^"]*)" checkbox(?: within (.*))? should( not)? be checked$/ do |label, parent, negate|
73
74
  with_scope(parent) do
74
- field_checked = find_field(label)['checked']
75
- field_checked.should negate ? be_false : be_true
75
+ expect(find_field(label)['checked']).to negate ? eq(false) : eq(true)
76
76
  end
77
77
  end
78
78
 
79
79
  Then /^(?:|I )should be on (.+)$/ do |page_name|
80
- current_path = URI.parse(current_url).path
81
- current_path.should == path_to(page_name)
80
+ expect(URI.parse(current_url).path).to eq path_to page_name
82
81
  end
83
82
 
84
83
  Then /^show me the page$/ do
@@ -7,18 +7,10 @@ Feature: STI Resource
7
7
  And a configuration of:
8
8
  """
9
9
  ActiveAdmin.register Publisher do
10
- controller do
11
- def permitted_params
12
- params.permit publisher: [:first_name, :last_name, :username, :age]
13
- end if Rails::VERSION::MAJOR == 4
14
- end
10
+ permit_params :first_name, :last_name, :username, :age if Rails::VERSION::MAJOR == 4
15
11
  end
16
12
  ActiveAdmin.register User do
17
- controller do
18
- def permitted_params
19
- params.permit user: [:first_name, :last_name, :username, :age]
20
- end if Rails::VERSION::MAJOR == 4
21
- end
13
+ permit_params :first_name, :last_name, :username, :age if Rails::VERSION::MAJOR == 4
22
14
  end
23
15
  """
24
16
 
@@ -0,0 +1,73 @@
1
+ @rails4
2
+ @silent_unpermitted_params_failure
3
+ Feature: Strong Params
4
+
5
+ When I am using Rails 4
6
+ I want to use Strong Parameters
7
+
8
+ Background:
9
+ Given a category named "Music" exists
10
+ And a user named "John Doe" exists
11
+ And a post with the title "Hello World" written by "John Doe" exists
12
+ And I am logged in
13
+ Given a configuration of:
14
+ """
15
+ ActiveAdmin.register Post do
16
+ end
17
+ """
18
+ When I am on the index page for posts
19
+
20
+ Scenario: Static permitted parameters
21
+ Given a configuration of:
22
+ """
23
+ ActiveAdmin.register Post do
24
+ permit_params :author, :title, :starred
25
+ end
26
+ """
27
+ Given I follow "Edit"
28
+
29
+ When I fill in "Title" with "Hello World from update"
30
+ And I check "Starred"
31
+ When I press "Update Post"
32
+ Then I should see "Post was successfully updated."
33
+ And I should see the attribute "Title" with "Hello World from update"
34
+ And I should see the attribute "Author" with "John Doe"
35
+ And I should see the attribute "Starred" with "true"
36
+
37
+ Scenario: Dynamic permitted parameters
38
+ Given a configuration of:
39
+ """
40
+ ActiveAdmin.register Post do
41
+ permit_params do
42
+ allow = [:author, :title]
43
+ allow << :starred
44
+ allow
45
+ end
46
+ end
47
+ """
48
+ Given I follow "Edit"
49
+
50
+ When I fill in "Title" with "Hello World from update"
51
+ And I check "Starred"
52
+ When I press "Update Post"
53
+ Then I should see "Post was successfully updated."
54
+ And I should see the attribute "Title" with "Hello World from update"
55
+ And I should see the attribute "Author" with "John Doe"
56
+ And I should see the attribute "Starred" with "true"
57
+
58
+ Scenario: Should not update parameters that are not declared as permitted
59
+ Given a configuration of:
60
+ """
61
+ ActiveAdmin.register Post do
62
+ permit_params :author, :title
63
+ end
64
+ """
65
+ Given I follow "Edit"
66
+
67
+ When I fill in "Title" with "Hello World from update"
68
+ And I check "Starred"
69
+ When I press "Update Post"
70
+ Then I should see "Post was successfully updated."
71
+ And I should see the attribute "Title" with "Hello World from update"
72
+ And I should see the attribute "Author" with "John Doe"
73
+ And the attribute "Starred" should be empty
@@ -6,7 +6,7 @@
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "cucumber"
8
8
 
9
- require File.expand_path('../../../spec/spec_helper_without_rails', __FILE__)
9
+ require File.expand_path('../../../spec/spec_helper', __FILE__)
10
10
 
11
11
  ENV['RAILS_ROOT'] = File.expand_path("../../../spec/rails/rails-#{ENV["RAILS"]}", __FILE__)
12
12
 
@@ -15,9 +15,10 @@ unless File.exists?(ENV['RAILS_ROOT'])
15
15
  system 'rake setup'
16
16
  end
17
17
 
18
- # Ensure the Active Admin load path is happy
19
18
  require 'rails'
19
+ require 'active_record'
20
20
  require 'active_admin'
21
+ require 'devise'
21
22
  ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
22
23
 
23
24
  require ENV['RAILS_ROOT'] + '/config/environment'
@@ -28,9 +29,29 @@ autoload :ActiveAdmin, 'active_admin'
28
29
 
29
30
  require 'cucumber/rails'
30
31
 
32
+ require 'rspec/mocks'
33
+ World(RSpec::Mocks::ExampleMethods)
34
+
35
+ Before do
36
+ RSpec::Mocks.setup
37
+ end
38
+
39
+ After do
40
+ begin
41
+ RSpec::Mocks.verify
42
+ ensure
43
+ RSpec::Mocks.teardown
44
+ end
45
+ end
46
+
31
47
  require 'capybara/rails'
32
48
  require 'capybara/cucumber'
33
49
  require 'capybara/session'
50
+ require 'capybara/poltergeist'
51
+ require 'phantomjs/poltergeist'
52
+
53
+ Capybara.javascript_driver = :poltergeist
54
+
34
55
  # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
35
56
  # order to ease the transition to Capybara we set the default here. If you'd
36
57
  # prefer to use XPath just remove this line and adjust any selectors in your
@@ -110,3 +131,15 @@ unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
110
131
  Before { DeferredGarbageCollection.start }
111
132
  After { DeferredGarbageCollection.reconsider }
112
133
  end
134
+
135
+ # Don't run @rails4 tagged features for versions before Rails 4.
136
+ Before('@rails4') do |scenario|
137
+ scenario.skip_invoke! if Rails::VERSION::MAJOR < 4
138
+ end
139
+
140
+ Around '@silent_unpermitted_params_failure' do |scenario, block|
141
+ original = ActionController::Parameters.action_on_unpermitted_parameters
142
+ ActionController::Parameters.action_on_unpermitted_parameters = false
143
+ block.call
144
+ ActionController::Parameters.action_on_unpermitted_parameters = original
145
+ end
@@ -23,7 +23,7 @@ module NavigationHelpers
23
23
  "/admin/posts/1"
24
24
  when /the first post edit page/
25
25
  "/admin/posts/1/edit"
26
- when /the admin password reset form with reset password token "([^"]*)"/
26
+ when /the admin password reset form with token "([^"]*)"/
27
27
  "/admin/password/edit?reset_password_token=#{$1}"
28
28
 
29
29
  # the index page for posts in the root namespace
@@ -43,7 +43,7 @@ module NavigationHelpers
43
43
  admin_user_posts_path(User.last)
44
44
 
45
45
  when /^the last author's last post page$/
46
- admin_user_post_path(User.last, Post.where(:author_id => User.last.id).last)
46
+ admin_user_post_path(User.last, Post.where(author_id: User.last.id).last)
47
47
 
48
48
  when /^the last post's edit page$/
49
49
  edit_admin_post_path(Post.last)
@@ -27,7 +27,7 @@ module HtmlSelectorsHelpers
27
27
  [:css, "table.index_grid"]
28
28
 
29
29
  when /^the "([^"]*)" sidebar$/
30
- [:css, "##{$1.gsub(" ", '').underscore}_sidebar_section"]
30
+ [:css, "##{$1.tr(" ", '').underscore}_sidebar_section"]
31
31
 
32
32
  # This allows you to provide a quoted selector as the scope
33
33
  # for "within" steps as was previously the default for the