activeadmin 1.3.0 → 2.0.0.rc1

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 (423) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +307 -123
  3. data/CODE_OF_CONDUCT.md +64 -12
  4. data/CONTRIBUTING.md +90 -46
  5. data/README.md +66 -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 +55 -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/layouts/active_admin_logged_out.html.erb +2 -2
  33. data/config/locales/bg.yml +0 -1
  34. data/config/locales/de.yml +10 -0
  35. data/config/locales/en.yml +19 -1
  36. data/config/locales/es.yml +20 -1
  37. data/config/locales/fi.yml +1 -1
  38. data/config/locales/he.yml +0 -1
  39. data/config/locales/hu.yml +4 -0
  40. data/config/locales/it.yml +4 -0
  41. data/config/locales/lt.yml +2 -2
  42. data/config/locales/nb.yml +15 -5
  43. data/config/locales/nl.yml +11 -0
  44. data/config/locales/pl.yml +71 -3
  45. data/config/locales/ru.yml +2 -0
  46. data/config/locales/tr.yml +9 -0
  47. data/config/locales/uk.yml +2 -0
  48. data/config/locales/zh-CN.yml +33 -5
  49. data/docs/.gitignore +1 -0
  50. data/docs/0-installation.md +2 -2
  51. data/docs/1-general-configuration.md +16 -1
  52. data/docs/10-custom-pages.md +14 -0
  53. data/docs/12-arbre-components.md +28 -1
  54. data/docs/13-authorization-adapter.md +40 -21
  55. data/docs/2-resource-customization.md +8 -3
  56. data/docs/3-index-pages/custom-index.md +1 -1
  57. data/docs/3-index-pages/index-as-blog.md +1 -1
  58. data/docs/3-index-pages/index-as-table.md +5 -5
  59. data/docs/3-index-pages.md +17 -0
  60. data/docs/5-forms.md +16 -2
  61. data/docs/8-custom-actions.md +11 -0
  62. data/docs/CNAME +1 -1
  63. data/docs/Gemfile +2 -0
  64. data/docs/Gemfile.lock +249 -0
  65. data/docs/_config.yml +1 -1
  66. data/docs/_includes/toc.html +1 -1
  67. data/docs/_includes/top-menu.html +9 -1
  68. data/docs/documentation.md +1 -1
  69. data/docs/images/tidelift.svg +14 -0
  70. data/docs/index.html +2 -2
  71. data/docs/stylesheets/main.css +26 -2
  72. data/lib/active_admin/abstract_view_factory.rb +13 -51
  73. data/lib/active_admin/application.rb +49 -155
  74. data/lib/active_admin/application_settings.rb +42 -0
  75. data/lib/active_admin/asset_registration.rb +0 -8
  76. data/lib/active_admin/base_controller/authorization.rb +3 -6
  77. data/lib/active_admin/base_controller.rb +6 -6
  78. data/lib/active_admin/batch_actions/controller.rb +2 -2
  79. data/lib/active_admin/batch_actions/resource_extension.rb +4 -4
  80. data/lib/active_admin/callbacks.rb +1 -1
  81. data/lib/active_admin/csv_builder.rb +1 -1
  82. data/lib/active_admin/dependency.rb +1 -69
  83. data/lib/active_admin/deprecation.rb +0 -25
  84. data/lib/active_admin/dsl.rb +1 -8
  85. data/lib/active_admin/dynamic_setting.rb +38 -0
  86. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  87. data/lib/active_admin/engine.rb +5 -0
  88. data/lib/active_admin/error.rb +1 -1
  89. data/lib/active_admin/filters/active_filter.rb +4 -2
  90. data/lib/active_admin/filters/active_sidebar.rb +5 -1
  91. data/lib/active_admin/filters/forms.rb +7 -4
  92. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  93. data/lib/active_admin/filters/resource_extension.rb +4 -4
  94. data/lib/active_admin/form_builder.rb +97 -62
  95. data/lib/active_admin/generators/boilerplate.rb +1 -1
  96. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  97. data/lib/active_admin/inputs/datepicker_input.rb +8 -1
  98. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  99. data/lib/active_admin/menu.rb +2 -8
  100. data/lib/active_admin/menu_item.rb +4 -32
  101. data/lib/active_admin/namespace.rb +20 -8
  102. data/lib/active_admin/namespace_settings.rb +110 -0
  103. data/lib/active_admin/orm/active_record/comments/comment.rb +2 -2
  104. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +10 -5
  105. data/lib/active_admin/orm/active_record/comments.rb +15 -4
  106. data/lib/active_admin/page_dsl.rb +1 -1
  107. data/lib/active_admin/pundit_adapter.rb +13 -4
  108. data/lib/active_admin/resource/action_items.rb +7 -2
  109. data/lib/active_admin/resource/attributes.rb +7 -4
  110. data/lib/active_admin/resource/menu.rb +3 -3
  111. data/lib/active_admin/resource/naming.rb +3 -3
  112. data/lib/active_admin/resource/routes.rb +9 -4
  113. data/lib/active_admin/resource/scopes.rb +3 -3
  114. data/lib/active_admin/resource/sidebars.rb +1 -1
  115. data/lib/active_admin/resource.rb +2 -2
  116. data/lib/active_admin/resource_collection.rb +2 -2
  117. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  118. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  119. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  120. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  121. data/lib/active_admin/resource_dsl.rb +5 -3
  122. data/lib/active_admin/router.rb +89 -84
  123. data/lib/active_admin/scope.rb +9 -5
  124. data/lib/active_admin/settings_node.rb +19 -0
  125. data/lib/active_admin/version.rb +1 -1
  126. data/lib/active_admin/view_helpers/display_helper.rb +10 -2
  127. data/lib/active_admin/view_helpers/download_format_links_helper.rb +1 -0
  128. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +3 -0
  129. data/lib/active_admin/view_helpers.rb +1 -1
  130. data/lib/active_admin/views/components/active_admin_form.rb +9 -4
  131. data/lib/active_admin/views/components/attributes_table.rb +3 -3
  132. data/lib/active_admin/views/components/menu.rb +32 -0
  133. data/lib/active_admin/views/components/menu_item.rb +58 -0
  134. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  135. data/lib/active_admin/views/components/scopes.rb +11 -4
  136. data/lib/active_admin/views/components/sidebar.rb +13 -0
  137. data/lib/active_admin/views/components/sidebar_section.rb +0 -3
  138. data/lib/active_admin/views/components/site_title.rb +5 -6
  139. data/lib/active_admin/views/components/status_tag.rb +1 -18
  140. data/lib/active_admin/views/components/table_for.rb +3 -12
  141. data/lib/active_admin/views/components/tabs.rb +15 -3
  142. data/lib/active_admin/views/footer.rb +3 -7
  143. data/lib/active_admin/views/header.rb +3 -15
  144. data/lib/active_admin/views/index_as_blog.rb +1 -1
  145. data/lib/active_admin/views/index_as_grid.rb +25 -25
  146. data/lib/active_admin/views/index_as_table.rb +11 -10
  147. data/lib/active_admin/views/pages/base.rb +30 -53
  148. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  149. data/lib/active_admin/views.rb +1 -1
  150. data/lib/active_admin.rb +9 -4
  151. data/lib/generators/active_admin/assets/assets_generator.rb +2 -2
  152. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  153. data/lib/generators/active_admin/install/install_generator.rb +6 -2
  154. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -1
  155. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  156. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +1 -15
  157. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  158. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  159. data/lib/ransack_ext.rb +3 -3
  160. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  161. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  162. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  163. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +274 -283
  164. metadata +120 -523
  165. data/.github/ISSUE_TEMPLATE.md +0 -20
  166. data/.gitignore +0 -49
  167. data/.mdlrc +0 -1
  168. data/.rubocop.yml +0 -76
  169. data/.simplecov +0 -13
  170. data/.travis.yml +0 -51
  171. data/.yardopts +0 -7
  172. data/Gemfile +0 -58
  173. data/Rakefile +0 -54
  174. data/activeadmin.gemspec +0 -32
  175. data/app/assets/javascripts/active_admin/base.js.coffee +0 -13
  176. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  177. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  178. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +0 -11
  179. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +0 -14
  180. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +0 -26
  181. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +0 -7
  182. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -42
  183. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -46
  184. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -104
  185. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  186. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  187. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -45
  188. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -46
  189. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -22
  190. data/codecov.yml +0 -25
  191. data/config/i18n-tasks.yml +0 -26
  192. data/config/mdl_style.rb +0 -9
  193. data/cucumber.yml +0 -3
  194. data/features/action_item.feature +0 -73
  195. data/features/authorization.feature +0 -64
  196. data/features/authorization_cancan.feature +0 -52
  197. data/features/authorization_pundit.feature +0 -37
  198. data/features/belongs_to.feature +0 -124
  199. data/features/breadcrumb.feature +0 -75
  200. data/features/comments/commenting.feature +0 -178
  201. data/features/comments/viewing_index.feature +0 -19
  202. data/features/create_another.feature +0 -55
  203. data/features/dashboard.feature +0 -16
  204. data/features/decorators.feature +0 -43
  205. data/features/development_reloading.feature +0 -28
  206. data/features/edit_page.feature +0 -116
  207. data/features/favicon.feature +0 -20
  208. data/features/first_boot.feature +0 -16
  209. data/features/footer.feature +0 -28
  210. data/features/global_navigation.feature +0 -29
  211. data/features/i18n.feature +0 -55
  212. data/features/index/batch_actions.feature +0 -218
  213. data/features/index/filters.feature +0 -250
  214. data/features/index/format_as_csv.feature +0 -220
  215. data/features/index/formats.feature +0 -88
  216. data/features/index/index_as_block.feature +0 -15
  217. data/features/index/index_as_blog.feature +0 -69
  218. data/features/index/index_as_grid.feature +0 -45
  219. data/features/index/index_as_table.feature +0 -291
  220. data/features/index/index_blank_slate.feature +0 -83
  221. data/features/index/index_parameters.feature +0 -75
  222. data/features/index/index_scope_to.feature +0 -56
  223. data/features/index/index_scopes.feature +0 -285
  224. data/features/index/page_title.feature +0 -41
  225. data/features/index/pagination.feature +0 -63
  226. data/features/index/switch_index_view.feature +0 -73
  227. data/features/menu.feature +0 -72
  228. data/features/meta_tags.feature +0 -21
  229. data/features/new_page.feature +0 -136
  230. data/features/registering_assets.feature +0 -38
  231. data/features/registering_pages.feature +0 -237
  232. data/features/registering_resources.feature +0 -33
  233. data/features/renamed_resource.feature +0 -30
  234. data/features/root_to.feature +0 -17
  235. data/features/show/attributes_table_title.feature +0 -54
  236. data/features/show/columns.feature +0 -40
  237. data/features/show/default_content.feature +0 -44
  238. data/features/show/page_title.feature +0 -58
  239. data/features/show/tabs.feature +0 -33
  240. data/features/sidebar_sections.feature +0 -210
  241. data/features/site_title.feature +0 -47
  242. data/features/specifying_actions.feature +0 -118
  243. data/features/step_definitions/action_item_steps.rb +0 -7
  244. data/features/step_definitions/action_link_steps.rb +0 -19
  245. data/features/step_definitions/additional_web_steps.rb +0 -81
  246. data/features/step_definitions/asset_steps.rb +0 -15
  247. data/features/step_definitions/attribute_steps.rb +0 -18
  248. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  249. data/features/step_definitions/batch_action_steps.rb +0 -81
  250. data/features/step_definitions/blog_steps.rb +0 -3
  251. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  252. data/features/step_definitions/column_steps.rb +0 -8
  253. data/features/step_definitions/comment_steps.rb +0 -32
  254. data/features/step_definitions/configuration_steps.rb +0 -100
  255. data/features/step_definitions/dashboard_steps.rb +0 -15
  256. data/features/step_definitions/factory_steps.rb +0 -35
  257. data/features/step_definitions/filter_steps.rb +0 -47
  258. data/features/step_definitions/flash_steps.rb +0 -11
  259. data/features/step_definitions/footer_steps.rb +0 -11
  260. data/features/step_definitions/format_steps.rb +0 -56
  261. data/features/step_definitions/i18n_steps.rb +0 -11
  262. data/features/step_definitions/index_scope_steps.rb +0 -29
  263. data/features/step_definitions/index_views_steps.rb +0 -3
  264. data/features/step_definitions/layout_steps.rb +0 -3
  265. data/features/step_definitions/member_link_steps.rb +0 -7
  266. data/features/step_definitions/menu_steps.rb +0 -11
  267. data/features/step_definitions/meta_tag_steps.rb +0 -3
  268. data/features/step_definitions/pagination_steps.rb +0 -15
  269. data/features/step_definitions/sidebar_steps.rb +0 -11
  270. data/features/step_definitions/site_title_steps.rb +0 -17
  271. data/features/step_definitions/tab_steps.rb +0 -8
  272. data/features/step_definitions/table_steps.rb +0 -116
  273. data/features/step_definitions/user_steps.rb +0 -52
  274. data/features/step_definitions/web_steps.rb +0 -86
  275. data/features/sti_resource.feature +0 -65
  276. data/features/strong_parameters.feature +0 -69
  277. data/features/support/env.rb +0 -122
  278. data/features/support/paths.rb +0 -73
  279. data/features/support/regular_env.rb +0 -7
  280. data/features/support/reload_env.rb +0 -7
  281. data/features/support/selectors.rb +0 -45
  282. data/features/users/logging_in.feature +0 -36
  283. data/features/users/logging_out.feature +0 -13
  284. data/features/users/resetting_password.feature +0 -34
  285. data/gemfiles/rails_42.gemfile +0 -10
  286. data/gemfiles/rails_50.gemfile +0 -10
  287. data/gemfiles/rails_51.gemfile +0 -10
  288. data/gemfiles/rails_52.gemfile +0 -11
  289. data/lib/active_admin/event.rb +0 -24
  290. data/lib/active_admin/helpers/output_safety_helper.rb +0 -35
  291. data/lib/active_admin/helpers/settings.rb +0 -114
  292. data/lib/bug_report_templates/active_admin_master.rb +0 -112
  293. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  294. data/spec/bug_report_templates_spec.rb +0 -26
  295. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  296. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  297. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  298. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  299. data/spec/javascripts/fixtures/flashes.html +0 -2
  300. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  301. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  302. data/spec/javascripts/support/jasmine.yml +0 -74
  303. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  304. data/spec/rails_helper.rb +0 -59
  305. data/spec/requests/default_namespace_spec.rb +0 -81
  306. data/spec/requests/memory_spec.rb +0 -25
  307. data/spec/requests/stylesheets_spec.rb +0 -18
  308. data/spec/spec_helper.rb +0 -1
  309. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  310. data/spec/support/active_admin_request_helpers.rb +0 -39
  311. data/spec/support/rails_template.rb +0 -153
  312. data/spec/support/rails_template_with_data.rb +0 -327
  313. data/spec/support/templates/admin/stores.rb +0 -7
  314. data/spec/support/templates/en.yml +0 -8
  315. data/spec/support/templates/manifest.js +0 -3
  316. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  317. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  318. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  319. data/spec/support/templates/policies/application_policy.rb +0 -44
  320. data/spec/support/templates/policies/category_policy.rb +0 -7
  321. data/spec/support/templates/policies/post_policy.rb +0 -15
  322. data/spec/support/templates/policies/store_policy.rb +0 -11
  323. data/spec/support/templates/policies/user_policy.rb +0 -11
  324. data/spec/support/templates/post_decorator.rb +0 -24
  325. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  326. data/spec/unit/action_builder_spec.rb +0 -158
  327. data/spec/unit/active_admin_spec.rb +0 -11
  328. data/spec/unit/application_spec.rb +0 -184
  329. data/spec/unit/asset_registration_spec.rb +0 -81
  330. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  331. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  332. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  333. data/spec/unit/auto_link_spec.rb +0 -93
  334. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  335. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  336. data/spec/unit/belongs_to_spec.rb +0 -76
  337. data/spec/unit/cancan_adapter_spec.rb +0 -43
  338. data/spec/unit/comments_spec.rb +0 -176
  339. data/spec/unit/component_spec.rb +0 -18
  340. data/spec/unit/config_shared_examples.rb +0 -59
  341. data/spec/unit/controller_filters_spec.rb +0 -41
  342. data/spec/unit/csv_builder_spec.rb +0 -313
  343. data/spec/unit/dependency_spec.rb +0 -135
  344. data/spec/unit/devise_spec.rb +0 -110
  345. data/spec/unit/dsl_spec.rb +0 -120
  346. data/spec/unit/filters/active_filter_spec.rb +0 -189
  347. data/spec/unit/filters/active_spec.rb +0 -24
  348. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  349. data/spec/unit/filters/resource_spec.rb +0 -128
  350. data/spec/unit/form_builder_spec.rb +0 -990
  351. data/spec/unit/generators/install_spec.rb +0 -31
  352. data/spec/unit/helpers/collection_spec.rb +0 -68
  353. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  354. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  355. data/spec/unit/helpers/settings_spec.rb +0 -30
  356. data/spec/unit/i18n_spec.rb +0 -29
  357. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  358. data/spec/unit/menu_collection_spec.rb +0 -62
  359. data/spec/unit/menu_item_spec.rb +0 -141
  360. data/spec/unit/menu_spec.rb +0 -71
  361. data/spec/unit/namespace/authorization_spec.rb +0 -27
  362. data/spec/unit/namespace/register_page_spec.rb +0 -99
  363. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  364. data/spec/unit/namespace_spec.rb +0 -124
  365. data/spec/unit/order_clause_spec.rb +0 -81
  366. data/spec/unit/page_controller_spec.rb +0 -5
  367. data/spec/unit/page_spec.rb +0 -128
  368. data/spec/unit/pretty_format_spec.rb +0 -82
  369. data/spec/unit/pundit_adapter_spec.rb +0 -98
  370. data/spec/unit/resource/action_items_spec.rb +0 -69
  371. data/spec/unit/resource/attributes_spec.rb +0 -49
  372. data/spec/unit/resource/includes_spec.rb +0 -21
  373. data/spec/unit/resource/menu_spec.rb +0 -18
  374. data/spec/unit/resource/naming_spec.rb +0 -122
  375. data/spec/unit/resource/ordering_spec.rb +0 -35
  376. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  377. data/spec/unit/resource/pagination_spec.rb +0 -38
  378. data/spec/unit/resource/routes_spec.rb +0 -125
  379. data/spec/unit/resource/scopes_spec.rb +0 -50
  380. data/spec/unit/resource/sidebars_spec.rb +0 -43
  381. data/spec/unit/resource_collection_spec.rb +0 -175
  382. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  383. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  384. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  385. data/spec/unit/resource_controller_spec.rb +0 -273
  386. data/spec/unit/resource_registration_spec.rb +0 -61
  387. data/spec/unit/resource_spec.rb +0 -320
  388. data/spec/unit/routing_spec.rb +0 -211
  389. data/spec/unit/scope_spec.rb +0 -209
  390. data/spec/unit/settings_spec.rb +0 -117
  391. data/spec/unit/view_factory_spec.rb +0 -19
  392. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  393. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  394. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  395. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  396. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  397. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  398. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  399. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  400. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  401. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  402. data/spec/unit/views/components/columns_spec.rb +0 -187
  403. data/spec/unit/views/components/index_list_spec.rb +0 -49
  404. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  405. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  406. data/spec/unit/views/components/panel_spec.rb +0 -58
  407. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  408. data/spec/unit/views/components/site_title_spec.rb +0 -76
  409. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  410. data/spec/unit/views/components/table_for_spec.rb +0 -436
  411. data/spec/unit/views/components/tabs_spec.rb +0 -67
  412. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  413. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  414. data/spec/unit/views/pages/form_spec.rb +0 -54
  415. data/spec/unit/views/pages/index_spec.rb +0 -60
  416. data/spec/unit/views/pages/layout_spec.rb +0 -59
  417. data/spec/unit/views/pages/show_spec.rb +0 -32
  418. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  419. data/tasks/docs.rake +0 -64
  420. data/tasks/lint.rake +0 -21
  421. data/tasks/local.rake +0 -25
  422. data/tasks/parallel_tests.rake +0 -66
  423. data/tasks/test.rake +0 -29
@@ -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