yousty-activeadmin 1.0.4.pre → 1.0.5.pre

Sign up to get free protection for your applications and to get access to all the features.
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