yousty-activeadmin 1.0.4.pre → 1.0.5.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -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,54 +1,90 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
  require 'active_admin/resource_collection'
3
3
 
4
- include ActiveAdmin
5
-
6
4
  describe ActiveAdmin::ResourceCollection do
7
5
  let(:application) { ActiveAdmin::Application.new }
8
- let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
9
-
10
- let(:collection){ ResourceCollection.new }
11
-
12
- let(:resource){ double resource_name: "MyResource" }
6
+ let(:namespace) { ActiveAdmin::Namespace.new application, :admin }
7
+ let(:collection) { ActiveAdmin::ResourceCollection.new }
8
+ let(:resource) { double resource_name: "MyResource" }
9
+
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 }
13
18
 
14
19
  it "should have no resources when new" do
15
- collection.should be_empty
20
+ expect(collection).to be_empty
16
21
  end
17
22
 
18
23
  it "should be enumerable" do
19
24
  collection.add(resource)
20
- collection.each{ |r| r.should == resource }
25
+ collection.each{ |r| expect(r).to eq resource }
21
26
  end
22
27
 
23
28
  it "should return the available keys" do
24
29
  collection.add resource
25
- collection.keys.should == [resource.resource_name]
30
+ expect(collection.keys).to eq [resource.resource_name]
26
31
  end
27
32
 
28
- describe "adding a new resource" do
33
+ describe "#add" do
29
34
  it "should return the resource" do
30
- collection.add(resource).should == resource
35
+ expect(collection.add(resource)).to eq resource
31
36
  end
32
37
 
33
38
  it "should add a new resource" do
34
39
  collection.add(resource)
35
- collection.values.should == [resource]
40
+ expect(collection.values).to eq [resource]
36
41
  end
37
42
 
38
43
  it "should be available by name" do
39
44
  collection.add(resource)
40
- collection[resource.resource_name].should == resource
45
+ expect(collection[resource.resource_name]).to eq resource
41
46
  end
42
47
 
43
48
  it "shouldn't happen twice" do
44
49
  collection.add(resource); collection.add(resource)
45
- collection.values.should == [resource]
50
+ expect(collection.values).to eq [resource]
51
+ end
52
+
53
+ it "shouldn't allow a resource name mismatch to occur" do
54
+ expect {
55
+ ActiveAdmin.register Category
56
+ ActiveAdmin.register Post, as: "Category"
57
+ }.to raise_error ActiveAdmin::ResourceCollection::ConfigMismatch
58
+ end
59
+
60
+ it "shouldn't allow a Page/Resource mismatch to occur" do
61
+ expect {
62
+ ActiveAdmin.register User
63
+ ActiveAdmin.register_page 'User'
64
+ }.to raise_error ActiveAdmin::ResourceCollection::IncorrectClass
65
+ end
66
+
67
+ describe "should store both renamed and non-renamed resources" do
68
+ let(:resource) { ActiveAdmin::Resource.new namespace, Category }
69
+ let(:renamed) { ActiveAdmin::Resource.new namespace, Category, as: "Subcategory" }
70
+
71
+ it "when the renamed version is added first" do
72
+ collection.add renamed
73
+ collection.add resource
74
+ expect(collection.values).to include(resource, renamed)
75
+ end
76
+
77
+ it "when the renamed version is added last" do
78
+ collection.add resource
79
+ collection.add renamed
80
+ expect(collection.values).to include(resource, renamed)
81
+ end
46
82
  end
47
83
  end
48
84
 
49
85
  describe "#[]" do
50
- let(:resource) { Resource.new(namespace, resource_class) }
51
- let(:inherited_resource) { Resource.new(namespace, inherited_resource_class) }
86
+ let(:resource) { ActiveAdmin::Resource.new namespace, resource_class }
87
+ let(:inherited_resource) { ActiveAdmin::Resource.new namespace, inherited_resource_class }
52
88
 
53
89
  let(:resource_class) { User }
54
90
  let(:inherited_resource_class) { Publisher }
@@ -61,27 +97,27 @@ describe ActiveAdmin::ResourceCollection do
61
97
  end
62
98
 
63
99
  it "should find resource by class" do
64
- collection[resource_class].should == resource
100
+ expect(collection[resource_class]).to eq resource
65
101
  end
66
102
 
67
103
  it "should find resource by class string" do
68
- collection[resource_class.to_s].should == resource
104
+ expect(collection[resource_class.to_s]).to eq resource
69
105
  end
70
106
 
71
107
  it "should find inherited resource by class" do
72
- collection[inherited_resource_class].should == inherited_resource
108
+ expect(collection[inherited_resource_class]).to eq inherited_resource
73
109
  end
74
110
 
75
111
  it "should find inherited resource by class string" do
76
- collection[inherited_resource_class.to_s].should == inherited_resource
112
+ expect(collection[inherited_resource_class.to_s]).to eq inherited_resource
77
113
  end
78
114
 
79
115
  it "should return nil when the resource_class does not respond to base_class and it is not in the collection" do
80
- collection[double].should == nil
116
+ expect(collection[double]).to eq nil
81
117
  end
82
118
 
83
119
  it "should return nil when a resource class is NOT in the collection" do
84
- collection[unregistered_class].should == nil
120
+ expect(collection[unregistered_class]).to eq nil
85
121
  end
86
122
  end
87
123
 
@@ -91,12 +127,12 @@ describe ActiveAdmin::ResourceCollection do
91
127
  end
92
128
 
93
129
  it "should find resource by inherited class" do
94
- collection[inherited_resource_class].should == resource
130
+ expect(collection[inherited_resource_class]).to eq resource
95
131
  end
96
132
  end
97
133
 
98
134
  context "with a renamed resource" do
99
- let(:renamed_resource) { Resource.new(namespace, resource_class, :as => name) }
135
+ let(:renamed_resource) { ActiveAdmin::Resource.new namespace, resource_class, as: name }
100
136
  let(:name) { "Administrators" }
101
137
 
102
138
  before do
@@ -104,57 +140,19 @@ describe ActiveAdmin::ResourceCollection do
104
140
  end
105
141
 
106
142
  it "should find resource by class" do
107
- collection[resource_class].should == renamed_resource
143
+ expect(collection[resource_class]).to eq renamed_resource
108
144
  end
109
145
 
110
146
  it "should find resource by class string" do
111
- collection[resource_class.to_s].should == renamed_resource
147
+ expect(collection[resource_class.to_s]).to eq renamed_resource
112
148
  end
113
149
 
114
150
  it "should find resource by name" do
115
- collection[name].should == renamed_resource
151
+ expect(collection[name]).to eq renamed_resource
116
152
  end
117
153
  end
118
154
  end
119
155
 
120
- describe ".add" do
121
- let(:resource) { Resource.new(namespace, Category) }
122
- let(:resource_renamed) { Resource.new(namespace, Category, as: "Subcategory") }
123
-
124
- context "when renamed resource is added first" do
125
- before do
126
- collection.add(resource_renamed)
127
- collection.add(resource)
128
- end
129
-
130
- it "contains both resources" do
131
- collection.values.should include(resource, resource_renamed)
132
- end
133
- end
134
-
135
- context "when resource is added first" do
136
- before do
137
- collection.add(resource)
138
- collection.add(resource_renamed)
139
- end
140
-
141
- it "contains both resources" do
142
- collection.values.should include(resource, resource_renamed)
143
- end
144
- end
145
-
146
- context "when a duplicate resource is added" do
147
- let(:resource_duplicate) { Resource.new(namespace, Category) }
148
-
149
- before do
150
- collection.add(resource)
151
- collection.add(resource_duplicate)
152
- end
153
-
154
- it "the collection contains one instance of that resource" do
155
- collection.values.should eq([resource])
156
- end
157
- end
158
- end
156
+ skip "specs for subclasses of Page and Resource"
159
157
 
160
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,39 +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 => {} }}
17
+ let(:params) {{ q: {} }}
18
18
  it "should call the search method" do
19
19
  chain = double "ChainObj"
20
- chain.should_receive(:ransack).with(params[:q]).once.and_return(Post.ransack)
20
+ expect(chain).to receive(:ransack).with(params[:q]).once.and_return(Post.ransack)
21
21
  controller.send :apply_filtering, chain
22
22
  end
23
-
24
23
  end
25
24
 
26
25
  describe "sorting" do
27
26
 
28
- context "for table columns" do
29
- let(:params){ {:order => "id_asc" }}
30
- it "should prepend the table name" do
27
+ context "valid clause" do
28
+ let(:params) {{ order: "id_asc" }}
29
+
30
+ it "reorders chain" do
31
31
  chain = double "ChainObj"
32
- chain.should_receive(:reorder).with('"posts"."id" asc').once.and_return(Post.search)
32
+ expect(chain).to receive(:reorder).with('"posts"."id" asc').once.and_return(Post.search)
33
33
  controller.send :apply_sorting, chain
34
34
  end
35
35
  end
36
36
 
37
- context "for virtual columns" do
38
- let(:params){ {:order => "virtual_id_asc" }}
39
- it "should not prepend the table name" do
37
+ context "invalid clause" do
38
+ let(:params) {{ order: "_asc" }}
39
+
40
+ it "returns chain untouched" do
40
41
  chain = double "ChainObj"
41
- chain.should_receive(:reorder).with('"virtual_id" asc').once.and_return(Post.search)
42
- controller.send :apply_sorting, chain
42
+ expect(chain).not_to receive(:reorder)
43
+ expect(controller.send(:apply_sorting, chain)).to eq chain
43
44
  end
44
45
  end
45
46
 
@@ -50,8 +51,8 @@ describe ActiveAdmin::ResourceController::DataAccess do
50
51
  context "when no current scope" do
51
52
  it "should set collection_before_scope to the chain and return the chain" do
52
53
  chain = double "ChainObj"
53
- controller.send(:apply_scoping, chain).should == chain
54
- controller.send(:collection_before_scope).should == chain
54
+ expect(controller.send(:apply_scoping, chain)).to eq chain
55
+ expect(controller.send(:collection_before_scope)).to eq chain
55
56
  end
56
57
  end
57
58
 
@@ -60,14 +61,31 @@ describe ActiveAdmin::ResourceController::DataAccess do
60
61
  chain = double "ChainObj"
61
62
  scoped_chain = double "ScopedChain"
62
63
  current_scope = double "CurrentScope"
63
- controller.stub(:current_scope) { current_scope }
64
+ allow(controller).to receive(:current_scope) { current_scope }
64
65
 
65
- controller.should_receive(:scope_chain).with(current_scope, chain) { scoped_chain }
66
- controller.send(:apply_scoping, chain).should == scoped_chain
67
- controller.send(:collection_before_scope).should == chain
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
68
69
  end
69
70
  end
70
-
71
71
  end
72
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
90
+ end
73
91
  end