activeadmin 0.6.6 → 1.0.0.pre1

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 (512) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -8
  3. data/.hound.yml +11 -0
  4. data/.travis.yml +36 -10
  5. data/.yardopts +2 -1
  6. data/CHANGELOG.md +118 -67
  7. data/CONTRIBUTING.md +96 -73
  8. data/Gemfile +35 -35
  9. data/Guardfile +1 -0
  10. data/LICENSE +1 -1
  11. data/README.md +98 -0
  12. data/Rakefile +12 -4
  13. data/activeadmin.gemspec +21 -24
  14. data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
  15. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  16. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  17. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  19. data/app/assets/javascripts/active_admin/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  21. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  22. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  23. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  24. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  25. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  26. data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → lib/table-checkbox-toggler.js.coffee} +2 -3
  27. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  28. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +61 -17
  29. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  30. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  32. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  33. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -1
  34. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  36. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -14
  37. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
  38. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  39. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  41. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +2 -3
  42. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  43. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  44. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +4 -2
  45. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  46. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -1
  49. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  51. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  53. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
  54. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
  55. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
  56. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  57. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  58. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +5 -2
  59. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
  60. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  61. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  62. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  63. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  64. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  65. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  66. data/app/views/active_admin/devise/sessions/new.html.erb +9 -7
  67. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  68. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  69. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  70. data/config/locales/ar.yml +120 -0
  71. data/config/locales/bg.yml +26 -6
  72. data/config/locales/bs.yml +122 -0
  73. data/config/locales/ca.yml +10 -1
  74. data/config/locales/cs.yml +7 -2
  75. data/config/locales/da.yml +7 -3
  76. data/config/locales/de-CH.yml +14 -31
  77. data/config/locales/de.yml +33 -33
  78. data/config/locales/el.yml +28 -2
  79. data/config/locales/en-GB.yml +12 -4
  80. data/config/locales/en.yml +29 -3
  81. data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
  82. data/config/locales/es.yml +32 -25
  83. data/config/locales/fa.yml +120 -0
  84. data/config/locales/fi.yml +113 -0
  85. data/config/locales/fr.yml +21 -11
  86. data/config/locales/he.yml +7 -3
  87. data/config/locales/hr.yml +42 -11
  88. data/config/locales/hu.yml +10 -3
  89. data/config/locales/it.yml +31 -3
  90. data/config/locales/ja.yml +8 -3
  91. data/config/locales/ko.yml +7 -1
  92. data/config/locales/lt.yml +42 -11
  93. data/config/locales/lv.yml +7 -3
  94. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  95. data/config/locales/nl.yml +36 -5
  96. data/config/locales/pl.yml +13 -8
  97. data/config/locales/pt-BR.yml +37 -5
  98. data/config/locales/pt-PT.yml +8 -4
  99. data/config/locales/ro.yml +7 -3
  100. data/config/locales/ru.yml +26 -5
  101. data/config/locales/sv-SE.yml +9 -5
  102. data/config/locales/tr.yml +10 -3
  103. data/config/locales/uk.yml +36 -12
  104. data/config/locales/vi.yml +7 -3
  105. data/config/locales/zh-CN.yml +26 -10
  106. data/config/locales/zh-TW.yml +19 -13
  107. data/docs/0-installation.md +65 -29
  108. data/docs/1-general-configuration.md +92 -81
  109. data/docs/10-custom-pages.md +68 -68
  110. data/docs/11-decorators.md +48 -59
  111. data/docs/12-arbre-components.md +80 -74
  112. data/docs/13-authorization-adapter.md +128 -107
  113. data/docs/14-gotchas.md +92 -0
  114. data/docs/2-resource-customization.md +293 -178
  115. data/docs/3-index-pages.md +160 -86
  116. data/docs/3-index-pages/custom-index.md +31 -0
  117. data/docs/3-index-pages/index-as-block.md +14 -9
  118. data/docs/3-index-pages/index-as-blog.md +41 -31
  119. data/docs/3-index-pages/index-as-grid.md +16 -8
  120. data/docs/3-index-pages/index-as-table.md +129 -52
  121. data/docs/4-csv-format.md +31 -24
  122. data/docs/5-forms.md +133 -56
  123. data/docs/6-show-pages.md +89 -27
  124. data/docs/7-sidebars.md +48 -27
  125. data/docs/8-custom-actions.md +98 -77
  126. data/docs/9-batch-actions.md +210 -146
  127. data/docs/README.md +24 -0
  128. data/features/action_item.feature +3 -3
  129. data/features/authorization_pundit.feature +37 -0
  130. data/features/breadcrumb.feature +48 -0
  131. data/features/comments/commenting.feature +56 -13
  132. data/features/development_reloading.feature +17 -30
  133. data/features/edit_page.feature +12 -1
  134. data/features/favicon.feature +3 -3
  135. data/features/i18n.feature +5 -4
  136. data/features/index/batch_actions.feature +41 -0
  137. data/features/index/filters.feature +67 -0
  138. data/features/index/format_as_csv.feature +90 -4
  139. data/features/index/formats.feature +27 -0
  140. data/features/index/index_as_blog.feature +4 -4
  141. data/features/index/index_as_table.feature +102 -6
  142. data/features/index/index_blank_slate.feature +22 -0
  143. data/features/index/index_scope_to.feature +16 -16
  144. data/features/index/page_title.feature +11 -0
  145. data/features/index/pagination.feature +1 -1
  146. data/features/index/switch_index_view.feature +14 -14
  147. data/features/new_page.feature +13 -2
  148. data/features/registering_pages.feature +1 -1
  149. data/features/renamed_resource.feature +32 -0
  150. data/features/show/page_title.feature +11 -0
  151. data/features/show/tabs.feature +27 -0
  152. data/features/sidebar_sections.feature +12 -0
  153. data/features/site_title.feature +2 -2
  154. data/features/specifying_actions.feature +3 -3
  155. data/features/step_definitions/action_item_steps.rb +2 -2
  156. data/features/step_definitions/action_link_steps.rb +14 -1
  157. data/features/step_definitions/additional_web_steps.rb +19 -20
  158. data/features/step_definitions/asset_steps.rb +3 -3
  159. data/features/step_definitions/attribute_steps.rb +8 -3
  160. data/features/step_definitions/batch_action_steps.rb +26 -9
  161. data/features/step_definitions/blog_steps.rb +3 -0
  162. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  163. data/features/step_definitions/comment_steps.rb +1 -1
  164. data/features/step_definitions/configuration_steps.rb +9 -2
  165. data/features/step_definitions/dashboard_steps.rb +2 -2
  166. data/features/step_definitions/factory_steps.rb +9 -8
  167. data/features/step_definitions/filter_steps.rb +25 -3
  168. data/features/step_definitions/flash_steps.rb +3 -3
  169. data/features/step_definitions/format_steps.rb +18 -18
  170. data/features/step_definitions/index_scope_steps.rb +5 -5
  171. data/features/step_definitions/layout_steps.rb +1 -1
  172. data/features/step_definitions/member_link_steps.rb +2 -2
  173. data/features/step_definitions/menu_steps.rb +3 -3
  174. data/features/step_definitions/pagination_steps.rb +2 -3
  175. data/features/step_definitions/sidebar_steps.rb +8 -3
  176. data/features/step_definitions/site_title_steps.rb +6 -4
  177. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  178. data/features/step_definitions/tab_steps.rb +5 -0
  179. data/features/step_definitions/table_steps.rb +4 -4
  180. data/features/step_definitions/user_steps.rb +10 -7
  181. data/features/step_definitions/web_steps.rb +14 -11
  182. data/features/sti_resource.feature +6 -2
  183. data/features/strong_parameters.feature +73 -0
  184. data/features/support/env.rb +34 -9
  185. data/features/support/paths.rb +14 -6
  186. data/features/support/selectors.rb +1 -1
  187. data/features/symbol_leak.feature +35 -0
  188. data/features/users/resetting_password.feature +5 -6
  189. data/lib/active_admin.rb +26 -25
  190. data/lib/active_admin/abstract_view_factory.rb +7 -17
  191. data/lib/active_admin/application.rb +72 -59
  192. data/lib/active_admin/asset_registration.rb +2 -2
  193. data/lib/active_admin/authorization_adapter.rb +2 -2
  194. data/lib/active_admin/base_controller.rb +2 -3
  195. data/lib/active_admin/base_controller/authorization.rb +13 -31
  196. data/lib/active_admin/batch_actions.rb +1 -1
  197. data/lib/active_admin/batch_actions/controller.rb +24 -8
  198. data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
  199. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  200. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  201. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  202. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  203. data/lib/active_admin/callbacks.rb +25 -24
  204. data/lib/active_admin/cancan_adapter.rb +7 -11
  205. data/lib/active_admin/csv_builder.rb +92 -15
  206. data/lib/active_admin/dependency.rb +93 -0
  207. data/lib/active_admin/deprecation.rb +6 -7
  208. data/lib/active_admin/devise.rb +28 -18
  209. data/lib/active_admin/dsl.rb +18 -11
  210. data/lib/active_admin/engine.rb +10 -8
  211. data/lib/active_admin/error.rb +62 -0
  212. data/lib/active_admin/filters/dsl.rb +2 -2
  213. data/lib/active_admin/filters/forms.rb +17 -27
  214. data/lib/active_admin/filters/formtastic_addons.rb +49 -15
  215. data/lib/active_admin/filters/resource_extension.rb +43 -34
  216. data/lib/active_admin/form_builder.rb +93 -154
  217. data/lib/active_admin/helpers/collection.rb +7 -13
  218. data/lib/active_admin/helpers/i18n.rb +7 -0
  219. data/lib/active_admin/helpers/optional_display.rb +5 -5
  220. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  221. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  222. data/lib/active_admin/helpers/settings.rb +16 -9
  223. data/lib/active_admin/iconic.rb +17 -15
  224. data/lib/active_admin/iconic/icons.rb +136 -136
  225. data/lib/active_admin/inputs.rb +11 -7
  226. data/lib/active_admin/inputs/datepicker_input.rb +12 -3
  227. data/lib/active_admin/inputs/filters/base.rb +42 -0
  228. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  229. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  230. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  231. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  232. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  233. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  234. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  235. data/lib/active_admin/menu.rb +6 -4
  236. data/lib/active_admin/menu_collection.rb +1 -4
  237. data/lib/active_admin/namespace.rb +55 -29
  238. data/lib/active_admin/order_clause.rb +26 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +81 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  242. data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
  243. data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
  244. data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +7 -3
  250. data/lib/active_admin/page_dsl.rb +1 -1
  251. data/lib/active_admin/page_presenter.rb +2 -2
  252. data/lib/active_admin/pundit_adapter.rb +68 -0
  253. data/lib/active_admin/resource.rb +16 -17
  254. data/lib/active_admin/resource/action_items.rb +23 -18
  255. data/lib/active_admin/resource/belongs_to.rb +7 -3
  256. data/lib/active_admin/resource/controllers.rb +1 -0
  257. data/lib/active_admin/resource/includes.rb +12 -0
  258. data/lib/active_admin/resource/menu.rb +5 -5
  259. data/lib/active_admin/resource/naming.rb +27 -43
  260. data/lib/active_admin/resource/page_presenters.rb +1 -1
  261. data/lib/active_admin/resource/routes.rb +27 -11
  262. data/lib/active_admin/resource/scope_to.rb +7 -7
  263. data/lib/active_admin/resource/sidebars.rb +1 -0
  264. data/lib/active_admin/resource_controller.rb +6 -7
  265. data/lib/active_admin/resource_controller/data_access.rb +101 -93
  266. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  267. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  268. data/lib/active_admin/resource_dsl.rb +53 -10
  269. data/lib/active_admin/router.rb +7 -7
  270. data/lib/active_admin/scope.rb +6 -6
  271. data/lib/active_admin/sidebar_section.rb +10 -2
  272. data/lib/active_admin/version.rb +1 -1
  273. data/lib/active_admin/view_factory.rb +17 -17
  274. data/lib/active_admin/view_helpers.rb +0 -1
  275. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  276. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  277. data/lib/active_admin/view_helpers/display_helper.rb +30 -15
  278. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
  279. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  280. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  281. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  282. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  283. data/lib/active_admin/views/action_items.rb +2 -2
  284. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  285. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  286. data/lib/active_admin/views/components/attributes_table.rb +63 -21
  287. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  288. data/lib/active_admin/views/components/columns.rb +13 -7
  289. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  290. data/lib/active_admin/views/components/index_list.rb +7 -7
  291. data/lib/active_admin/views/components/paginated_collection.rb +38 -20
  292. data/lib/active_admin/views/components/panel.rb +8 -2
  293. data/lib/active_admin/views/components/popover.rb +1 -1
  294. data/lib/active_admin/views/components/scopes.rb +5 -4
  295. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  296. data/lib/active_admin/views/components/site_title.rb +2 -2
  297. data/lib/active_admin/views/components/status_tag.rb +34 -11
  298. data/lib/active_admin/views/components/table_for.rb +90 -45
  299. data/lib/active_admin/views/components/tabs.rb +28 -0
  300. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  301. data/lib/active_admin/views/footer.rb +3 -3
  302. data/lib/active_admin/views/header.rb +3 -3
  303. data/lib/active_admin/views/index_as_block.rb +10 -10
  304. data/lib/active_admin/views/index_as_blog.rb +45 -39
  305. data/lib/active_admin/views/index_as_grid.rb +14 -10
  306. data/lib/active_admin/views/index_as_table.rb +242 -129
  307. data/lib/active_admin/views/pages/base.rb +22 -18
  308. data/lib/active_admin/views/pages/form.rb +21 -11
  309. data/lib/active_admin/views/pages/index.rb +40 -35
  310. data/lib/active_admin/views/pages/layout.rb +1 -1
  311. data/lib/active_admin/views/pages/show.rb +4 -4
  312. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  313. data/lib/active_admin/views/title_bar.rb +10 -8
  314. data/lib/generators/active_admin/assets/assets_generator.rb +3 -28
  315. data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
  316. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  317. data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
  318. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  319. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
  320. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
  321. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  322. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  323. data/lib/generators/active_admin/page/USAGE +8 -0
  324. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  325. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  326. data/lib/generators/active_admin/resource/resource_generator.rb +3 -5
  327. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  328. data/lib/ransack_ext.rb +12 -0
  329. data/script/local +2 -2
  330. data/script/travis_cache +107 -0
  331. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  332. data/spec/javascripts/fixtures/flashes.html +2 -0
  333. data/spec/rails_helper.rb +154 -0
  334. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  335. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  336. data/spec/requests/memory_spec.rb +23 -0
  337. data/spec/requests/stylesheets_spec.rb +18 -0
  338. data/spec/spec_helper.rb +12 -173
  339. data/spec/support/detect_rails_version.rb +9 -17
  340. data/spec/support/rails_template.rb +64 -35
  341. data/spec/support/rails_template_with_data.rb +14 -14
  342. data/spec/support/templates/admin/stores.rb +5 -1
  343. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  344. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  345. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  346. data/spec/support/templates/policies/application_policy.rb +45 -0
  347. data/spec/support/templates/policies/category_policy.rb +7 -0
  348. data/spec/support/templates/policies/post_policy.rb +15 -0
  349. data/spec/support/templates/policies/store_policy.rb +11 -0
  350. data/spec/support/templates/policies/user_policy.rb +11 -0
  351. data/spec/support/templates/post_decorator.rb +4 -46
  352. data/spec/unit/abstract_view_factory_spec.rb +16 -16
  353. data/spec/unit/action_builder_spec.rb +24 -18
  354. data/spec/unit/active_admin_spec.rb +2 -2
  355. data/spec/unit/application_spec.rb +33 -34
  356. data/spec/unit/asset_registration_spec.rb +25 -29
  357. data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
  358. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  359. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  360. data/spec/unit/auto_link_spec.rb +43 -13
  361. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  362. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  363. data/spec/unit/belongs_to_spec.rb +28 -19
  364. data/spec/unit/cancan_adapter_spec.rb +8 -8
  365. data/spec/unit/comments_spec.rb +99 -39
  366. data/spec/unit/component_spec.rb +3 -3
  367. data/spec/unit/config_shared_examples.rb +10 -10
  368. data/spec/unit/controller_filters_spec.rb +23 -16
  369. data/spec/unit/csv_builder_spec.rb +165 -24
  370. data/spec/unit/dependency_spec.rb +135 -0
  371. data/spec/unit/devise_spec.rb +17 -37
  372. data/spec/unit/dsl_spec.rb +70 -9
  373. data/spec/unit/event_spec.rb +11 -11
  374. data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
  375. data/spec/unit/filters/resource_spec.rb +60 -26
  376. data/spec/unit/form_builder_spec.rb +419 -145
  377. data/spec/unit/generators/install_spec.rb +23 -0
  378. data/spec/unit/helpers/collection_spec.rb +18 -18
  379. data/spec/unit/helpers/scope_chain_spec.rb +6 -6
  380. data/spec/unit/helpers/settings_spec.rb +4 -4
  381. data/spec/unit/i18n_spec.rb +12 -0
  382. data/spec/unit/menu_collection_spec.rb +14 -14
  383. data/spec/unit/menu_item_spec.rb +42 -42
  384. data/spec/unit/menu_spec.rb +20 -20
  385. data/spec/unit/namespace/authorization_spec.rb +8 -8
  386. data/spec/unit/namespace/register_page_spec.rb +11 -11
  387. data/spec/unit/namespace/register_resource_spec.rb +28 -30
  388. data/spec/unit/namespace_spec.rb +20 -20
  389. data/spec/unit/order_clause_spec.rb +81 -0
  390. data/spec/unit/page_controller_spec.rb +1 -1
  391. data/spec/unit/page_spec.rb +18 -12
  392. data/spec/unit/pretty_format_spec.rb +42 -14
  393. data/spec/unit/pundit_adapter_spec.rb +98 -0
  394. data/spec/unit/resource/action_items_spec.rb +15 -12
  395. data/spec/unit/resource/includes_spec.rb +21 -0
  396. data/spec/unit/resource/menu_spec.rb +1 -1
  397. data/spec/unit/resource/naming_spec.rb +35 -21
  398. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  399. data/spec/unit/resource/pagination_spec.rb +6 -6
  400. data/spec/unit/resource/routes_spec.rb +10 -10
  401. data/spec/unit/resource/scopes_spec.rb +14 -7
  402. data/spec/unit/resource/sidebars_spec.rb +6 -6
  403. data/spec/unit/resource_collection_spec.rb +31 -38
  404. data/spec/unit/resource_controller/data_access_spec.rb +96 -30
  405. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  406. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  407. data/spec/unit/resource_controller_spec.rb +73 -70
  408. data/spec/unit/resource_registration_spec.rb +12 -12
  409. data/spec/unit/resource_spec.rb +77 -42
  410. data/spec/unit/routing_spec.rb +39 -31
  411. data/spec/unit/scope_spec.rb +112 -30
  412. data/spec/unit/settings_spec.rb +51 -21
  413. data/spec/unit/view_factory_spec.rb +2 -3
  414. data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
  415. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  416. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  417. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  418. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  419. data/spec/unit/view_helpers/form_helper_spec.rb +10 -23
  420. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
  421. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  422. data/spec/unit/views/components/attributes_table_spec.rb +171 -30
  423. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  424. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  425. data/spec/unit/views/components/columns_spec.rb +52 -22
  426. data/spec/unit/views/components/index_list_spec.rb +11 -8
  427. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  428. data/spec/unit/views/components/paginated_collection_spec.rb +79 -90
  429. data/spec/unit/views/components/panel_spec.rb +32 -21
  430. data/spec/unit/views/components/popover_spec.rb +7 -7
  431. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  432. data/spec/unit/views/components/site_title_spec.rb +26 -26
  433. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  434. data/spec/unit/views/components/table_for_spec.rb +237 -35
  435. data/spec/unit/views/components/tabs_spec.rb +39 -0
  436. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  437. data/spec/unit/views/pages/form_spec.rb +17 -10
  438. data/spec/unit/views/pages/index_spec.rb +60 -0
  439. data/spec/unit/views/pages/layout_spec.rb +17 -21
  440. data/spec/unit/views/pages/show_spec.rb +18 -6
  441. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  442. data/tasks/docs.rake +9 -11
  443. data/tasks/parallel_tests.rake +8 -2
  444. data/tasks/test.rake +13 -9
  445. data/tasks/yard.rake +7 -4
  446. metadata +219 -163
  447. data/.document +0 -5
  448. data/README.rdoc +0 -88
  449. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  450. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  451. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  452. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  453. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  454. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  455. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  456. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  457. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  458. data/app/assets/images/active_admin/loading.gif +0 -0
  459. data/app/assets/javascripts/active_admin/application.js +0 -3
  460. data/app/assets/javascripts/active_admin/base.js +0 -5
  461. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
  462. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
  463. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
  464. data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
  465. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
  466. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  467. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -41
  468. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  469. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
  470. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
  471. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  472. data/app/views/active_admin/resource/index.csv.erb +0 -23
  473. data/docs/3-index-pages/create-an-index.md +0 -29
  474. data/lib/active_admin/comments.rb +0 -83
  475. data/lib/active_admin/comments/comment.rb +0 -42
  476. data/lib/active_admin/comments/views.rb +0 -2
  477. data/lib/active_admin/dependency_checker.rb +0 -46
  478. data/lib/active_admin/inputs/filter_base.rb +0 -33
  479. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  480. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -36
  481. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
  482. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  483. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  484. data/lib/active_admin/inputs/filter_select_input.rb +0 -49
  485. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  486. data/lib/active_admin/reloader.rb +0 -130
  487. data/lib/active_admin/resource_controller/actions.rb +0 -81
  488. data/lib/active_admin/sass/active_admin.scss +0 -3
  489. data/lib/active_admin/sass/css_loader.rb +0 -16
  490. data/lib/active_admin/sass/helpers.rb +0 -45
  491. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  492. data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
  493. data/lib/active_admin/views/pages/dashboard.rb +0 -62
  494. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
  495. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
  496. data/lib/meta_search_ext.rb +0 -10
  497. data/spec/integration/memory_spec.rb +0 -29
  498. data/spec/integration/stylesheets_spec.rb +0 -41
  499. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  500. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  501. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  502. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  503. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  504. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  505. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  506. data/spec/javascripts/support/jquery.min.js +0 -4
  507. data/spec/spec_helper_without_rails.rb +0 -11
  508. data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
  509. data/spec/unit/rails_spec.rb +0 -43
  510. data/spec/unit/reloader_spec.rb +0 -124
  511. data/spec/unit/sass/helpers_spec.rb +0 -47
  512. data/tasks/js.rake +0 -32
@@ -4,7 +4,7 @@ module ActiveAdminReloading
4
4
  eval(config_content)
5
5
  ActiveAdmin::Event.dispatch ActiveAdmin::Application::AfterLoadEvent, ActiveAdmin.application
6
6
  Rails.application.reload_routes!
7
- ActiveAdmin.application.namespaces.values.each &:reset_menu!
7
+ ActiveAdmin.application.namespaces.each &:reset_menu!
8
8
  end
9
9
  end
10
10
 
@@ -58,7 +58,14 @@ Given /^a(?:n? (index|show))? configuration of:$/ do |action, config_content|
58
58
  case action
59
59
  when 'index'
60
60
  step 'I am logged in'
61
- step 'I am on the index page for posts'
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
62
69
  when 'show'
63
70
  case resource = config_content.match(/ActiveAdmin\.register (\w+)/)[1]
64
71
  when 'Post'
@@ -7,9 +7,9 @@ Then /^I should not see the default welcome message$/ do
7
7
  end
8
8
 
9
9
  Then /^I should see a dashboard widget "([^"]*)"$/ do |name|
10
- page.should have_css('.dashboard .panel h3', :text => name)
10
+ expect(page).to have_css '.dashboard .panel h3', text: name
11
11
  end
12
12
 
13
13
  Then /^I should not see a dashboard widget "([^"]*)"$/ do |name|
14
- page.should_not have_css('.dashboard .panel h3', :text => name)
14
+ expect(page).to_not have_css '.dashboard .panel h3', text: name
15
15
  end
@@ -1,20 +1,21 @@
1
1
  def create_user(name, type = 'User')
2
- type.camelize.constantize.
3
- find_or_create_by_first_name_and_last_name *name.split(' '), :username => name.gsub(' ', '').underscore
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
4
  end
5
5
 
6
- Given /^(a|\d+)( published)? posts?(?: with the title "([^"]*)")?(?: and body "([^"]*)")?(?: written by "([^"]*)")? exists?$/ do |count, published, title, body, user|
6
+ Given /^(a|\d+)( published)? posts?(?: with the title "([^"]*)")?(?: and body "([^"]*)")?(?: written by "([^"]*)")?(?: in category "([^"]*)")? exists?$/ do |count, published, title, body, user, category_name|
7
7
  count = count == 'a' ? 1 : count.to_i
8
8
  published = Time.now if published
9
9
  author = create_user(user) if user
10
+ category = Category.where(name: category_name).first_or_create if category_name
10
11
  title ||= "Hello World %i"
11
12
  count.times do |i|
12
- Post.create! :title => title % i, :body => body, :author => author, :published_at => published
13
+ Post.create! title: title % i, body: body, author: author, published_at: published, custom_category_id: category.try(:id)
13
14
  end
14
15
  end
15
16
 
16
17
  Given /^a category named "([^"]*)" exists$/ do |name|
17
- Category.create! :name => name
18
+ Category.create! name: name
18
19
  end
19
20
 
20
21
  Given /^a (user|publisher) named "([^"]*)" exists$/ do |type, name|
@@ -22,12 +23,12 @@ Given /^a (user|publisher) named "([^"]*)" exists$/ do |type, name|
22
23
  end
23
24
 
24
25
  Given /^a store named "([^"]*)" exists$/ do |name|
25
- Store.create! :name => name
26
+ Store.create! name: name
26
27
  end
27
28
 
28
29
  Given /^I create a new post with the title "([^"]*)"$/ do |title|
29
- click_link "Posts"
30
+ first(:link, 'Posts').click
30
31
  click_link "New Post"
31
- fill_in :title, :with => title
32
+ fill_in 'post_title', with: title
32
33
  click_button "Create Post"
33
34
  end
@@ -1,13 +1,13 @@
1
1
  Then /^I should see a select filter for "([^"]*)"$/ do |label|
2
- page.should have_css(".filter_select label", :text => label)
2
+ expect(page).to have_css '.filter_select label', text: label
3
3
  end
4
4
 
5
5
  Then /^I should see a string filter for "([^"]*)"$/ do |label|
6
- page.should have_css(".filter_string label", :text => label)
6
+ expect(page).to have_css '.filter_string label', text: label
7
7
  end
8
8
 
9
9
  Then /^I should see a date range filter for "([^"]*)"$/ do |label|
10
- page.should have_css(".filter_date_range label", :text => label)
10
+ expect(page).to have_css '.filter_date_range label', text: label
11
11
  end
12
12
 
13
13
  Then /^I should see the following filters:$/ do |table|
@@ -15,3 +15,25 @@ Then /^I should see the following filters:$/ do |table|
15
15
  step %{I should see a #{type} filter for "#{label}"}
16
16
  end
17
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, compare_val, value|
26
+ query = URI(page.current_url).query
27
+ if query.nil?
28
+ expect(negative).to be_truthy
29
+ else
30
+ params = Rack::Utils.parse_query query
31
+ if compare_val
32
+ expect(params[key]).to_not eq value if negative
33
+ expect(params[key]).to eq value unless negative
34
+ else
35
+ expect(params[key]).to be_nil if negative
36
+ expect(params[key]).to be_present unless negative
37
+ end
38
+ end
39
+ end
@@ -1,11 +1,11 @@
1
1
  Then /^I should see a flash with "([^"]*)"$/ do |text|
2
- page.should have_content(text)
2
+ expect(page).to have_content text
3
3
  end
4
4
 
5
5
  Then /^I should see a successful create flash$/ do
6
- page.should have_css('div.flash_notice', :text => /was successfully created/)
6
+ expect(page).to have_css 'div.flash_notice', text: /was successfully created/
7
7
  end
8
8
 
9
9
  Then /^I should not see a successful create flash$/ do
10
- page.should_not have_css('div.flash_notice', :text => /was successfully created/)
10
+ expect(page).to_not have_css 'div.flash_notice', text: /was successfully created/
11
11
  end
@@ -1,36 +1,32 @@
1
- CSVLib = if RUBY_VERSION =~ /^1.8/
2
- require 'fastercsv'
3
- FasterCSV
4
- else
5
- require 'csv'
6
- CSV
7
- end
1
+ require 'csv'
8
2
 
9
3
  Then "I should see nicely formatted datetimes" do
10
- page.body.should =~ /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
4
+ expect(page.body).to match /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
11
5
  end
12
6
 
13
7
  Then /^I should( not)? see a link to download "([^"]*)"$/ do |negate, format|
14
- method = negate ? :should_not : :should
15
- page.send method, have_css("#index_footer a", :text => format)
8
+ method = negate ? :to_not : :to
9
+ expect(page).send method, have_css("#index_footer a", text: format)
16
10
  end
17
11
 
18
12
  # Check first rows of the displayed CSV.
19
13
  Then /^I should download a CSV file with "([^"]*)" separator for "([^"]*)" containing:$/ do |sep, resource_name, table|
20
- body = page.driver.response.body
21
- headers = page.response_headers
22
- headers['Content-Type'].should eq 'text/csv; charset=utf-8'
23
- headers['Content-Disposition'].should eq %{attachment; filename="#{resource_name}-#{Time.now.strftime("%Y-%m-%d")}.csv"}
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/
24
20
 
25
21
  begin
26
- csv = CSVLib.parse(body, :col_sep => sep)
22
+ csv = CSV.parse(body, col_sep: sep)
27
23
  table.raw.each_with_index do |expected_row, row_index|
28
24
  expected_row.each_with_index do |expected_cell, col_index|
29
25
  cell = csv.try(:[], row_index).try(:[], col_index)
30
26
  if expected_cell.blank?
31
- cell.should be_nil
27
+ expect(cell).to be_nil
32
28
  else
33
- (cell || '').should match /#{expected_cell}/
29
+ expect(cell || '').to match /#{expected_cell}/
34
30
  end
35
31
  end
36
32
  end
@@ -48,5 +44,9 @@ Then /^I should download a CSV file for "([^"]*)" containing:$/ do |resource_nam
48
44
  end
49
45
 
50
46
  Then /^the CSV file should contain "([^"]*)" in quotes$/ do |text|
51
- page.driver.response.body.should match /"#{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
52
  end
@@ -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
@@ -0,0 +1,3 @@
1
+ Then /^"(.*?)" shouldn't be a symbol$/ do |sym|
2
+ expect(Symbol.all_symbols.map &:to_s).to_not include(sym), 'symbol detected!'
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,6 +1,5 @@
1
1
  def ensure_user_created(email)
2
- user = AdminUser.find_or_create_by_email :email => email,
3
- :password => 'password', :password_confirmation => 'password'
2
+ user = AdminUser.where(email: email).first_or_create(password: 'password', password_confirmation: 'password')
4
3
 
5
4
  unless user.persisted?
6
5
  raise "Could not create user #{email}: #{user.errors.full_messages}"
@@ -9,7 +8,7 @@ def ensure_user_created(email)
9
8
  end
10
9
 
11
10
  Given /^(?:I am logged|log) out$/ do
12
- click_link 'Logout' if page.all(:css, "a", :text => 'Logout').any?
11
+ click_link 'Logout' if page.all(:css, "a", text: 'Logout').any?
13
12
  end
14
13
 
15
14
  Given /^I am logged in$/ do
@@ -23,8 +22,8 @@ Given /^I am logged in with capybara$/ do
23
22
  step 'log out'
24
23
 
25
24
  visit new_admin_user_session_path
26
- fill_in 'Email', :with => 'admin@example.com'
27
- fill_in 'Password', :with => 'password'
25
+ fill_in 'Email', with: 'admin@example.com'
26
+ fill_in 'Password', with: 'password'
28
27
  click_button 'Login'
29
28
  end
30
29
 
@@ -32,11 +31,15 @@ Given /^an admin user "([^"]*)" exists$/ do |email|
32
31
  ensure_user_created(email)
33
32
  end
34
33
 
35
- Given /^"([^"]*)" requests a pasword reset with token "([^"]*)"( but it expires)?$/ do |email, token, expired|
34
+ Given /^"([^"]*)" requests a password reset with token "([^"]*)"( but it expires)?$/ do |email, token, expired|
36
35
  visit new_admin_user_password_path
37
36
  fill_in 'Email', with: email
38
- Devise.stub(:friendly_token){ token }
37
+ allow(Devise).to receive(:friendly_token).and_return(token)
39
38
  click_button "Reset My Password"
40
39
 
41
40
  AdminUser.where(email: email).first.update_attribute :reset_password_sent_at, 1.month.ago if expired
42
41
  end
42
+
43
+ When /^I fill in the password field with "([^"]*)"$/ do |password|
44
+ fill_in 'admin_user_password', with: password
45
+ end
@@ -27,20 +27,24 @@ When /^(?:I )go to (.+)$/ do |page_name|
27
27
  visit path_to(page_name)
28
28
  end
29
29
 
30
+ When /^(?:I )POST to "(.*?)" with params "(.*?)"$/ do |url, params|
31
+ post "#{url}#{params}"
32
+ end
33
+
30
34
  When /^(?:I )press "([^"]*)"$/ do |button|
31
35
  click_button(button)
32
36
  end
33
37
 
34
38
  When /^(?:I )follow "([^"]*)"$/ do |link|
35
- click_link(link)
39
+ first(:link, link).click
36
40
  end
37
41
 
38
42
  When /^(?:I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
39
- fill_in(field, :with => value)
43
+ fill_in(field, with: value)
40
44
  end
41
45
 
42
46
  When /^(?:I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
43
- select(value, :from => field)
47
+ select(value, from: field)
44
48
  end
45
49
 
46
50
  When /^(?:I )(check|uncheck|choose) "([^"]*)"$/ do |action, field|
@@ -52,29 +56,28 @@ When /^(?:I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
52
56
  end
53
57
 
54
58
  Then /^(?:I )should( not)? see( the element)? "([^"]*)"$/ do |negate, is_css, text|
55
- should = negate ? :should_not : :should
59
+ should = negate ? :not_to : :to
56
60
  have = is_css ? have_css(text) : have_content(text)
57
- page.send should, have
61
+ expect(page).send should, have
58
62
  end
59
63
 
60
64
  Then /^the "([^"]*)" field(?: within (.*))? should( not)? contain "([^"]*)"$/ do |field, parent, negate, value|
61
65
  with_scope(parent) do
62
66
  field = find_field(field)
63
- field_value = (field.tag_name == 'textarea') ? field.text : field.value
64
- 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}/)
65
70
  end
66
71
  end
67
72
 
68
73
  Then /^the "([^"]*)" checkbox(?: within (.*))? should( not)? be checked$/ do |label, parent, negate|
69
74
  with_scope(parent) do
70
- field_checked = find_field(label)['checked']
71
- field_checked.should negate ? be_false : be_true
75
+ expect(find_field(label)['checked']).to negate ? eq(false) : eq(true)
72
76
  end
73
77
  end
74
78
 
75
79
  Then /^(?:|I )should be on (.+)$/ do |page_name|
76
- current_path = URI.parse(current_url).path
77
- current_path.should == path_to(page_name)
80
+ expect(URI.parse(current_url).path).to eq path_to page_name
78
81
  end
79
82
 
80
83
  Then /^show me the page$/ do