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,40 +1,68 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe "display_name" do
4
4
 
5
5
  include ActiveAdmin::ViewHelpers
6
6
 
7
- [:display_name, :full_name, :name, :username, :login, :title, :email, :to_s].each do |m|
7
+ ActiveAdmin::Application.new.display_name_methods.map(&:to_s).each do |m|
8
8
  it "should return #{m} when defined" do
9
- r = Class.new do
10
- define_method m do
11
- m.to_s
12
- end
13
- end.new
14
- display_name(r).should == m.to_s
9
+ klass = Class.new do
10
+ define_method(m) { m }
11
+ end
12
+ expect(display_name klass.new).to eq m
15
13
  end
16
14
  end
17
15
 
18
- it "should memeoize the result for the class" do
19
- subject { Class.new.new }
20
- subject.should_receive(:name).twice.and_return "My Name"
21
- display_name(subject).should == "My Name"
22
- ActiveAdmin.application.should_not_receive(:display_name_methods)
23
- display_name(subject).should == "My Name"
16
+ it "should memoize the result for the class" do
17
+ subject = Class.new.new
18
+ expect(subject).to receive(:name).twice.and_return "My Name"
19
+ expect(display_name subject).to eq "My Name"
20
+ expect(ActiveAdmin.application).to_not receive(:display_name_methods)
21
+ expect(display_name subject).to eq "My Name"
24
22
  end
25
23
 
26
24
  it "should not call a method if it's an association" do
27
- subject { Class.new.new }
28
- subject.stub_chain(:class, :reflect_on_all_associations).and_return [ mock(:name => :login) ]
29
- subject.stub :login
30
- subject.should_not_receive :login
31
- subject.stub(:email).and_return 'foo@bar.baz'
32
- display_name(subject).should == 'foo@bar.baz'
25
+ klass = Class.new
26
+ subject = klass.new
27
+ allow(klass).to receive(:reflect_on_all_associations).and_return [ double(name: :login) ]
28
+ allow(subject).to receive :login
29
+ expect(subject).to_not receive :login
30
+ allow(subject).to receive(:email).and_return 'foo@bar.baz'
31
+ expect(display_name subject).to eq 'foo@bar.baz'
33
32
  end
34
33
 
35
34
  [nil, false].each do |type|
36
35
  it "should return nil when the passed object is #{type.inspect}" do
37
- display_name(type).should eq nil
36
+ expect(display_name type).to eq nil
37
+ end
38
+ end
39
+
40
+ it "should default to `to_s`" do
41
+ subject = Class.new.new
42
+ expect(display_name subject).to eq subject.to_s
43
+ end
44
+
45
+ context "when no display name method is defined" do
46
+ context "on a Rails model" do
47
+ it "should show the model name" do
48
+ class ThisModel
49
+ extend ActiveModel::Naming
50
+ end
51
+ subject = ThisModel.new
52
+ expect(display_name subject).to eq "This model"
53
+ end
54
+
55
+ it "should show the model name, plus the ID if in use" do
56
+ subject = Tagging.create!
57
+ expect(display_name subject).to eq "Tagging #1"
58
+ end
59
+
60
+ it "should translate the model name" do
61
+ with_translation activerecord: {models: {tagging: {one: "Different"}}} do
62
+ subject = Tagging.create!
63
+ expect(display_name subject).to eq "Different #1"
64
+ end
65
+ end
38
66
  end
39
67
  end
40
68
 
@@ -1,9 +1,9 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::ViewHelpers::DownloadFormatLinksHelper do
4
4
 
5
5
  describe "class methods" do
6
- before :each do
6
+ before :all do
7
7
 
8
8
  begin
9
9
  # The mime type to be used in respond_to |format| style web-services in rails
@@ -18,17 +18,17 @@ describe ActiveAdmin::ViewHelpers::DownloadFormatLinksHelper do
18
18
  end
19
19
 
20
20
  it "extends the class to add a formats class method that returns the default formats." do
21
- Foo.formats.should == [:csv, :xml, :json]
21
+ expect(Foo.formats).to eq [:csv, :xml, :json]
22
22
  end
23
23
 
24
24
  it "does not let you alter the formats array directly" do
25
25
  Foo.formats << :xlsx
26
- Foo.formats.should == [:csv, :xml, :json]
26
+ expect(Foo.formats).to eq [:csv, :xml, :json]
27
27
  end
28
28
 
29
29
  it "allows us to add new formats" do
30
30
  Foo.add_format :xlsx
31
- Foo.formats.should == [:csv, :xml, :json, :xlsx]
31
+ expect(Foo.formats).to eq [:csv, :xml, :json, :xlsx]
32
32
  end
33
33
 
34
34
  it "raises an exception if you provide an unregisterd mime type extension" do
@@ -4,47 +4,47 @@ describe ActiveAdmin::ViewHelpers::FormHelper, ".fields_for" do
4
4
  include ActiveAdmin::ViewHelpers::FormHelper
5
5
 
6
6
  it "should skip :action, :controller and :commit" do
7
- fields_for_params(
8
- :scope => "All", :action => "index", :controller => "PostController", :commit => "Filter", :utf8 => "Yes!").
9
- should == [ { :scope => "All" } ]
7
+ expect(fields_for_params(
8
+ scope: "All", action: "index", controller: "PostController", commit: "Filter", utf8: "Yes!")).
9
+ to eq [ { scope: "All" } ]
10
10
  end
11
11
 
12
12
  it "should skip the except" do
13
- fields_for_params({:scope => "All", :name => "Greg"}, :except => :name).
14
- should == [ { :scope => "All" } ]
13
+ expect(fields_for_params({scope: "All", name: "Greg"}, except: :name)).
14
+ to eq [ { scope: "All" } ]
15
15
  end
16
16
 
17
17
  it "should allow an array for the except" do
18
- fields_for_params({:scope => "All", :name => "Greg", :age => "12"}, :except => [:name, :age]).
19
- should == [ { :scope => "All" } ]
18
+ expect(fields_for_params({scope: "All", name: "Greg", age: "12"}, except: [:name, :age])).
19
+ to eq [ { scope: "All" } ]
20
20
  end
21
21
 
22
22
  it "should work with hashes" do
23
- params = fields_for_params(:filters => { :name => "John", :age => "12" })
23
+ params = fields_for_params(filters: { name: "John", age: "12" })
24
24
 
25
- params.size.should == 2
26
- params.should include({"filters[name]" => "John" })
27
- params.should include({ "filters[age]" => "12" })
25
+ expect(params.size).to eq 2
26
+ expect(params).to include({"filters[name]" => "John" })
27
+ expect(params).to include({ "filters[age]" => "12" })
28
28
  end
29
29
 
30
30
  it "should work with nested hashes" do
31
- fields_for_params(:filters => { :user => { :name => "John" }}).
32
- should == [ { "filters[user][name]" => "John" } ]
31
+ expect(fields_for_params(filters: { user: { name: "John" }})).
32
+ to eq [ { "filters[user][name]" => "John" } ]
33
33
  end
34
34
 
35
35
  it "should work with arrays" do
36
- fields_for_params(:people => ["greg", "emily", "philippe"]).
37
- should == [ { "people[]" => "greg" },
36
+ expect(fields_for_params(people: ["greg", "emily", "philippe"])).
37
+ to eq [ { "people[]" => "greg" },
38
38
  { "people[]" => "emily" },
39
39
  { "people[]" => "philippe" } ]
40
40
  end
41
41
 
42
42
  it "should work with symbols" do
43
- fields_for_params(:filter => :id).
44
- should == [ { :filter => "id" } ]
43
+ expect(fields_for_params(filter: :id)).
44
+ to eq [ { filter: "id" } ]
45
45
  end
46
46
 
47
47
  it "should work with booleans" do
48
- fields_for_params(:booleantest => false).should == [ { :booleantest => false } ]
48
+ expect(fields_for_params(booleantest: false)).to eq [ { booleantest: false } ]
49
49
  end
50
50
  end
@@ -0,0 +1,25 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::ViewHelpers::FlashHelper do
4
+
5
+ describe '.flash_messages' do
6
+ let(:view) { action_view }
7
+
8
+ it "should not include 'timedout' flash messages by default" do
9
+ view.request.flash[:alert] = "Alert"
10
+ view.request.flash[:timedout] = true
11
+ expect(view.flash_messages).to include 'alert'
12
+ expect(view.flash_messages).to_not include 'timedout'
13
+ end
14
+
15
+ it "should not return flash messages included in flash_keys_to_except" do
16
+ expect(view.active_admin_application).to receive(:flash_keys_to_except).and_return ["hideme"]
17
+ view.request.flash[:alert] = "Alert"
18
+ view.request.flash[:hideme] = "Do not show"
19
+ expect(view.flash_messages).to include 'alert'
20
+ expect(view.flash_messages).to_not include 'hideme'
21
+ end
22
+
23
+ end
24
+ end
25
+
@@ -1,14 +1,14 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::ViewHelpers::FormHelper do
4
4
 
5
5
  describe '.active_admin_form_for' do
6
6
  let(:view) { action_view }
7
- let(:resource) { stub('resource') }
7
+ let(:resource) { double 'resource' }
8
8
  let(:default_options) { { builder: ActiveAdmin::FormBuilder } }
9
9
 
10
10
  it 'calls semantic_form_for with the ActiveAdmin form builder' do
11
- view.should_receive(:semantic_form_for).with(resource, builder: ActiveAdmin::FormBuilder)
11
+ expect(view).to receive(:semantic_form_for).with(resource, builder: ActiveAdmin::FormBuilder)
12
12
  view.active_admin_form_for(resource)
13
13
  end
14
14
 
@@ -16,40 +16,27 @@ describe ActiveAdmin::ViewHelpers::FormHelper do
16
16
  # We can't use a stub here because options gets marshalled, and a new
17
17
  # instance built. Any constant will work.
18
18
  custom_builder = Object
19
- view.should_receive(:semantic_form_for).with(resource, builder: custom_builder)
19
+ expect(view).to receive(:semantic_form_for).with(resource, builder: custom_builder)
20
20
  view.active_admin_form_for(resource, builder: custom_builder)
21
21
  end
22
-
23
- context 'with a decorated resource' do
24
- let(:decorated) { stub('decorated_resource', model: resource) }
25
-
26
- it 'can disable automatic decoration' do
27
- view.should_receive(:semantic_form_for).with(resource, default_options.merge(decorate: false))
28
- view.active_admin_form_for(decorated, decorate: false)
29
- end
30
-
31
- it 'can enable automatic decoration' do
32
- view.should_receive(:semantic_form_for).with(decorated, default_options.merge(decorate: true))
33
- view.active_admin_form_for(decorated, decorate: true)
34
- end
35
- end
36
22
  end
37
23
 
38
24
  describe ".hidden_field_tags_for" do
39
25
  let(:view) { action_view }
40
26
 
41
27
  it "should render hidden field tags for params" do
42
- view.hidden_field_tags_for(:scope => "All", :filter => "None").should ==
43
- %{<input id="hidden_active_admin_scope" name="scope" type="hidden" value="All" />\n<input id="hidden_active_admin_filter" name="filter" type="hidden" value="None" />}
28
+ html = Capybara.string view.hidden_field_tags_for(scope: "All", filter: "None")
29
+ expect(html).to have_selector("input#hidden_active_admin_scope[name=scope][type=hidden][value=All]")
30
+ expect(html).to have_selector("input#hidden_active_admin_filter[name=filter][type=hidden][value=None]")
44
31
  end
45
32
 
46
33
  it "should generate not default id for hidden input" do
47
- view.hidden_field_tags_for(:scope => "All")[/id="([^"]+)"/, 1].should_not == "scope"
34
+ expect(view.hidden_field_tags_for(scope: "All")[/id="([^"]+)"/, 1]).to_not eq "scope"
48
35
  end
49
36
 
50
37
  it "should filter out the field passed via the option :except" do
51
- view.hidden_field_tags_for({:scope => "All", :filter => "None"}, :except => :filter).should ==
52
- %{<input id="hidden_active_admin_scope" name="scope" type="hidden" value="All" />}
38
+ html = Capybara.string view.hidden_field_tags_for({scope: "All", filter: "None"}, except: :filter)
39
+ expect(html).to have_selector("input#hidden_active_admin_scope[name=scope][type=hidden][value=All]")
53
40
  end
54
41
  end
55
42
  end
@@ -1,10 +1,10 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe MethodOrProcHelper do
4
- let(:receiver) { mock }
4
+ let(:receiver) { double }
5
5
 
6
6
  let(:context) do
7
- obj = mock(:receiver_in_context => receiver)
7
+ obj = double receiver_in_context: receiver
8
8
  obj.extend MethodOrProcHelper
9
9
  obj
10
10
  end
@@ -12,13 +12,11 @@ describe MethodOrProcHelper do
12
12
  describe "#call_method_or_exec_proc" do
13
13
 
14
14
  it "should call the method in the context when a symbol" do
15
- context.call_method_or_exec_proc(:receiver_in_context).
16
- should == receiver
15
+ expect(context.call_method_or_exec_proc(:receiver_in_context)).to eq receiver
17
16
  end
18
17
 
19
18
  it "should call the method in the context when a string" do
20
- context.call_method_or_exec_proc("receiver_in_context").
21
- should == receiver
19
+ expect(context.call_method_or_exec_proc("receiver_in_context")).to eq receiver
22
20
  end
23
21
 
24
22
  it "should exec a proc in the context" do
@@ -33,22 +31,20 @@ describe MethodOrProcHelper do
33
31
 
34
32
  describe "#call_method_or_proc_on" do
35
33
 
36
- context "when a symbol" do
34
+ [:hello, 'hello'].each do |key|
35
+ context "when a #{key.class}" do
36
+ it "should call the method on the receiver" do
37
+ expect(receiver).to receive(key).and_return 'hello'
37
38
 
38
- it 'should call the method on the receiver' do
39
- receiver.should_receive(:hello).and_return("hello")
40
-
41
- context.call_method_or_proc_on(receiver, "hello").
42
- should == "hello"
43
- end
39
+ expect(context.call_method_or_proc_on(receiver, key)).to eq 'hello'
40
+ end
44
41
 
45
- it "should receive additional arguments" do
46
- receiver.should_receive(:hello).with("world").and_return("hello world")
42
+ it "should receive additional arguments" do
43
+ expect(receiver).to receive(key).with(:world).and_return 'hello world'
47
44
 
48
- context.call_method_or_proc_on(receiver, :hello, "world").
49
- should == "hello world"
45
+ expect(context.call_method_or_proc_on(receiver, key, :world)).to eq 'hello world'
46
+ end
50
47
  end
51
-
52
48
  end
53
49
 
54
50
  context "when a proc" do
@@ -75,17 +71,17 @@ describe MethodOrProcHelper do
75
71
 
76
72
  end
77
73
 
78
- context "when a proc and :exec => false" do
74
+ context "when a proc and exec: false" do
79
75
 
80
76
  it "should call the proc and pass in the receiver" do
81
- obj_not_in_context = mock
77
+ obj_not_in_context = double
82
78
 
83
79
  test_proc = Proc.new do |arg|
84
80
  raise "Success!" if arg == receiver && obj_not_in_context
85
81
  end
86
82
 
87
83
  expect {
88
- context.call_method_or_proc_on(receiver,test_proc, :exec => false)
84
+ context.call_method_or_proc_on(receiver,test_proc, exec: false)
89
85
  }.to raise_error("Success!")
90
86
  end
91
87
 
@@ -94,4 +90,50 @@ describe MethodOrProcHelper do
94
90
 
95
91
  end
96
92
 
93
+ describe "#render_or_call_method_or_proc_on" do
94
+ [ :symbol, Proc.new{} ].each do |key|
95
+ context "when a #{key.class}" do
96
+ it "should call #call_method_or_proc_on" do
97
+ options = { foo: :bar }
98
+ expect(context).to receive(:call_method_or_proc_on).with(receiver, key, options).and_return("data")
99
+ expect(context.render_or_call_method_or_proc_on(receiver, key, options)).to eq "data"
100
+ end
101
+ end
102
+ end
103
+
104
+ context "when a string" do
105
+ it "should return the string" do
106
+ expect(context.render_or_call_method_or_proc_on(receiver, "string")).to eq "string"
107
+ end
108
+ end
109
+ end
110
+
111
+ describe "#render_in_context" do
112
+ let(:args) { [1, 2, 3] }
113
+
114
+ context "when a Proc" do
115
+ let(:object) { Proc.new { } }
116
+
117
+ it "should instance_exec the Proc" do
118
+ expect(receiver).to receive(:instance_exec).with(args, &object).and_return("data")
119
+ expect(context.render_in_context(receiver, object, args)).to eq "data"
120
+ end
121
+ end
122
+
123
+ context "when a Symbol" do
124
+ it "should send the symbol" do
125
+ expect(receiver).to receive(:public_send).with(:symbol, args).and_return("data")
126
+ expect(context.render_in_context(receiver, :symbol, args)).to eq "data"
127
+ end
128
+ end
129
+
130
+ context "when a Object (not Proc or String)" do
131
+ let(:object) { Object.new }
132
+
133
+ it "should return the Object" do
134
+ expect(context.render_in_context(receiver, object)).to eq object
135
+ end
136
+ end
137
+ end
138
+
97
139
  end
@@ -1,10 +1,10 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::ActionListPopover do
4
4
 
5
5
  let(:the_popover) do
6
6
  arbre {
7
- action_list_popover :id => "my_awesome_action_list_popover" do
7
+ action_list_popover id: "my_awesome_action_list_popover" do
8
8
  action "My First Great Action", "#"
9
9
  action "My Second Great Action", "http://www.google.com"
10
10
  end
@@ -12,7 +12,7 @@ describe ActiveAdmin::Views::ActionListPopover do
12
12
  end
13
13
 
14
14
  it "should have an id" do
15
- the_popover.id.should == "my_awesome_action_list_popover"
15
+ expect(the_popover.id).to eq "my_awesome_action_list_popover"
16
16
  end
17
17
 
18
18
  describe "the action list" do
@@ -20,10 +20,20 @@ describe ActiveAdmin::Views::ActionListPopover do
20
20
  the_popover.find_by_class("popover_contents").first
21
21
  end
22
22
 
23
- its(:tag_name) { should eql("ul") }
23
+ describe '#tag_name' do
24
+ subject { super().tag_name }
25
+ it { is_expected.to eql("ul") }
26
+ end
27
+
28
+ describe '#content' do
29
+ subject { super().content }
30
+ it{ is_expected.to include("<li><a href=\"#\">My First Great Action</a></li>") }
31
+ end
24
32
 
25
- its(:content){ should include("<li><a href=\"#\">My First Great Action</a></li>") }
26
- its(:content){ should include("<li><a href=\"http://www.google.com\">My Second Great Action</a></li>") }
33
+ describe '#content' do
34
+ subject { super().content }
35
+ it{ is_expected.to include("<li><a href=\"http://www.google.com\">My Second Great Action</a></li>") }
36
+ end
27
37
 
28
38
  end
29
39