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
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Resource::PagePresenters do
4
4
 
@@ -6,19 +6,19 @@ describe ActiveAdmin::Resource::PagePresenters do
6
6
  let(:resource){ namespace.register(Post) }
7
7
 
8
8
  it "should have an empty set of configs on initialize" do
9
- resource.page_presenters.should == {}
9
+ expect(resource.page_presenters).to eq ({})
10
10
  end
11
11
 
12
12
  it "should add a show page presenter" do
13
13
  page_presenter = ActiveAdmin::PagePresenter.new
14
14
  resource.set_page_presenter(:show, page_presenter)
15
- resource.page_presenters[:show].should == page_presenter
15
+ expect(resource.page_presenters[:show]).to eq page_presenter
16
16
  end
17
17
 
18
18
  it "should add an index page presenter" do
19
- page_presenter = ActiveAdmin::PagePresenter.new({:as => :table})
19
+ page_presenter = ActiveAdmin::PagePresenter.new({as: :table})
20
20
  resource.set_page_presenter(:index, page_presenter)
21
- resource.page_presenters[:index].default.should == page_presenter
21
+ expect(resource.page_presenters[:index].default).to eq page_presenter
22
22
  end
23
23
 
24
24
  describe "#get_page_presenter" do
@@ -26,17 +26,17 @@ describe ActiveAdmin::Resource::PagePresenters do
26
26
  it "should return a page config when set" do
27
27
  page_presenter = ActiveAdmin::PagePresenter.new
28
28
  resource.set_page_presenter(:index, page_presenter)
29
- resource.get_page_presenter(:index).should == page_presenter
29
+ expect(resource.get_page_presenter(:index)).to eq page_presenter
30
30
  end
31
31
 
32
32
  it "should return a specific index page config when set" do
33
33
  page_presenter = ActiveAdmin::PagePresenter.new
34
34
  resource.set_page_presenter(:index, page_presenter)
35
- resource.get_page_presenter(:index, "table").should == page_presenter
35
+ expect(resource.get_page_presenter(:index, "table")).to eq page_presenter
36
36
  end
37
37
 
38
38
  it "should return nil when no page config set" do
39
- resource.get_page_presenter(:index).should == nil
39
+ expect(resource.get_page_presenter(:index)).to eq nil
40
40
  end
41
41
 
42
42
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  module ActiveAdmin
4
4
  describe Resource, "Pagination" do
@@ -14,24 +14,24 @@ module ActiveAdmin
14
14
 
15
15
  describe "#paginate" do
16
16
  it "should default to true" do
17
- config.paginate.should == true
17
+ expect(config.paginate).to eq true
18
18
  end
19
19
 
20
20
  it "should be settable to false" do
21
21
  config.paginate = false
22
- config.paginate.should == false
22
+ expect(config.paginate).to eq false
23
23
  end
24
24
  end
25
25
 
26
26
  describe "#per_page" do
27
27
  it "should default to namespace.default_per_page" do
28
- namespace.should_receive(:default_per_page).and_return(5)
29
- config.per_page.should == 5
28
+ expect(namespace).to receive(:default_per_page).and_return(5)
29
+ expect(config.per_page).to eq 5
30
30
  end
31
31
 
32
32
  it "should be settable" do
33
33
  config.per_page = 5
34
- config.per_page.should == 5
34
+ expect(config.per_page).to eq 5
35
35
  end
36
36
  end
37
37
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  module ActiveAdmin
4
4
  describe Resource::Routes do
@@ -10,27 +10,27 @@ module ActiveAdmin
10
10
  let(:category) { Category.new { |c| c.id = 123 } }
11
11
 
12
12
  it "should return the route prefix" do
13
- config.route_prefix.should eq 'admin'
13
+ expect(config.route_prefix).to eq 'admin'
14
14
  end
15
15
 
16
16
  it "should return the route collection path" do
17
- config.route_collection_path.should eq '/admin/categories'
17
+ expect(config.route_collection_path).to eq '/admin/categories'
18
18
  end
19
19
 
20
20
  it "should return the route instance path" do
21
- config.route_instance_path(category).should eq '/admin/categories/123'
21
+ expect(config.route_instance_path(category)).to eq '/admin/categories/123'
22
22
  end
23
23
  end
24
24
 
25
25
  context "when in the root namespace" do
26
- let!(:config) { ActiveAdmin.register Category, :namespace => false }
26
+ let!(:config) { ActiveAdmin.register Category, namespace: false }
27
27
  it "should have a nil route_prefix" do
28
- config.route_prefix.should be_nil
28
+ expect(config.route_prefix).to be_nil
29
29
  end
30
30
 
31
31
  it "should generate a correct route" do
32
32
  reload_routes!
33
- config.route_collection_path.should == "/categories"
33
+ expect(config.route_collection_path).to eq "/categories"
34
34
  end
35
35
  end
36
36
 
@@ -40,7 +40,7 @@ module ActiveAdmin
40
40
  before{ reload_routes! }
41
41
 
42
42
  it "should return the plural route with _index" do
43
- config.route_collection_path.should == "/admin/news"
43
+ expect(config.route_collection_path).to eq "/admin/news"
44
44
  end
45
45
  end
46
46
 
@@ -61,11 +61,11 @@ module ActiveAdmin
61
61
  before{ reload_routes! }
62
62
 
63
63
  it "should nest the collection path" do
64
- config.route_collection_path(category_id: 1).should == "/admin/categories/1/posts"
64
+ expect(config.route_collection_path(category_id: 1)).to eq "/admin/categories/1/posts"
65
65
  end
66
66
 
67
67
  it "should nest the instance path" do
68
- config.route_instance_path(post).should == "/admin/categories/1/posts/3"
68
+ expect(config.route_instance_path(post)).to eq "/admin/categories/1/posts/3"
69
69
  end
70
70
  end
71
71
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  module ActiveAdmin
4
4
  describe Resource, "Scopes" do
@@ -16,26 +16,33 @@ module ActiveAdmin
16
16
 
17
17
  it "should add a scope" do
18
18
  config.scope :published
19
- config.scopes.first.should be_a(ActiveAdmin::Scope)
20
- config.scopes.first.name.should == "Published"
19
+ expect(config.scopes.first).to be_a(ActiveAdmin::Scope)
20
+ expect(config.scopes.first.name).to eq "Published"
21
21
  end
22
22
 
23
23
  it "should retrive a scope by its id" do
24
24
  config.scope :published
25
- config.get_scope_by_id(:published).name.should == "Published"
25
+ expect(config.get_scope_by_id(:published).name).to eq "Published"
26
+ end
27
+
28
+ it "should retrieve a string scope with spaces by its id without conflicts" do
29
+ aspace_1 = config.scope "a space"
30
+ aspace_2 = config.scope "as pace"
31
+ expect(config.get_scope_by_id(aspace_1.id).name).to eq "a space"
32
+ expect(config.get_scope_by_id(aspace_2.id).name).to eq "as pace"
26
33
  end
27
34
 
28
35
  it "should not add a scope with the same name twice" do
29
36
  config.scope :published
30
37
  config.scope :published
31
- config.scopes.size.should == 1
38
+ expect(config.scopes.size).to eq 1
32
39
  end
33
40
 
34
41
  it "should update a scope with the same id" do
35
42
  config.scope :published
36
- config.scopes.first.scope_block.should be_nil
43
+ expect(config.scopes.first.scope_block).to be_nil
37
44
  config.scope(:published){ }
38
- config.scopes.first.scope_block.should_not be_nil
45
+ expect(config.scopes.first.scope_block).to_not be_nil
39
46
  end
40
47
 
41
48
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Resource::Sidebars do
4
4
 
@@ -17,15 +17,15 @@ describe ActiveAdmin::Resource::Sidebars do
17
17
  end
18
18
 
19
19
  it "should add a sidebar section" do
20
- resource.should have(1).sidebar_sections
20
+ expect(resource.sidebar_sections.size).to eq(1)
21
21
  end
22
22
 
23
23
  end
24
24
 
25
25
  describe "retrieving sections for a controller action" do
26
26
 
27
- let(:only_index){ ActiveAdmin::SidebarSection.new(:help, :only => :index) }
28
- let(:only_show){ ActiveAdmin::SidebarSection.new(:help, :only => :show) }
27
+ let(:only_index){ ActiveAdmin::SidebarSection.new(:help, only: :index) }
28
+ let(:only_show){ ActiveAdmin::SidebarSection.new(:help, only: :show) }
29
29
 
30
30
  before do
31
31
  resource.clear_sidebar_sections!
@@ -34,8 +34,8 @@ describe ActiveAdmin::Resource::Sidebars do
34
34
  end
35
35
 
36
36
  it "should only return the relevant action items" do
37
- resource.should have(2).sidebar_sections
38
- resource.sidebar_sections_for("index").should == [only_index]
37
+ expect(resource.sidebar_sections.size).to eq(2)
38
+ expect(resource.sidebar_sections_for("index")).to eq [only_index]
39
39
  end
40
40
 
41
41
  end
@@ -1,60 +1,53 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
  require 'active_admin/resource_collection'
3
3
 
4
4
  describe ActiveAdmin::ResourceCollection do
5
5
  let(:application) { ActiveAdmin::Application.new }
6
6
  let(:namespace) { ActiveAdmin::Namespace.new application, :admin }
7
7
  let(:collection) { ActiveAdmin::ResourceCollection.new }
8
+ let(:resource) { double resource_name: "MyResource" }
8
9
 
9
- it { should respond_to :[] }
10
- it { should respond_to :add }
11
- it { should respond_to :each }
12
- it { should respond_to :has_key? }
13
- it { should respond_to :keys }
14
- it { should respond_to :values }
15
- it { should respond_to :size }
16
- it { should respond_to :to_a }
10
+ it { is_expected.to respond_to :[] }
11
+ it { is_expected.to respond_to :add }
12
+ it { is_expected.to respond_to :each }
13
+ it { is_expected.to respond_to :has_key? }
14
+ it { is_expected.to respond_to :keys }
15
+ it { is_expected.to respond_to :values }
16
+ it { is_expected.to respond_to :size }
17
+ it { is_expected.to respond_to :to_a }
17
18
 
18
19
  it "should have no resources when new" do
19
- collection.should be_empty
20
+ expect(collection).to be_empty
20
21
  end
21
22
 
22
23
  it "should be enumerable" do
23
- resource = mock :resource_name => "MyResource"
24
24
  collection.add(resource)
25
- collection.each{ |r| r.should == resource }
25
+ collection.each{ |r| expect(r).to eq resource }
26
26
  end
27
27
 
28
28
  it "should return the available keys" do
29
- resource = mock :resource_name => "MyResource"
30
29
  collection.add resource
31
- collection.keys.should == [resource.resource_name]
30
+ expect(collection.keys).to eq [resource.resource_name]
32
31
  end
33
32
 
34
33
  describe "#add" do
35
- let(:resource){ mock :resource_name => "MyResource" }
36
-
37
34
  it "should return the resource" do
38
- collection.add(resource).should == resource
35
+ expect(collection.add(resource)).to eq resource
39
36
  end
40
37
 
41
38
  it "should add a new resource" do
42
39
  collection.add(resource)
43
- collection.values.should == [resource]
40
+ expect(collection.values).to eq [resource]
44
41
  end
45
42
 
46
43
  it "should be available by name" do
47
44
  collection.add(resource)
48
- collection[resource.resource_name].should == resource
45
+ expect(collection[resource.resource_name]).to eq resource
49
46
  end
50
- end
51
-
52
- describe "adding a new resource when the key already exists" do
53
- let(:resource){ mock :resource_name => "MyResource" }
54
47
 
55
- it "should not add a new resource" do
48
+ it "shouldn't happen twice" do
56
49
  collection.add(resource); collection.add(resource)
57
- collection.values.should == [resource]
50
+ expect(collection.values).to eq [resource]
58
51
  end
59
52
 
60
53
  it "shouldn't allow a resource name mismatch to occur" do
@@ -78,13 +71,13 @@ describe ActiveAdmin::ResourceCollection do
78
71
  it "when the renamed version is added first" do
79
72
  collection.add renamed
80
73
  collection.add resource
81
- collection.values.should include(resource, renamed)
74
+ expect(collection.values).to include(resource, renamed)
82
75
  end
83
76
 
84
77
  it "when the renamed version is added last" do
85
78
  collection.add resource
86
79
  collection.add renamed
87
- collection.values.should include(resource, renamed)
80
+ expect(collection.values).to include(resource, renamed)
88
81
  end
89
82
  end
90
83
  end
@@ -104,27 +97,27 @@ describe ActiveAdmin::ResourceCollection do
104
97
  end
105
98
 
106
99
  it "should find resource by class" do
107
- collection[resource_class].should == resource
100
+ expect(collection[resource_class]).to eq resource
108
101
  end
109
102
 
110
103
  it "should find resource by class string" do
111
- collection[resource_class.to_s].should == resource
104
+ expect(collection[resource_class.to_s]).to eq resource
112
105
  end
113
106
 
114
107
  it "should find inherited resource by class" do
115
- collection[inherited_resource_class].should == inherited_resource
108
+ expect(collection[inherited_resource_class]).to eq inherited_resource
116
109
  end
117
110
 
118
111
  it "should find inherited resource by class string" do
119
- collection[inherited_resource_class.to_s].should == inherited_resource
112
+ expect(collection[inherited_resource_class.to_s]).to eq inherited_resource
120
113
  end
121
114
 
122
115
  it "should return nil when the resource_class does not respond to base_class and it is not in the collection" do
123
- collection[mock].should == nil
116
+ expect(collection[double]).to eq nil
124
117
  end
125
118
 
126
119
  it "should return nil when a resource class is NOT in the collection" do
127
- collection[unregistered_class].should == nil
120
+ expect(collection[unregistered_class]).to eq nil
128
121
  end
129
122
  end
130
123
 
@@ -134,7 +127,7 @@ describe ActiveAdmin::ResourceCollection do
134
127
  end
135
128
 
136
129
  it "should find resource by inherited class" do
137
- collection[inherited_resource_class].should == resource
130
+ expect(collection[inherited_resource_class]).to eq resource
138
131
  end
139
132
  end
140
133
 
@@ -147,19 +140,19 @@ describe ActiveAdmin::ResourceCollection do
147
140
  end
148
141
 
149
142
  it "should find resource by class" do
150
- collection[resource_class].should == renamed_resource
143
+ expect(collection[resource_class]).to eq renamed_resource
151
144
  end
152
145
 
153
146
  it "should find resource by class string" do
154
- collection[resource_class.to_s].should == renamed_resource
147
+ expect(collection[resource_class.to_s]).to eq renamed_resource
155
148
  end
156
149
 
157
150
  it "should find resource by name" do
158
- collection[name].should == renamed_resource
151
+ expect(collection[name]).to eq renamed_resource
159
152
  end
160
153
  end
161
154
  end
162
155
 
163
- pending "specs for subclasses of Page and Resource"
156
+ skip "specs for subclasses of Page and Resource"
164
157
 
165
158
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::ResourceController::DataAccess do
4
4
  let(:params) do
@@ -7,40 +7,40 @@ describe ActiveAdmin::ResourceController::DataAccess do
7
7
 
8
8
  let(:controller) do
9
9
  rc = Admin::PostsController.new
10
- rc.stub!(:params) do
10
+ allow(rc).to receive(:params) do
11
11
  params
12
12
  end
13
13
  rc
14
14
  end
15
15
 
16
16
  describe "searching" do
17
- let(:params){ {:q => {} }}
18
-
19
- it "should call the metasearch method" do
20
- chain = mock("ChainObj")
21
- chain.should_receive(:metasearch).with(params[:q]).once.and_return(Post.search)
17
+ let(:params) {{ q: {} }}
18
+ it "should call the search method" do
19
+ chain = double "ChainObj"
20
+ expect(chain).to receive(:ransack).with(params[:q]).once.and_return(Post.ransack)
22
21
  controller.send :apply_filtering, chain
23
22
  end
24
-
25
23
  end
26
24
 
27
25
  describe "sorting" do
28
26
 
29
- context "for table columns" do
30
- let(:params){ {:order => "id_asc" }}
31
- it "should prepend the table name" do
32
- chain = mock("ChainObj")
33
- chain.should_receive(:reorder).with("\"posts\".\"id\" asc").once.and_return(Post.search)
27
+ context "valid clause" do
28
+ let(:params) {{ order: "id_asc" }}
29
+
30
+ it "reorders chain" do
31
+ chain = double "ChainObj"
32
+ expect(chain).to receive(:reorder).with('"posts"."id" asc').once.and_return(Post.search)
34
33
  controller.send :apply_sorting, chain
35
34
  end
36
35
  end
37
36
 
38
- context "for virtual columns" do
39
- let(:params){ {:order => "virtual_id_asc" }}
40
- it "should not prepend the table name" do
41
- chain = mock("ChainObj")
42
- chain.should_receive(:reorder).with("\"virtual_id\" asc").once.and_return(Post.search)
43
- controller.send :apply_sorting, chain
37
+ context "invalid clause" do
38
+ let(:params) {{ order: "_asc" }}
39
+
40
+ it "returns chain untouched" do
41
+ chain = double "ChainObj"
42
+ expect(chain).not_to receive(:reorder)
43
+ expect(controller.send(:apply_sorting, chain)).to eq chain
44
44
  end
45
45
  end
46
46
 
@@ -50,25 +50,91 @@ describe ActiveAdmin::ResourceController::DataAccess do
50
50
 
51
51
  context "when no current scope" do
52
52
  it "should set collection_before_scope to the chain and return the chain" do
53
- chain = mock("ChainObj")
54
- controller.send(:apply_scoping, chain).should == chain
55
- controller.send(:collection_before_scope).should == chain
53
+ chain = double "ChainObj"
54
+ expect(controller.send(:apply_scoping, chain)).to eq chain
55
+ expect(controller.send(:collection_before_scope)).to eq chain
56
56
  end
57
57
  end
58
58
 
59
59
  context "when current scope" do
60
60
  it "should set collection_before_scope to the chain and return the scoped chain" do
61
- chain = mock("ChainObj")
62
- scoped_chain = mock("ScopedChain")
63
- current_scope = mock("CurrentScope")
64
- controller.stub!(:current_scope) { current_scope }
65
-
66
- controller.should_receive(:scope_chain).with(current_scope, chain) { scoped_chain }
67
- controller.send(:apply_scoping, chain).should == scoped_chain
68
- controller.send(:collection_before_scope).should == chain
61
+ chain = double "ChainObj"
62
+ scoped_chain = double "ScopedChain"
63
+ current_scope = double "CurrentScope"
64
+ allow(controller).to receive(:current_scope) { current_scope }
65
+
66
+ expect(controller).to receive(:scope_chain).with(current_scope, chain) { scoped_chain }
67
+ expect(controller.send(:apply_scoping, chain)).to eq scoped_chain
68
+ expect(controller.send(:collection_before_scope)).to eq chain
69
69
  end
70
70
  end
71
+ end
71
72
 
73
+ describe "includes" do
74
+ context "with no includes" do
75
+ it "should return the chain" do
76
+ chain = double "ChainObj"
77
+ expect(controller.send(:apply_includes, chain)).to eq chain
78
+ end
79
+ end
80
+
81
+ context "with includes" do
82
+ it "should return the chain with the includes" do
83
+ chain = double "ChainObj"
84
+ chain_with_includes = double "ChainObjWithIncludes"
85
+ expect(chain).to receive(:includes).with(:taggings, :author).and_return(chain_with_includes)
86
+ expect(controller.send(:active_admin_config)).to receive(:includes).twice.and_return([:taggings, :author])
87
+ expect(controller.send(:apply_includes, chain)).to eq chain_with_includes
88
+ end
89
+ end
72
90
  end
73
91
 
92
+ describe "find_collection" do
93
+ let(:appliers) do
94
+ ActiveAdmin::ResourceController::DataAccess::COLLECTION_APPLIES
95
+ end
96
+ let(:scoped_collection) do
97
+ double "ScopedCollectionChain"
98
+ end
99
+ before do
100
+ allow(controller).to receive(:scoped_collection).
101
+ and_return(scoped_collection)
102
+ end
103
+
104
+ it "should return chain with all appliers " do
105
+ appliers.each do |applier|
106
+ expect(controller).to receive("apply_#{applier}").
107
+ with(scoped_collection).
108
+ once.
109
+ and_return(scoped_collection)
110
+ end
111
+ expect(controller).to receive(:collection_applies).
112
+ with({}).and_call_original.once
113
+ controller.send :find_collection
114
+ end
115
+
116
+ describe "collection_applies" do
117
+ context "excepting appliers" do
118
+ let(:options) do
119
+ { except:
120
+ [:authorization_scope, :filtering, :scoping, :collection_decorator]
121
+ }
122
+ end
123
+
124
+ it "should except appliers" do
125
+ expect(controller.send :collection_applies, options).
126
+ to eq([:sorting, :includes, :pagination])
127
+ end
128
+ end
129
+
130
+ context "specifying only needed appliers" do
131
+ let(:options) do
132
+ { only: [:filtering, :scoping] }
133
+ end
134
+ it "should except appliers" do
135
+ expect(controller.send :collection_applies, options).to eq(options[:only])
136
+ end
137
+ end
138
+ end
139
+ end
74
140
  end