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
@@ -0,0 +1,83 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::ResourceController::Decorators do
4
+ let(:controller_class) do
5
+ Class.new do
6
+ def self.name
7
+ "Test Controller using Decorators"
8
+ end
9
+
10
+ include ActiveAdmin::ResourceController::Decorators
11
+
12
+ public :apply_decorator, :apply_collection_decorator
13
+ end
14
+ end
15
+
16
+ let(:controller) { controller_class.new }
17
+ let(:active_admin_config) { double(decorator_class: decorator_class) }
18
+ before do
19
+ allow(controller).to receive(:active_admin_config).and_return(active_admin_config)
20
+ allow(controller).to receive(:action_name).and_return(action)
21
+ end
22
+
23
+ describe '#apply_decorator' do
24
+ let(:action) { 'show' }
25
+ let(:resource) { Post.new }
26
+ subject(:applied) { controller.apply_decorator(resource) }
27
+
28
+ context 'with a decorator configured' do
29
+ let(:decorator_class) { PostDecorator }
30
+ it { is_expected.to be_kind_of(PostDecorator) }
31
+ end
32
+
33
+ context 'with no decorator configured' do
34
+ let(:decorator_class) { nil }
35
+ it { is_expected.to be_kind_of(Post) }
36
+ end
37
+ end
38
+
39
+ describe '#apply_collection_decorator' do
40
+ before { Post.create! }
41
+ let(:action) { 'index' }
42
+ let(:collection) { Post.where nil }
43
+ subject(:applied) { controller.apply_collection_decorator(collection) }
44
+
45
+ context 'when a decorator is configured' do
46
+ context 'and it is using a recent version of draper' do
47
+ let(:decorator_class) { PostDecorator }
48
+
49
+ it 'calling certain scope collections work' do
50
+ # This is an example of one of the methods that was consistently
51
+ # failing before this feature existed
52
+ expect(applied.reorder('').count).to eq applied.count
53
+ end
54
+
55
+ it 'has a good description for the generated class' do
56
+ expect(applied.class.name).to eq "Draper::CollectionDecorator of PostDecorator + ActiveAdmin"
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+
63
+ describe 'form actions' do
64
+ let(:action) { 'edit' }
65
+ let(:resource) { Post.new }
66
+ let(:form_presenter) { double options: { decorate: decorate_form } }
67
+ let(:decorator_class) { PostDecorator }
68
+ before { allow(active_admin_config).to receive(:get_page_presenter).with(:form).and_return form_presenter }
69
+
70
+ subject(:applied) { controller.apply_decorator(resource) }
71
+
72
+ context 'when the form is not configured to decorate' do
73
+ let(:decorate_form) { false }
74
+ it { is_expected.to be_kind_of(Post) }
75
+ end
76
+
77
+ context 'when the form is configured to decorate' do
78
+ let(:decorate_form) { true }
79
+ it { is_expected.to be_kind_of(PostDecorator) }
80
+ end
81
+
82
+ end
83
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::ResourceController::Sidebars do
4
4
  let(:controller){ Admin::PostsController }
@@ -10,7 +10,7 @@ describe ActiveAdmin::ResourceController::Sidebars do
10
10
 
11
11
  subject { find_before_filter controller, :skip_sidebar! }
12
12
 
13
- it { should set_skip_sidebar_to nil }
13
+ it { is_expected.to set_skip_sidebar_to nil, for: controller }
14
14
  end
15
15
 
16
16
  describe '#skip_sidebar!' do
@@ -22,7 +22,7 @@ describe ActiveAdmin::ResourceController::Sidebars do
22
22
 
23
23
  subject { find_before_filter controller, :skip_sidebar! }
24
24
 
25
- it { should set_skip_sidebar_to true }
25
+ it { is_expected.to set_skip_sidebar_to true, for: controller }
26
26
  end
27
27
 
28
28
  def find_before_filter(controller, filter)
@@ -30,16 +30,15 @@ describe ActiveAdmin::ResourceController::Sidebars do
30
30
  controller._process_action_callbacks.detect { |f| f.raw_filter == filter.to_sym }
31
31
  end
32
32
 
33
- RSpec::Matchers.define :set_skip_sidebar_to do |expected|
33
+ RSpec::Matchers.define :set_skip_sidebar_to do |expected, options|
34
34
  match do |filter|
35
- klass = filter && filter.klass || controller
36
- object = klass.new
35
+ object = options[:for].new
37
36
  object.send filter.raw_filter if filter
38
37
  @actual = object.instance_variable_get(:@skip_sidebar)
39
- @actual == expected
38
+ expect(@actual).to eq expected
40
39
  end
41
40
 
42
- failure_message_for_should do |filter|
41
+ failure_message do |filter|
43
42
  message = "expected before_filter to set @skip_sidebar to '#{expected}', but was '#{@actual}'"
44
43
  end
45
44
  end
@@ -1,9 +1,7 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::ResourceController do
4
4
 
5
- before(:all) { load_defaults! }
6
-
7
5
  let(:controller) { ActiveAdmin::ResourceController.new }
8
6
 
9
7
  describe "authenticating the user" do
@@ -11,7 +9,7 @@ describe ActiveAdmin::ResourceController do
11
9
 
12
10
  it "should do nothing when no authentication_method set" do
13
11
  namespace = controller.class.active_admin_config.namespace
14
- namespace.should_receive(:authentication_method).once.and_return(nil)
12
+ expect(namespace).to receive(:authentication_method).once.and_return(nil)
15
13
 
16
14
  controller.send(:authenticate_active_admin_user)
17
15
  end
@@ -19,10 +17,10 @@ describe ActiveAdmin::ResourceController do
19
17
  it "should call the authentication_method when set" do
20
18
  namespace = controller.class.active_admin_config.namespace
21
19
 
22
- namespace.should_receive(:authentication_method).twice.
20
+ expect(namespace).to receive(:authentication_method).twice.
23
21
  and_return(:authenticate_admin_user!)
24
22
 
25
- controller.should_receive(:authenticate_admin_user!).and_return(true)
23
+ expect(controller).to receive(:authenticate_admin_user!).and_return(true)
26
24
 
27
25
  controller.send(:authenticate_active_admin_user)
28
26
  end
@@ -34,30 +32,29 @@ describe ActiveAdmin::ResourceController do
34
32
 
35
33
  it "should return nil when no current_user_method set" do
36
34
  namespace = controller.class.active_admin_config.namespace
37
- namespace.should_receive(:current_user_method).once.and_return(nil)
35
+ expect(namespace).to receive(:current_user_method).once.and_return(nil)
38
36
 
39
- controller.send(:current_active_admin_user).should == nil
37
+ expect(controller.send(:current_active_admin_user)).to eq nil
40
38
  end
41
39
 
42
40
  it "should call the current_user_method when set" do
43
- user = mock
41
+ user = double
44
42
  namespace = controller.class.active_admin_config.namespace
45
43
 
46
- namespace.should_receive(:current_user_method).twice.
44
+ expect(namespace).to receive(:current_user_method).twice.
47
45
  and_return(:current_admin_user)
48
46
 
49
- controller.should_receive(:current_admin_user).and_return(user)
47
+ expect(controller).to receive(:current_admin_user).and_return(user)
50
48
 
51
- controller.send(:current_active_admin_user).should == user
49
+ expect(controller.send(:current_active_admin_user)).to eq user
52
50
  end
53
51
  end
54
52
 
55
53
 
56
54
  describe "callbacks" do
57
- let(:application){ ::ActiveAdmin::Application.new }
58
- let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
59
-
60
55
  before :all do
56
+ application = ::ActiveAdmin::Application.new
57
+ namespace = ActiveAdmin::Namespace.new(application, :admin)
61
58
  namespace.register Post do
62
59
  after_build :call_after_build
63
60
  before_save :call_before_save
@@ -85,141 +82,141 @@ describe ActiveAdmin::ResourceController do
85
82
 
86
83
  describe "performing create" do
87
84
  let(:controller){ Admin::PostsController.new }
88
- let(:resource){ mock("Resource", :save => true) }
85
+ let(:resource){ double("Resource", save: true) }
89
86
 
90
87
  before do
91
- resource.should_receive(:save)
88
+ expect(resource).to receive(:save)
92
89
  end
93
90
 
94
91
  it "should call the before create callback" do
95
- controller.should_receive(:call_before_create).with(resource)
92
+ expect(controller).to receive(:call_before_create).with(resource)
96
93
  controller.send :create_resource, resource
97
94
  end
98
95
  it "should call the before save callback" do
99
- controller.should_receive(:call_before_save).with(resource)
96
+ expect(controller).to receive(:call_before_save).with(resource)
100
97
  controller.send :create_resource, resource
101
98
  end
102
99
  it "should call the after save callback" do
103
- controller.should_receive(:call_after_save).with(resource)
100
+ expect(controller).to receive(:call_after_save).with(resource)
104
101
  controller.send :create_resource, resource
105
102
  end
106
103
  it "should call the after create callback" do
107
- controller.should_receive(:call_after_create).with(resource)
104
+ expect(controller).to receive(:call_after_create).with(resource)
108
105
  controller.send :create_resource, resource
109
106
  end
110
107
  end
111
108
 
112
109
  describe "performing update" do
113
110
  let(:controller){ Admin::PostsController.new }
114
- let(:resource){ mock("Resource", :attributes= => true, :save => true) }
111
+ let(:resource){ double("Resource", :attributes= => true, save: true) }
115
112
  let(:attributes){ [{}] }
116
113
 
117
114
  before do
118
- resource.should_receive(:attributes=).with(attributes[0])
119
- resource.should_receive(:save)
115
+ expect(resource).to receive(:attributes=).with(attributes[0])
116
+ expect(resource).to receive(:save)
120
117
  end
121
118
 
122
119
  it "should call the before update callback" do
123
- controller.should_receive(:call_before_update).with(resource)
120
+ expect(controller).to receive(:call_before_update).with(resource)
124
121
  controller.send :update_resource, resource, attributes
125
122
  end
126
123
  it "should call the before save callback" do
127
- controller.should_receive(:call_before_save).with(resource)
124
+ expect(controller).to receive(:call_before_save).with(resource)
128
125
  controller.send :update_resource, resource, attributes
129
126
  end
130
127
  it "should call the after save callback" do
131
- controller.should_receive(:call_after_save).with(resource)
128
+ expect(controller).to receive(:call_after_save).with(resource)
132
129
  controller.send :update_resource, resource, attributes
133
130
  end
134
131
  it "should call the after create callback" do
135
- controller.should_receive(:call_after_update).with(resource)
132
+ expect(controller).to receive(:call_after_update).with(resource)
136
133
  controller.send :update_resource, resource, attributes
137
134
  end
138
135
  end
139
136
 
140
137
  describe "performing destroy" do
141
138
  let(:controller){ Admin::PostsController.new }
142
- let(:resource){ mock("Resource", :destroy => true) }
139
+ let(:resource){ double("Resource", destroy: true) }
143
140
 
144
141
  before do
145
- resource.should_receive(:destroy)
142
+ expect(resource).to receive(:destroy)
146
143
  end
147
144
 
148
145
  it "should call the before destroy callback" do
149
- controller.should_receive(:call_before_destroy).with(resource)
146
+ expect(controller).to receive(:call_before_destroy).with(resource)
150
147
  controller.send :destroy_resource, resource
151
148
  end
152
149
 
153
150
  it "should call the after destroy callback" do
154
- controller.should_receive(:call_after_destroy).with(resource)
151
+ expect(controller).to receive(:call_after_destroy).with(resource)
155
152
  controller.send :destroy_resource, resource
156
153
  end
157
154
  end
158
155
  end
159
156
  end
160
157
 
161
- describe Admin::PostsController, :type => "controller" do
158
+ describe Admin::PostsController, type: "controller" do
162
159
 
163
160
  describe 'retreiving the resource' do
164
161
  let(:controller){ Admin::PostsController.new }
165
- let(:post) { Post.new :title => "An incledibly unique Post Title" }
162
+ let(:post) { Post.new title: "An incledibly unique Post Title" }
166
163
 
167
164
  before do
168
- Post.stub(:find).and_return(post)
165
+ allow(Post).to receive(:find).and_return(post)
169
166
  controller.class_eval { public :resource }
170
- controller.stub(:params).and_return({ :id => '1' })
167
+ allow(controller).to receive(:params).and_return({ id: '1' })
171
168
  end
172
169
 
173
170
  subject { controller.resource }
174
171
 
175
172
  it "returns a Post" do
176
- subject.should be_kind_of(Post)
173
+ expect(subject).to be_kind_of(Post)
177
174
  end
178
175
 
179
176
  context 'with a decorator' do
180
177
  let(:config) { controller.class.active_admin_config }
181
178
  before { config.decorator_class_name = '::PostDecorator' }
182
179
  it 'returns a PostDecorator' do
183
- subject.should be_kind_of(PostDecorator)
180
+ expect(subject).to be_kind_of(PostDecorator)
184
181
  end
185
182
 
186
183
  it 'returns a PostDecorator that wraps the post' do
187
- subject.title.should == post.title
184
+ expect(subject.title).to eq post.title
188
185
  end
189
186
  end
190
187
  end
191
188
 
192
189
  describe 'retreiving the resource collection' do
193
190
  let(:controller){ Admin::PostsController.new }
191
+ let(:config) { controller.class.active_admin_config }
194
192
  before do
195
- Post.create!(:title => "An incledibly unique Post Title") if Post.count == 0
196
- controller.class_eval { public :collection }
193
+ Post.create!(title: "An incledibly unique Post Title") if Post.count == 0
194
+ config.decorator_class_name = nil
195
+ request = double 'Request', format: 'application/json'
196
+ allow(controller).to receive(:params) { {} }
197
+ allow(controller).to receive(:request){ request }
197
198
  end
198
199
 
199
- subject { controller.collection }
200
+ subject { controller.send :collection }
200
201
 
201
202
  it {
202
- pending # doesn't pass when running whole spec suite (WTF)
203
- should be_kind_of(ActiveRecord::Relation)
203
+ is_expected.to be_a ActiveRecord::Relation
204
204
  }
205
205
 
206
206
  it "returns a collection of posts" do
207
- pending # doesn't pass when running whole spec suite (WTF)
208
- subject.first.should be_kind_of(Post)
207
+ expect(subject.first).to be_kind_of(Post)
209
208
  end
210
209
 
211
210
  context 'with a decorator' do
212
- let(:config) { controller.class.active_admin_config }
213
- before { config.decorator_class_name = '::PostDecorator' }
211
+ before { config.decorator_class_name = 'PostDecorator' }
214
212
 
215
- it 'returns a PostDecorator' do
216
- pending # doesn't pass when running whole spec suite (WTF)
217
- subject.should be_kind_of(PostDecorator::DecoratedEnumerableProxy)
213
+ it 'returns a collection decorator using PostDecorator' do
214
+ expect(subject).to be_a Draper::CollectionDecorator
215
+ expect(subject.decorator_class).to eq PostDecorator
218
216
  end
219
217
 
220
- it 'returns a PostDecorator that wraps the post' do
221
- pending # doesn't pass when running whole spec suite (WTF)
222
- subject.first.title.should == Post.first.title
218
+ it 'returns a collection decorator that wraps the post' do
219
+ expect(subject.first.title).to eq Post.first.title
223
220
  end
224
221
  end
225
222
  end
@@ -227,37 +224,43 @@ describe Admin::PostsController, :type => "controller" do
227
224
 
228
225
  describe "performing batch_action" do
229
226
  let(:controller){ Admin::PostsController.new }
227
+ let(:batch_action) { ActiveAdmin::BatchAction.new :flag, "Flag", &batch_action_block }
228
+ let(:batch_action_block) { proc { } }
230
229
  before do
231
- batch_action = ActiveAdmin::BatchAction.new :flag, "Flag" do
232
- redirect_to collection_path
233
- end
234
-
235
- controller.class.active_admin_config.stub!(:batch_actions).and_return([batch_action])
230
+ allow(controller.class.active_admin_config).to receive(:batch_actions).and_return([batch_action])
236
231
  end
237
232
 
238
233
  describe "when params batch_action matches existing BatchAction" do
234
+ before do
235
+ allow(controller).to receive(:params) { { batch_action: "flag", collection_selection: ["1"] } }
236
+ end
237
+
239
238
  it "should call the block with args" do
240
- pending # dont know how to check if the block was called
239
+ expect(controller).to receive(:instance_exec).with(["1"], {})
240
+ controller.batch_action
241
+ end
242
+
243
+ it "should call the block in controller scope" do
244
+ expect(controller).to receive(:render_in_context).with(controller, nil).and_return({})
245
+ controller.batch_action
241
246
  end
242
247
  end
243
248
 
244
249
  describe "when params batch_action doesn't match a BatchAction" do
245
250
  it "should raise an error" do
246
- pending # doesn't pass when running whole spec suite (WTF)
247
-
248
- lambda {
249
- post(:batch_action, :batch_action => "derp", :collection_selection => ["1"])
250
- }.should raise_error("Couldn't find batch action \"derp\"")
251
+ allow(controller).to receive(:params) { { batch_action: "derp", collection_selection: ["1"] } }
252
+ expect {
253
+ controller.batch_action
254
+ }.to raise_error("Couldn't find batch action \"derp\"")
251
255
  end
252
256
  end
253
257
 
254
258
  describe "when params batch_action is blank" do
255
259
  it "should raise an error" do
256
- pending # doesn't pass when running whole spec suite (WTF)
257
-
258
- lambda {
259
- post(:batch_action, :collection_selection => ["1"])
260
- }.should raise_error("Couldn't find batch action \"\"")
260
+ allow(controller).to receive(:params) { { collection_selection: ["1"] } }
261
+ expect {
262
+ controller.batch_action
263
+ }.to raise_error("Couldn't find batch action \"\"")
261
264
  end
262
265
  end
263
266
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe "Registering an object to administer" do
4
4
  application = ActiveAdmin::Application.new
@@ -7,13 +7,13 @@ describe "Registering an object to administer" do
7
7
  namespace = ActiveAdmin::Namespace.new(application, :admin)
8
8
  it "should call register on the namespace" do
9
9
  application.namespaces[namespace.name] = namespace
10
- namespace.should_receive(:register)
10
+ expect(namespace).to receive(:register)
11
11
 
12
12
  application.register Category
13
13
  end
14
14
 
15
15
  it "should dispatch a Resource::RegisterEvent" do
16
- ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
16
+ expect(ActiveAdmin::Event).to receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
17
17
  application.register Category
18
18
  end
19
19
  end
@@ -22,15 +22,15 @@ describe "Registering an object to administer" do
22
22
  it "should call register on the namespace" do
23
23
  namespace = ActiveAdmin::Namespace.new(application, :hello_world)
24
24
  application.namespaces[namespace.name] = namespace
25
- namespace.should_receive(:register)
25
+ expect(namespace).to receive(:register)
26
26
 
27
- application.register Category, :namespace => :hello_world
27
+ application.register Category, namespace: :hello_world
28
28
  end
29
29
 
30
30
  it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
31
- ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
32
- ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
33
- application.register Category, :namespace => :not_yet_created
31
+ expect(ActiveAdmin::Event).to receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
32
+ expect(ActiveAdmin::Event).to receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
33
+ application.register Category, namespace: :not_yet_created
34
34
  end
35
35
  end
36
36
 
@@ -38,9 +38,9 @@ describe "Registering an object to administer" do
38
38
  it "should call register on the root namespace" do
39
39
  namespace = ActiveAdmin::Namespace.new(application, :root)
40
40
  application.namespaces[namespace.name] = namespace
41
- namespace.should_receive(:register)
41
+ expect(namespace).to receive(:register)
42
42
 
43
- application.register Category, :namespace => false
43
+ application.register Category, namespace: false
44
44
  end
45
45
  end
46
46
 
@@ -48,8 +48,8 @@ describe "Registering an object to administer" do
48
48
  it "should run the dsl in the same config object" do
49
49
  config_1 = ActiveAdmin.register(Category) { filter :name }
50
50
  config_2 = ActiveAdmin.register(Category) { filter :id }
51
- config_1.should == config_2
52
- config_1.filters.size.should == 2
51
+ expect(config_1).to eq config_2
52
+ expect(config_1.filters.size).to eq 2
53
53
  end
54
54
  end
55
55