activeadmin 1.1.0 → 2.4.0

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 (465) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +469 -100
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +89 -47
  5. data/README.md +73 -19
  6. data/app/assets/javascripts/active_admin/base.es6 +23 -0
  7. data/app/assets/javascripts/active_admin/ext/jquery-ui.es6 +7 -0
  8. data/app/assets/javascripts/active_admin/ext/jquery.es6 +9 -0
  9. data/app/assets/javascripts/active_admin/initializers/datepicker.es6 +16 -0
  10. data/app/assets/javascripts/active_admin/initializers/filters.es6 +45 -0
  11. data/app/assets/javascripts/active_admin/initializers/tabs.es6 +6 -0
  12. data/app/assets/javascripts/active_admin/lib/active_admin.es6 +41 -0
  13. data/app/assets/javascripts/active_admin/lib/batch_actions.es6 +59 -0
  14. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.es6 +49 -0
  15. data/app/assets/javascripts/active_admin/lib/dropdown-menu.es6 +123 -0
  16. data/app/assets/javascripts/active_admin/lib/has_many.es6 +95 -0
  17. data/app/assets/javascripts/active_admin/lib/modal_dialog.es6 +61 -0
  18. data/app/assets/javascripts/active_admin/lib/per_page.es6 +47 -0
  19. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 +36 -0
  20. data/app/assets/stylesheets/active_admin/_forms.scss +3 -15
  21. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  22. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -5
  23. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  25. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  26. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  27. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  28. data/app/views/active_admin/devise/registrations/new.html.erb +2 -3
  29. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  30. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  31. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  32. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  33. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  34. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  35. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  36. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  37. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  38. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  39. data/config/locales/ar.yml +3 -2
  40. data/config/locales/bg.yml +1 -1
  41. data/config/locales/bs.yml +1 -0
  42. data/config/locales/ca.yml +1 -1
  43. data/config/locales/cs.yml +1 -0
  44. data/config/locales/da.yml +1 -0
  45. data/config/locales/de-CH.yml +1 -0
  46. data/config/locales/de.yml +29 -0
  47. data/config/locales/el.yml +1 -0
  48. data/config/locales/en-CA.yml +1 -0
  49. data/config/locales/en-GB.yml +1 -0
  50. data/config/locales/en.yml +21 -1
  51. data/config/locales/eo.yml +145 -0
  52. data/config/locales/es-MX.yml +1 -0
  53. data/config/locales/es.yml +21 -1
  54. data/config/locales/fa.yml +1 -0
  55. data/config/locales/fi.yml +2 -1
  56. data/config/locales/fr.yml +2 -1
  57. data/config/locales/he.yml +1 -1
  58. data/config/locales/hr.yml +1 -0
  59. data/config/locales/hu.yml +5 -0
  60. data/config/locales/id.yml +1 -0
  61. data/config/locales/it.yml +13 -3
  62. data/config/locales/ja.yml +6 -0
  63. data/config/locales/ko.yml +1 -0
  64. data/config/locales/lt.yml +3 -2
  65. data/config/locales/lv.yml +1 -0
  66. data/config/locales/mk.yml +134 -0
  67. data/config/locales/nb.yml +16 -5
  68. data/config/locales/nl.yml +12 -0
  69. data/config/locales/pl.yml +72 -3
  70. data/config/locales/pt-BR.yml +9 -0
  71. data/config/locales/pt-PT.yml +1 -0
  72. data/config/locales/ro.yml +1 -0
  73. data/config/locales/ru.yml +3 -0
  74. data/config/locales/sk.yml +60 -0
  75. data/config/locales/sv-SE.yml +3 -0
  76. data/config/locales/tr.yml +10 -0
  77. data/config/locales/uk.yml +3 -0
  78. data/config/locales/vi.yml +48 -6
  79. data/config/locales/zh-CN.yml +34 -5
  80. data/config/locales/zh-TW.yml +1 -0
  81. data/docs/.gitignore +1 -0
  82. data/docs/0-installation.md +2 -2
  83. data/docs/1-general-configuration.md +16 -1
  84. data/docs/10-custom-pages.md +14 -0
  85. data/docs/12-arbre-components.md +41 -1
  86. data/docs/13-authorization-adapter.md +41 -22
  87. data/docs/2-resource-customization.md +10 -5
  88. data/docs/3-index-pages/custom-index.md +1 -1
  89. data/docs/3-index-pages/index-as-blog.md +1 -1
  90. data/docs/3-index-pages/index-as-table.md +12 -5
  91. data/docs/3-index-pages.md +17 -0
  92. data/docs/5-forms.md +16 -2
  93. data/docs/8-custom-actions.md +11 -0
  94. data/docs/CNAME +1 -1
  95. data/docs/Gemfile +2 -1
  96. data/docs/Gemfile.lock +248 -0
  97. data/docs/_config.yml +3 -1
  98. data/docs/_includes/toc.html +1 -1
  99. data/docs/_includes/top-menu.html +9 -1
  100. data/docs/documentation.md +1 -1
  101. data/docs/images/tidelift.svg +14 -0
  102. data/docs/index.html +109 -8
  103. data/docs/stylesheets/main.css +55 -2
  104. data/lib/active_admin/abstract_view_factory.rb +13 -51
  105. data/lib/active_admin/application.rb +52 -159
  106. data/lib/active_admin/application_settings.rb +42 -0
  107. data/lib/active_admin/asset_registration.rb +0 -8
  108. data/lib/active_admin/base_controller/authorization.rb +4 -6
  109. data/lib/active_admin/base_controller.rb +6 -6
  110. data/lib/active_admin/batch_actions/controller.rb +2 -2
  111. data/lib/active_admin/batch_actions/resource_extension.rb +9 -5
  112. data/lib/active_admin/callbacks.rb +1 -1
  113. data/lib/active_admin/controller_action.rb +2 -1
  114. data/lib/active_admin/csv_builder.rb +10 -7
  115. data/lib/active_admin/dependency.rb +3 -67
  116. data/lib/active_admin/deprecation.rb +0 -25
  117. data/lib/active_admin/dsl.rb +1 -8
  118. data/lib/active_admin/dynamic_setting.rb +38 -0
  119. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  120. data/lib/active_admin/engine.rb +5 -0
  121. data/lib/active_admin/error.rb +4 -2
  122. data/lib/active_admin/filters/active_filter.rb +49 -12
  123. data/lib/active_admin/filters/active_sidebar.rb +6 -2
  124. data/lib/active_admin/filters/forms.rb +7 -4
  125. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  126. data/lib/active_admin/filters/resource_extension.rb +28 -4
  127. data/lib/active_admin/form_builder.rb +98 -63
  128. data/lib/active_admin/generators/boilerplate.rb +12 -4
  129. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  130. data/lib/active_admin/inputs/datepicker_input.rb +8 -1
  131. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  132. data/lib/active_admin/inputs/filters/select_input.rb +5 -1
  133. data/lib/active_admin/menu.rb +2 -8
  134. data/lib/active_admin/menu_item.rb +4 -32
  135. data/lib/active_admin/namespace.rb +20 -8
  136. data/lib/active_admin/namespace_settings.rb +123 -0
  137. data/lib/active_admin/order_clause.rb +2 -2
  138. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  139. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +17 -7
  140. data/lib/active_admin/orm/active_record/comments.rb +15 -4
  141. data/lib/active_admin/page_dsl.rb +1 -1
  142. data/lib/active_admin/page_presenter.rb +2 -1
  143. data/lib/active_admin/pundit_adapter.rb +18 -5
  144. data/lib/active_admin/resource/action_items.rb +7 -2
  145. data/lib/active_admin/resource/attributes.rb +7 -4
  146. data/lib/active_admin/resource/belongs_to.rb +6 -1
  147. data/lib/active_admin/resource/menu.rb +3 -3
  148. data/lib/active_admin/resource/model.rb +15 -0
  149. data/lib/active_admin/resource/naming.rb +3 -3
  150. data/lib/active_admin/resource/routes.rb +20 -7
  151. data/lib/active_admin/resource/scopes.rb +3 -3
  152. data/lib/active_admin/resource/sidebars.rb +1 -1
  153. data/lib/active_admin/resource.rb +17 -3
  154. data/lib/active_admin/resource_collection.rb +2 -2
  155. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  156. data/lib/active_admin/resource_controller/data_access.rb +5 -1
  157. data/lib/active_admin/resource_controller/decorators.rb +5 -5
  158. data/lib/active_admin/resource_controller/polymorphic_routes.rb +36 -0
  159. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  160. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  161. data/lib/active_admin/resource_controller.rb +2 -0
  162. data/lib/active_admin/resource_dsl.rb +7 -3
  163. data/lib/active_admin/router.rb +90 -84
  164. data/lib/active_admin/scope.rb +16 -8
  165. data/lib/active_admin/settings_node.rb +19 -0
  166. data/lib/active_admin/sidebar_section.rb +3 -1
  167. data/lib/active_admin/version.rb +1 -1
  168. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +2 -2
  169. data/lib/active_admin/view_helpers/display_helper.rb +13 -4
  170. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  171. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
  172. data/lib/active_admin/view_helpers.rb +1 -1
  173. data/lib/active_admin/views/components/active_admin_form.rb +9 -4
  174. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  175. data/lib/active_admin/views/components/menu.rb +32 -0
  176. data/lib/active_admin/views/components/menu_item.rb +58 -0
  177. data/lib/active_admin/views/components/paginated_collection.rb +3 -3
  178. data/lib/active_admin/views/components/scopes.rb +11 -4
  179. data/lib/active_admin/views/components/sidebar.rb +13 -0
  180. data/lib/active_admin/views/components/site_title.rb +5 -6
  181. data/lib/active_admin/views/components/status_tag.rb +6 -19
  182. data/lib/active_admin/views/components/table_for.rb +3 -12
  183. data/lib/active_admin/views/components/tabs.rb +15 -3
  184. data/lib/active_admin/views/footer.rb +3 -7
  185. data/lib/active_admin/views/header.rb +3 -15
  186. data/lib/active_admin/views/index_as_blog.rb +1 -1
  187. data/lib/active_admin/views/index_as_grid.rb +25 -25
  188. data/lib/active_admin/views/index_as_table.rb +18 -10
  189. data/lib/active_admin/views/pages/base.rb +30 -53
  190. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  191. data/lib/active_admin/views.rb +1 -1
  192. data/lib/active_admin.rb +10 -4
  193. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  194. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  195. data/lib/generators/active_admin/install/install_generator.rb +7 -3
  196. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +38 -3
  197. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  198. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  199. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  200. data/lib/generators/active_admin/resource/resource_generator.rb +2 -2
  201. data/lib/generators/active_admin/resource/templates/admin.rb.erb +40 -37
  202. data/lib/ransack_ext.rb +3 -3
  203. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  204. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  205. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  206. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  207. metadata +127 -523
  208. data/.github/ISSUE_TEMPLATE.md +0 -20
  209. data/.gitignore +0 -49
  210. data/.mdlrc +0 -1
  211. data/.rubocop.yml +0 -76
  212. data/.simplecov +0 -13
  213. data/.travis.yml +0 -51
  214. data/.yardopts +0 -7
  215. data/Gemfile +0 -58
  216. data/Rakefile +0 -54
  217. data/activeadmin.gemspec +0 -32
  218. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  219. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  220. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  221. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  222. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  223. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  224. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  225. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  226. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  227. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  228. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  229. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  230. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  231. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  232. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  233. data/codecov.yml +0 -25
  234. data/config/i18n-tasks.yml +0 -26
  235. data/config/mdl_style.rb +0 -9
  236. data/cucumber.yml +0 -3
  237. data/features/action_item.feature +0 -73
  238. data/features/authorization.feature +0 -64
  239. data/features/authorization_cancan.feature +0 -52
  240. data/features/authorization_pundit.feature +0 -37
  241. data/features/belongs_to.feature +0 -124
  242. data/features/breadcrumb.feature +0 -75
  243. data/features/comments/commenting.feature +0 -178
  244. data/features/comments/viewing_index.feature +0 -19
  245. data/features/create_another.feature +0 -55
  246. data/features/dashboard.feature +0 -16
  247. data/features/decorators.feature +0 -43
  248. data/features/development_reloading.feature +0 -28
  249. data/features/edit_page.feature +0 -116
  250. data/features/favicon.feature +0 -20
  251. data/features/first_boot.feature +0 -16
  252. data/features/footer.feature +0 -28
  253. data/features/global_navigation.feature +0 -29
  254. data/features/i18n.feature +0 -55
  255. data/features/index/batch_actions.feature +0 -218
  256. data/features/index/filters.feature +0 -239
  257. data/features/index/format_as_csv.feature +0 -220
  258. data/features/index/formats.feature +0 -88
  259. data/features/index/index_as_block.feature +0 -15
  260. data/features/index/index_as_blog.feature +0 -69
  261. data/features/index/index_as_grid.feature +0 -45
  262. data/features/index/index_as_table.feature +0 -291
  263. data/features/index/index_blank_slate.feature +0 -83
  264. data/features/index/index_parameters.feature +0 -75
  265. data/features/index/index_scope_to.feature +0 -56
  266. data/features/index/index_scopes.feature +0 -285
  267. data/features/index/page_title.feature +0 -41
  268. data/features/index/pagination.feature +0 -63
  269. data/features/index/switch_index_view.feature +0 -73
  270. data/features/menu.feature +0 -72
  271. data/features/meta_tags.feature +0 -21
  272. data/features/new_page.feature +0 -107
  273. data/features/registering_assets.feature +0 -38
  274. data/features/registering_pages.feature +0 -237
  275. data/features/registering_resources.feature +0 -33
  276. data/features/renamed_resource.feature +0 -30
  277. data/features/root_to.feature +0 -17
  278. data/features/show/attributes_table_title.feature +0 -54
  279. data/features/show/columns.feature +0 -40
  280. data/features/show/default_content.feature +0 -44
  281. data/features/show/page_title.feature +0 -58
  282. data/features/show/tabs.feature +0 -33
  283. data/features/sidebar_sections.feature +0 -210
  284. data/features/site_title.feature +0 -47
  285. data/features/specifying_actions.feature +0 -118
  286. data/features/step_definitions/action_item_steps.rb +0 -7
  287. data/features/step_definitions/action_link_steps.rb +0 -19
  288. data/features/step_definitions/additional_web_steps.rb +0 -81
  289. data/features/step_definitions/asset_steps.rb +0 -15
  290. data/features/step_definitions/attribute_steps.rb +0 -18
  291. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  292. data/features/step_definitions/batch_action_steps.rb +0 -81
  293. data/features/step_definitions/blog_steps.rb +0 -3
  294. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  295. data/features/step_definitions/column_steps.rb +0 -8
  296. data/features/step_definitions/comment_steps.rb +0 -32
  297. data/features/step_definitions/configuration_steps.rb +0 -100
  298. data/features/step_definitions/dashboard_steps.rb +0 -15
  299. data/features/step_definitions/factory_steps.rb +0 -35
  300. data/features/step_definitions/filter_steps.rb +0 -48
  301. data/features/step_definitions/flash_steps.rb +0 -11
  302. data/features/step_definitions/footer_steps.rb +0 -11
  303. data/features/step_definitions/format_steps.rb +0 -56
  304. data/features/step_definitions/i18n_steps.rb +0 -11
  305. data/features/step_definitions/index_scope_steps.rb +0 -29
  306. data/features/step_definitions/index_views_steps.rb +0 -3
  307. data/features/step_definitions/layout_steps.rb +0 -3
  308. data/features/step_definitions/member_link_steps.rb +0 -7
  309. data/features/step_definitions/menu_steps.rb +0 -11
  310. data/features/step_definitions/meta_tag_steps.rb +0 -3
  311. data/features/step_definitions/pagination_steps.rb +0 -15
  312. data/features/step_definitions/sidebar_steps.rb +0 -11
  313. data/features/step_definitions/site_title_steps.rb +0 -17
  314. data/features/step_definitions/tab_steps.rb +0 -8
  315. data/features/step_definitions/table_steps.rb +0 -116
  316. data/features/step_definitions/user_steps.rb +0 -52
  317. data/features/step_definitions/web_steps.rb +0 -86
  318. data/features/sti_resource.feature +0 -65
  319. data/features/strong_parameters.feature +0 -69
  320. data/features/support/env.rb +0 -122
  321. data/features/support/paths.rb +0 -73
  322. data/features/support/regular_env.rb +0 -7
  323. data/features/support/reload_env.rb +0 -7
  324. data/features/support/selectors.rb +0 -45
  325. data/features/users/logging_in.feature +0 -36
  326. data/features/users/logging_out.feature +0 -13
  327. data/features/users/resetting_password.feature +0 -34
  328. data/gemfiles/rails_42.gemfile +0 -10
  329. data/gemfiles/rails_50.gemfile +0 -10
  330. data/gemfiles/rails_51.gemfile +0 -10
  331. data/lib/active_admin/event.rb +0 -24
  332. data/lib/active_admin/helpers/settings.rb +0 -114
  333. data/lib/active_admin/reloader.rb +0 -25
  334. data/lib/bug_report_templates/active_admin_master.rb +0 -113
  335. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  336. data/spec/bug_report_templates_spec.rb +0 -26
  337. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  338. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  339. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  340. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  341. data/spec/javascripts/fixtures/flashes.html +0 -2
  342. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  343. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  344. data/spec/javascripts/support/jasmine.yml +0 -74
  345. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  346. data/spec/rails_helper.rb +0 -59
  347. data/spec/requests/default_namespace_spec.rb +0 -81
  348. data/spec/requests/memory_spec.rb +0 -25
  349. data/spec/requests/stylesheets_spec.rb +0 -18
  350. data/spec/spec_helper.rb +0 -1
  351. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  352. data/spec/support/active_admin_request_helpers.rb +0 -39
  353. data/spec/support/rails_template.rb +0 -150
  354. data/spec/support/rails_template_with_data.rb +0 -327
  355. data/spec/support/templates/admin/stores.rb +0 -7
  356. data/spec/support/templates/en.yml +0 -8
  357. data/spec/support/templates/manifest.js +0 -3
  358. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  359. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  360. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  361. data/spec/support/templates/policies/application_policy.rb +0 -44
  362. data/spec/support/templates/policies/category_policy.rb +0 -7
  363. data/spec/support/templates/policies/post_policy.rb +0 -15
  364. data/spec/support/templates/policies/store_policy.rb +0 -11
  365. data/spec/support/templates/policies/user_policy.rb +0 -11
  366. data/spec/support/templates/post_decorator.rb +0 -10
  367. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  368. data/spec/unit/action_builder_spec.rb +0 -125
  369. data/spec/unit/active_admin_spec.rb +0 -11
  370. data/spec/unit/application_spec.rb +0 -184
  371. data/spec/unit/asset_registration_spec.rb +0 -81
  372. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  373. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  374. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  375. data/spec/unit/auto_link_spec.rb +0 -93
  376. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  377. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  378. data/spec/unit/belongs_to_spec.rb +0 -76
  379. data/spec/unit/cancan_adapter_spec.rb +0 -43
  380. data/spec/unit/comments_spec.rb +0 -176
  381. data/spec/unit/component_spec.rb +0 -18
  382. data/spec/unit/config_shared_examples.rb +0 -59
  383. data/spec/unit/controller_filters_spec.rb +0 -41
  384. data/spec/unit/csv_builder_spec.rb +0 -304
  385. data/spec/unit/dependency_spec.rb +0 -135
  386. data/spec/unit/devise_spec.rb +0 -110
  387. data/spec/unit/dsl_spec.rb +0 -120
  388. data/spec/unit/filters/active_filter_spec.rb +0 -135
  389. data/spec/unit/filters/active_spec.rb +0 -24
  390. data/spec/unit/filters/filter_form_builder_spec.rb +0 -502
  391. data/spec/unit/filters/resource_spec.rb +0 -128
  392. data/spec/unit/form_builder_spec.rb +0 -990
  393. data/spec/unit/generators/install_spec.rb +0 -31
  394. data/spec/unit/helpers/collection_spec.rb +0 -68
  395. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  396. data/spec/unit/helpers/settings_spec.rb +0 -30
  397. data/spec/unit/i18n_spec.rb +0 -29
  398. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  399. data/spec/unit/menu_collection_spec.rb +0 -62
  400. data/spec/unit/menu_item_spec.rb +0 -141
  401. data/spec/unit/menu_spec.rb +0 -71
  402. data/spec/unit/namespace/authorization_spec.rb +0 -27
  403. data/spec/unit/namespace/register_page_spec.rb +0 -99
  404. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  405. data/spec/unit/namespace_spec.rb +0 -124
  406. data/spec/unit/order_clause_spec.rb +0 -81
  407. data/spec/unit/page_controller_spec.rb +0 -5
  408. data/spec/unit/page_spec.rb +0 -128
  409. data/spec/unit/pretty_format_spec.rb +0 -82
  410. data/spec/unit/pundit_adapter_spec.rb +0 -98
  411. data/spec/unit/resource/action_items_spec.rb +0 -69
  412. data/spec/unit/resource/attributes_spec.rb +0 -49
  413. data/spec/unit/resource/includes_spec.rb +0 -21
  414. data/spec/unit/resource/menu_spec.rb +0 -18
  415. data/spec/unit/resource/naming_spec.rb +0 -122
  416. data/spec/unit/resource/ordering_spec.rb +0 -35
  417. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  418. data/spec/unit/resource/pagination_spec.rb +0 -38
  419. data/spec/unit/resource/routes_spec.rb +0 -125
  420. data/spec/unit/resource/scopes_spec.rb +0 -50
  421. data/spec/unit/resource/sidebars_spec.rb +0 -43
  422. data/spec/unit/resource_collection_spec.rb +0 -175
  423. data/spec/unit/resource_controller/data_access_spec.rb +0 -230
  424. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  425. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  426. data/spec/unit/resource_controller_spec.rb +0 -273
  427. data/spec/unit/resource_registration_spec.rb +0 -61
  428. data/spec/unit/resource_spec.rb +0 -320
  429. data/spec/unit/routing_spec.rb +0 -211
  430. data/spec/unit/scope_spec.rb +0 -209
  431. data/spec/unit/settings_spec.rb +0 -117
  432. data/spec/unit/view_factory_spec.rb +0 -19
  433. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -252
  434. data/spec/unit/view_helpers/display_helper_spec.rb +0 -195
  435. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  436. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  437. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  438. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  439. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  440. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  441. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  442. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  443. data/spec/unit/views/components/columns_spec.rb +0 -187
  444. data/spec/unit/views/components/index_list_spec.rb +0 -49
  445. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  446. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  447. data/spec/unit/views/components/panel_spec.rb +0 -58
  448. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  449. data/spec/unit/views/components/site_title_spec.rb +0 -76
  450. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  451. data/spec/unit/views/components/table_for_spec.rb +0 -436
  452. data/spec/unit/views/components/tabs_spec.rb +0 -67
  453. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  454. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  455. data/spec/unit/views/pages/form_spec.rb +0 -54
  456. data/spec/unit/views/pages/index_spec.rb +0 -60
  457. data/spec/unit/views/pages/layout_spec.rb +0 -59
  458. data/spec/unit/views/pages/show_spec.rb +0 -32
  459. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  460. data/tasks/docs.rake +0 -64
  461. data/tasks/lint.rake +0 -21
  462. data/tasks/local.rake +0 -25
  463. data/tasks/parallel_tests.rake +0 -66
  464. data/tasks/test.rake +0 -29
  465. /data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +0 -0
@@ -1,273 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::ResourceController do
4
-
5
- let(:controller) { Admin::PostsController.new }
6
-
7
- describe "callbacks" do
8
- before :all do
9
- application = ::ActiveAdmin::Application.new
10
- namespace = ActiveAdmin::Namespace.new(application, :admin)
11
- namespace.register Post do
12
- after_build :call_after_build
13
- before_save :call_before_save
14
- after_save :call_after_save
15
- before_create :call_before_create
16
- after_create :call_after_create
17
- before_update :call_before_update
18
- after_update :call_after_update
19
- before_destroy :call_before_destroy
20
- after_destroy :call_after_destroy
21
-
22
- controller do
23
- def call_after_build(obj); end
24
- def call_before_save(obj); end
25
- def call_after_save(obj); end
26
- def call_before_create(obj); end
27
- def call_after_create(obj); end
28
- def call_before_update(obj); end
29
- def call_after_update(obj); end
30
- def call_before_destroy(obj); end
31
- def call_after_destroy(obj); end
32
- end
33
- end
34
- end
35
-
36
- describe "performing create" do
37
- let(:resource){ double("Resource", save: true) }
38
-
39
- before do
40
- expect(resource).to receive(:save)
41
- end
42
-
43
- it "should call the before create callback" do
44
- expect(controller).to receive(:call_before_create).with(resource)
45
- controller.send :create_resource, resource
46
- end
47
- it "should call the before save callback" do
48
- expect(controller).to receive(:call_before_save).with(resource)
49
- controller.send :create_resource, resource
50
- end
51
- it "should call the after save callback" do
52
- expect(controller).to receive(:call_after_save).with(resource)
53
- controller.send :create_resource, resource
54
- end
55
- it "should call the after create callback" do
56
- expect(controller).to receive(:call_after_create).with(resource)
57
- controller.send :create_resource, resource
58
- end
59
- end
60
-
61
- describe "performing update" do
62
- let(:resource){ double("Resource", :attributes= => true, save: true) }
63
- let(:attributes){ [{}] }
64
-
65
- before do
66
- expect(resource).to receive(:attributes=).with(attributes[0])
67
- expect(resource).to receive(:save)
68
- end
69
-
70
- it "should call the before update callback" do
71
- expect(controller).to receive(:call_before_update).with(resource)
72
- controller.send :update_resource, resource, attributes
73
- end
74
- it "should call the before save callback" do
75
- expect(controller).to receive(:call_before_save).with(resource)
76
- controller.send :update_resource, resource, attributes
77
- end
78
- it "should call the after save callback" do
79
- expect(controller).to receive(:call_after_save).with(resource)
80
- controller.send :update_resource, resource, attributes
81
- end
82
- it "should call the after create callback" do
83
- expect(controller).to receive(:call_after_update).with(resource)
84
- controller.send :update_resource, resource, attributes
85
- end
86
- end
87
-
88
- describe "performing destroy" do
89
- let(:resource){ double("Resource", destroy: true) }
90
-
91
- before do
92
- expect(resource).to receive(:destroy)
93
- end
94
-
95
- it "should call the before destroy callback" do
96
- expect(controller).to receive(:call_before_destroy).with(resource)
97
- controller.send :destroy_resource, resource
98
- end
99
-
100
- it "should call the after destroy callback" do
101
- expect(controller).to receive(:call_after_destroy).with(resource)
102
- controller.send :destroy_resource, resource
103
- end
104
- end
105
- end
106
- end
107
-
108
- RSpec.describe "A specific resource controller", type: :controller do
109
- before do
110
- load_resources { ActiveAdmin.register Post }
111
-
112
- @controller = Admin::PostsController.new
113
- end
114
-
115
- describe "authenticating the user" do
116
- it "should do nothing when no authentication_method set" do
117
- namespace = controller.class.active_admin_config.namespace
118
- expect(namespace).to receive(:authentication_method).once.and_return(nil)
119
-
120
- controller.send(:authenticate_active_admin_user)
121
- end
122
-
123
- it "should call the authentication_method when set" do
124
- namespace = controller.class.active_admin_config.namespace
125
-
126
- expect(namespace).to receive(:authentication_method).twice.
127
- and_return(:authenticate_admin_user!)
128
-
129
- expect(controller).to receive(:authenticate_admin_user!).and_return(true)
130
-
131
- controller.send(:authenticate_active_admin_user)
132
- end
133
-
134
- end
135
-
136
- describe "retrieving the current user" do
137
- it "should return nil when no current_user_method set" do
138
- namespace = controller.class.active_admin_config.namespace
139
- expect(namespace).to receive(:current_user_method).once.and_return(nil)
140
-
141
- expect(controller.send(:current_active_admin_user)).to eq nil
142
- end
143
-
144
- it "should call the current_user_method when set" do
145
- user = double
146
- namespace = controller.class.active_admin_config.namespace
147
-
148
- expect(namespace).to receive(:current_user_method).twice.
149
- and_return(:current_admin_user)
150
-
151
- expect(controller).to receive(:current_admin_user).and_return(user)
152
-
153
- expect(controller.send(:current_active_admin_user)).to eq user
154
- end
155
- end
156
-
157
- describe 'retrieving the resource' do
158
- let(:post) { Post.new title: "An incledibly unique Post Title" }
159
- let(:http_params){ { id: '1' } }
160
-
161
- before do
162
- allow(Post).to receive(:find).and_return(post)
163
- controller.class_eval { public :resource }
164
- allow(controller).to receive(:params).and_return(ActionController::Parameters.new(http_params))
165
- end
166
-
167
- subject { controller.resource }
168
-
169
- it "returns a Post" do
170
- expect(subject).to be_kind_of(Post)
171
- end
172
-
173
- context 'with a decorator' do
174
- let(:config) { controller.class.active_admin_config }
175
- before { config.decorator_class_name = '::PostDecorator' }
176
- it 'returns a PostDecorator' do
177
- expect(subject).to be_kind_of(PostDecorator)
178
- end
179
-
180
- it 'returns a PostDecorator that wraps the post' do
181
- expect(subject.title).to eq post.title
182
- end
183
- end
184
- end
185
-
186
- describe 'retrieving the resource collection' do
187
- let(:config) { controller.class.active_admin_config }
188
- before do
189
- Post.create!(title: "An incledibly unique Post Title") if Post.count == 0
190
- config.decorator_class_name = nil
191
- request = double 'Request', format: 'application/json'
192
- allow(controller).to receive(:params) { {} }
193
- allow(controller).to receive(:request){ request }
194
- end
195
-
196
- subject { controller.send :collection }
197
-
198
- it {
199
- is_expected.to be_a ActiveRecord::Relation
200
- }
201
-
202
- it "returns a collection of posts" do
203
- expect(subject.first).to be_kind_of(Post)
204
- end
205
-
206
- context 'with a decorator' do
207
- before { config.decorator_class_name = 'PostDecorator' }
208
-
209
- it 'returns a collection decorator using PostDecorator' do
210
- expect(subject).to be_a Draper::CollectionDecorator
211
- expect(subject.decorator_class).to eq PostDecorator
212
- end
213
-
214
- it 'returns a collection decorator that wraps the post' do
215
- expect(subject.first.title).to eq Post.first.title
216
- end
217
- end
218
- end
219
-
220
- describe "performing batch_action" do
221
- let(:batch_action) { ActiveAdmin::BatchAction.new :flag, "Flag", &batch_action_block }
222
- let(:batch_action_block) { proc { } }
223
- let(:params) { ActionController::Parameters.new(http_params) }
224
-
225
- before do
226
- allow(controller.class.active_admin_config).to receive(:batch_actions).and_return([batch_action])
227
- allow(controller).to receive(:params) { params }
228
- end
229
-
230
- describe "when params batch_action matches existing BatchAction" do
231
-
232
- let(:http_params) do
233
- { batch_action: "flag", collection_selection: ["1"] }
234
- end
235
-
236
- it "should call the block with args" do
237
- expect(controller).to receive(:instance_exec).with(["1"], {})
238
- controller.batch_action
239
- end
240
-
241
- it "should call the block in controller scope" do
242
- expect(controller).to receive(:render_in_context).with(controller, nil).and_return({})
243
- controller.batch_action
244
- end
245
- end
246
-
247
- describe "when params batch_action doesn't match a BatchAction" do
248
- let(:http_params) do
249
- { batch_action: "derp", collection_selection: ["1"] }
250
- end
251
-
252
- it "should raise an error" do
253
- expect {
254
- controller.batch_action
255
- }.to raise_error("Couldn't find batch action \"derp\"")
256
- end
257
- end
258
-
259
- describe "when params batch_action is blank" do
260
- let(:http_params) do
261
- { collection_selection: ["1"] }
262
- end
263
-
264
- it "should raise an error" do
265
- expect {
266
- controller.batch_action
267
- }.to raise_error("Couldn't find batch action \"\"")
268
- end
269
- end
270
-
271
- end
272
-
273
- end
@@ -1,61 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe "Registering an object to administer" do
4
- let(:application) { ActiveAdmin::Application.new }
5
-
6
- context "with no configuration" do
7
- let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
8
-
9
- before do
10
- application.namespaces[namespace.name] = namespace
11
- end
12
-
13
- it "should call register on the namespace" do
14
- expect(namespace).to receive(:register)
15
-
16
- application.register Category
17
- end
18
-
19
- it "should dispatch a Resource::RegisterEvent" do
20
- expect(ActiveSupport::Notifications).to receive(:publish).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
21
-
22
- application.register Category
23
- end
24
- end
25
-
26
- context "with a different namespace" do
27
- it "should call register on the namespace" do
28
- namespace = ActiveAdmin::Namespace.new(application, :hello_world)
29
- application.namespaces[namespace.name] = namespace
30
- expect(namespace).to receive(:register)
31
-
32
- application.register Category, namespace: :hello_world
33
- end
34
-
35
- it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
36
- expect(ActiveSupport::Notifications).to receive(:publish).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
37
- expect(ActiveSupport::Notifications).to receive(:publish).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
38
- application.register Category, namespace: :not_yet_created
39
- end
40
- end
41
-
42
- context "with no namespace" do
43
- it "should call register on the root namespace" do
44
- namespace = ActiveAdmin::Namespace.new(application, :root)
45
- application.namespaces[namespace.name] = namespace
46
- expect(namespace).to receive(:register)
47
-
48
- application.register Category, namespace: false
49
- end
50
- end
51
-
52
- context "when being registered multiple times" do
53
- it "should run the dsl in the same config object" do
54
- config_1 = ActiveAdmin.register(Category) { filter :name }
55
- config_2 = ActiveAdmin.register(Category) { filter :id }
56
- expect(config_1).to eq config_2
57
- expect(config_1.filters.size).to eq 2
58
- end
59
- end
60
-
61
- end
@@ -1,320 +0,0 @@
1
- require 'rails_helper'
2
- require File.expand_path('config_shared_examples', File.dirname(__FILE__))
3
-
4
- module ActiveAdmin
5
- RSpec.describe Resource do
6
-
7
- it_should_behave_like "ActiveAdmin::Resource"
8
- before { load_defaults! }
9
-
10
- let(:application){ ActiveAdmin::Application.new }
11
- let(:namespace){ Namespace.new(application, :admin) }
12
-
13
- def config(options = {})
14
- @config ||= Resource.new(namespace, Category, options)
15
- end
16
-
17
- it { respond_to :resource_class }
18
-
19
- describe "#resource_table_name" do
20
- it "should return the resource's table name" do
21
- expect(config.resource_table_name).to eq '"categories"'
22
- end
23
- context "when the :as option is given" do
24
- it "should return the resource's table name" do
25
- expect(config(as: "My Category").resource_table_name).to eq '"categories"'
26
- end
27
- end
28
- end
29
-
30
- describe "#resource_column_names" do
31
- it "should return the resource's column names" do
32
- expect(config.resource_column_names).to eq Category.column_names
33
- end
34
- end
35
-
36
- describe '#decorator_class' do
37
- it 'returns nil by default' do
38
- expect(config.decorator_class).to eq nil
39
- end
40
- context 'when a decorator is defined' do
41
- let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
42
- specify '#decorator_class_name should return PostDecorator' do
43
- expect(resource.decorator_class_name).to eq '::PostDecorator'
44
- end
45
-
46
- it 'returns the decorator class' do
47
- expect(resource.decorator_class).to eq PostDecorator
48
- end
49
- end
50
- end
51
-
52
- describe "controller name" do
53
- it "should return a namespaced controller name" do
54
- expect(config.controller_name).to eq "Admin::CategoriesController"
55
- end
56
- context "when non namespaced controller" do
57
- let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
58
- it "should return a non namespaced controller name" do
59
- expect(config.controller_name).to eq "CategoriesController"
60
- end
61
- end
62
- end
63
-
64
- describe "#include_in_menu?" do
65
- let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
66
- subject{ resource }
67
-
68
- context "when regular resource" do
69
- let(:resource){ namespace.register(Post) }
70
- it { is_expected.to be_include_in_menu }
71
- end
72
-
73
- context "when menu set to false" do
74
- let(:resource){ namespace.register(Post){ menu false } }
75
- it { is_expected.not_to be_include_in_menu }
76
- end
77
- end
78
-
79
- describe "#belongs_to" do
80
-
81
- it "should build a belongs to configuration" do
82
- expect(config.belongs_to_config).to eq nil
83
- config.belongs_to :posts
84
- expect(config.belongs_to_config).to_not eq nil
85
- end
86
-
87
- it "should not set the target menu to the belongs to target" do
88
- expect(config.navigation_menu_name).to eq ActiveAdmin::DEFAULT_MENU
89
- config.belongs_to :posts
90
- expect(config.navigation_menu_name).to eq ActiveAdmin::DEFAULT_MENU
91
- end
92
-
93
- end
94
-
95
- describe "scoping" do
96
- context "when using a block" do
97
- before do
98
- @resource = application.register Category do
99
- scope_to do
100
- "scoped"
101
- end
102
- end
103
- end
104
- it "should call the proc for the begin of association chain" do
105
- begin_of_association_chain = @resource.controller.new.send(:begin_of_association_chain)
106
- expect(begin_of_association_chain).to eq "scoped"
107
- end
108
- end
109
-
110
- context "when using a symbol" do
111
- before do
112
- @resource = application.register Category do
113
- scope_to :current_user
114
- end
115
- end
116
- it "should call the method for the begin of association chain" do
117
- controller = @resource.controller.new
118
- expect(controller).to receive(:current_user).and_return(true)
119
- begin_of_association_chain = controller.send(:begin_of_association_chain)
120
- expect(begin_of_association_chain).to eq true
121
- end
122
- end
123
-
124
- describe "getting the method for the association chain" do
125
- context "when a simple registration" do
126
- before do
127
- @resource = application.register Category do
128
- scope_to :current_user
129
- end
130
- end
131
- it "should return the pluralized collection name" do
132
- expect(@resource.controller.new.send(:method_for_association_chain)).to eq :categories
133
- end
134
- end
135
- context "when passing in the method as an option" do
136
- before do
137
- @resource = application.register Category do
138
- scope_to :current_user, association_method: :blog_categories
139
- end
140
- end
141
- it "should return the method from the option" do
142
- expect(@resource.controller.new.send(:method_for_association_chain)).to eq :blog_categories
143
- end
144
- end
145
- end
146
- end
147
-
148
- describe "sort order" do
149
- class MockResource
150
- end
151
-
152
- context "when resource class responds to primary_key" do
153
- it "should sort by primary key desc by default" do
154
- expect(MockResource).to receive(:primary_key).and_return("pk")
155
- config = Resource.new(namespace, MockResource)
156
- expect(config.sort_order).to eq "pk_desc"
157
- end
158
- end
159
-
160
- context "when resource class does not respond to primary_key" do
161
- it "should default to id" do
162
- config = Resource.new(namespace, MockResource)
163
- expect(config.sort_order).to eq "id_desc"
164
- end
165
- end
166
-
167
- it "should be set-able" do
168
- config.sort_order = "task_id_desc"
169
- expect(config.sort_order).to eq "task_id_desc"
170
- end
171
-
172
- end
173
-
174
- describe "adding a scope" do
175
-
176
- it "should add a scope" do
177
- config.scope :published
178
- expect(config.scopes.first).to be_a(ActiveAdmin::Scope)
179
- expect(config.scopes.first.name).to eq "Published"
180
- expect(config.scopes.first.show_count).to eq true
181
- end
182
-
183
- context 'when show_count disabled' do
184
- it "should add a scope show_count = false" do
185
- namespace.scopes_show_count = false
186
- config.scope :published
187
- expect(config.scopes.first.show_count).to eq false
188
- end
189
- end
190
-
191
- it "should retrive a scope by its id" do
192
- config.scope :published
193
- expect(config.get_scope_by_id(:published).name).to eq "Published"
194
- end
195
-
196
- it "should retrieve the default scope by proc" do
197
- config.scope :published, default: proc{ true }
198
- config.scope :all
199
- expect(config.default_scope.name).to eq "Published"
200
- end
201
-
202
- end
203
-
204
- describe "#csv_builder" do
205
- context "when no csv builder set" do
206
- it "should return a default column builder with id and content columns" do
207
- expect(config.csv_builder.exec_columns.size).to eq @config.content_columns.size + 1
208
- end
209
- end
210
-
211
- context "when csv builder set" do
212
- it "shuld return the csv_builder we set" do
213
- csv_builder = CSVBuilder.new
214
- config.csv_builder = csv_builder
215
- expect(config.csv_builder).to eq csv_builder
216
- end
217
- end
218
- end
219
-
220
- describe "#breadcrumb" do
221
- subject { config.breadcrumb }
222
-
223
- context "when no breadcrumb is set" do
224
- it { is_expected.to eq(namespace.breadcrumb) }
225
- end
226
-
227
- context "when breadcrumb is set" do
228
- context "when set to true" do
229
- before { config.breadcrumb = true }
230
- it { is_expected.to eq true }
231
- end
232
-
233
- context "when set to false" do
234
- before { config.breadcrumb = false }
235
- it { is_expected.to eq false }
236
- end
237
- end
238
- end
239
-
240
- describe '#find_resource' do
241
- let(:resource) { namespace.register(Post) }
242
- let(:post) { double }
243
- before do
244
- allow(Post).to receive(:find_by).with("id" => "12345") { post }
245
- allow(Post).to receive(:find_by).with("id" => "54321") { nil }
246
- end
247
-
248
- it 'can find the resource' do
249
- expect(resource.find_resource('12345')).to eq post
250
- end
251
-
252
- context 'with a decorator' do
253
- let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
254
- it 'decorates the resource' do
255
- expect(resource.find_resource('12345')).to eq PostDecorator.new(post)
256
- end
257
-
258
- it 'does not decorate a not found resource' do
259
- expect(resource.find_resource('54321')).to equal nil
260
- end
261
- end
262
-
263
- context 'when using a nonstandard primary key' do
264
- let(:different_post) { double }
265
- before do
266
- allow(Post).to receive(:primary_key).and_return 'something_else'
267
- allow(Post).to receive(:find_by).
268
- with("something_else" => "55555") { different_post }
269
- end
270
-
271
- it 'can find the post by the custom primary key' do
272
- expect(resource.find_resource('55555')).to eq different_post
273
- end
274
- end
275
-
276
- context 'when using controller finder' do
277
- let(:resource) do
278
- namespace.register(Post) do
279
- controller do
280
- defaults finder: :find_by_title!
281
- end
282
- end
283
- end
284
-
285
- it 'can find the post by controller finder' do
286
- allow(Post).to receive(:find_by_title!).with('title-name').and_return(post)
287
-
288
- expect(resource.find_resource('title-name')).to eq post
289
- end
290
- end
291
- end
292
-
293
- describe "delegation" do
294
- let(:controller) {
295
- Class.new do
296
- def method_missing(name, *args, &block)
297
- "called #{name}"
298
- end
299
- end.new
300
- }
301
- let(:resource) { ActiveAdmin::ResourceDSL.new(double) }
302
-
303
- before do
304
- expect(resource).to receive(:controller).and_return(controller)
305
- end
306
-
307
- context "actions" do
308
- [
309
- :before_action, :skip_before_action,
310
- :after_action, :skip_after_action,
311
- :around_action, :skip_action
312
- ].each do |method|
313
- it "delegates #{method}" do
314
- expect(resource.send(method)).to eq "called #{method}"
315
- end
316
- end
317
- end
318
- end
319
- end
320
- end