activeadmin 1.3.1 → 1.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 (333) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +467 -0
  3. data/.gitignore +2 -5
  4. data/.rspec +1 -0
  5. data/.rspec_parallel +2 -0
  6. data/.rubocop.yml +25 -7
  7. data/.simplecov +4 -6
  8. data/CHANGELOG.md +175 -83
  9. data/CODE_OF_CONDUCT.md +64 -12
  10. data/CONTRIBUTING.md +77 -40
  11. data/Gemfile +7 -55
  12. data/Gemfile.common +53 -0
  13. data/Gemfile.lock +431 -0
  14. data/README.md +39 -18
  15. data/Rakefile +1 -32
  16. data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  19. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  20. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  21. data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
  22. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  23. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  24. data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
  25. data/bin/install_chromedriver.sh +17 -0
  26. data/config/locales/de.yml +10 -0
  27. data/config/locales/en.yml +19 -1
  28. data/config/locales/es.yml +20 -1
  29. data/config/locales/fi.yml +1 -1
  30. data/config/locales/it.yml +4 -0
  31. data/config/locales/nb.yml +15 -5
  32. data/config/locales/nl.yml +11 -0
  33. data/config/locales/pl.yml +71 -3
  34. data/config/locales/ru.yml +2 -0
  35. data/config/locales/tr.yml +9 -0
  36. data/config/locales/zh-CN.yml +33 -5
  37. data/config/mdl_style.rb +2 -0
  38. data/cucumber.yml +7 -3
  39. data/docs/.gitignore +1 -0
  40. data/docs/1-general-configuration.md +16 -1
  41. data/docs/10-custom-pages.md +14 -0
  42. data/docs/12-arbre-components.md +28 -1
  43. data/docs/13-authorization-adapter.md +36 -17
  44. data/docs/2-resource-customization.md +8 -3
  45. data/docs/3-index-pages.md +17 -0
  46. data/docs/3-index-pages/custom-index.md +1 -1
  47. data/docs/3-index-pages/index-as-blog.md +1 -1
  48. data/docs/3-index-pages/index-as-table.md +5 -5
  49. data/docs/5-forms.md +16 -2
  50. data/docs/8-custom-actions.md +11 -0
  51. data/docs/Gemfile +2 -0
  52. data/docs/Gemfile.lock +249 -0
  53. data/docs/_config.yml +1 -1
  54. data/docs/_includes/toc.html +1 -1
  55. data/docs/_includes/top-menu.html +9 -1
  56. data/docs/documentation.md +1 -1
  57. data/docs/images/tidelift.svg +14 -0
  58. data/docs/stylesheets/main.css +26 -2
  59. data/gemfiles/rails_42.gemfile +2 -2
  60. data/gemfiles/rails_42.gemfile.lock +410 -0
  61. data/gemfiles/rails_50.gemfile +2 -2
  62. data/gemfiles/rails_50.gemfile.lock +424 -0
  63. data/gemfiles/rails_51.gemfile +2 -2
  64. data/gemfiles/rails_51.gemfile.lock +423 -0
  65. data/lib/active_admin/abstract_view_factory.rb +13 -51
  66. data/lib/active_admin/application.rb +42 -142
  67. data/lib/active_admin/application_settings.rb +39 -0
  68. data/lib/active_admin/base_controller/authorization.rb +1 -2
  69. data/lib/active_admin/batch_actions/controller.rb +1 -1
  70. data/lib/active_admin/dependency.rb +8 -0
  71. data/lib/active_admin/deprecation.rb +0 -25
  72. data/lib/active_admin/dynamic_setting.rb +38 -0
  73. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  74. data/lib/active_admin/engine.rb +5 -0
  75. data/lib/active_admin/filters/active_filter.rb +1 -1
  76. data/lib/active_admin/filters/resource_extension.rb +1 -1
  77. data/lib/active_admin/form_builder.rb +95 -60
  78. data/lib/active_admin/inputs/datepicker_input.rb +7 -0
  79. data/lib/active_admin/menu.rb +2 -8
  80. data/lib/active_admin/menu_item.rb +3 -31
  81. data/lib/active_admin/namespace.rb +18 -6
  82. data/lib/active_admin/namespace_settings.rb +107 -0
  83. data/lib/active_admin/orm/active_record/comments.rb +11 -0
  84. data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
  85. data/lib/active_admin/resource/action_items.rb +6 -1
  86. data/lib/active_admin/resource_controller/decorators.rb +3 -3
  87. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  88. data/lib/active_admin/router.rb +89 -84
  89. data/lib/active_admin/scope.rb +5 -1
  90. data/lib/active_admin/settings_node.rb +19 -0
  91. data/lib/active_admin/version.rb +1 -1
  92. data/lib/active_admin/views/components/active_admin_form.rb +2 -3
  93. data/lib/active_admin/views/components/menu.rb +32 -0
  94. data/lib/active_admin/views/components/menu_item.rb +58 -0
  95. data/lib/active_admin/views/components/scopes.rb +11 -4
  96. data/lib/active_admin/views/components/sidebar.rb +13 -0
  97. data/lib/active_admin/views/components/site_title.rb +5 -6
  98. data/lib/active_admin/views/components/table_for.rb +1 -10
  99. data/lib/active_admin/views/components/tabs.rb +4 -1
  100. data/lib/active_admin/views/footer.rb +2 -6
  101. data/lib/active_admin/views/header.rb +3 -15
  102. data/lib/active_admin/views/index_as_blog.rb +1 -1
  103. data/lib/active_admin/views/index_as_grid.rb +25 -25
  104. data/lib/active_admin/views/index_as_table.rb +6 -6
  105. data/lib/active_admin/views/pages/base.rb +27 -53
  106. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  107. data/lib/bug_report_templates/active_admin_master.rb +2 -3
  108. data/tasks/application_generator.rb +48 -0
  109. data/tasks/gemfiles.rake +8 -0
  110. data/tasks/lint.rake +96 -7
  111. data/tasks/local.rake +10 -8
  112. data/tasks/test.rake +30 -16
  113. metadata +26 -440
  114. data/.travis.yml +0 -51
  115. data/features/action_item.feature +0 -73
  116. data/features/authorization.feature +0 -64
  117. data/features/authorization_cancan.feature +0 -52
  118. data/features/authorization_pundit.feature +0 -37
  119. data/features/belongs_to.feature +0 -124
  120. data/features/breadcrumb.feature +0 -75
  121. data/features/comments/commenting.feature +0 -178
  122. data/features/comments/viewing_index.feature +0 -19
  123. data/features/create_another.feature +0 -55
  124. data/features/dashboard.feature +0 -16
  125. data/features/decorators.feature +0 -43
  126. data/features/development_reloading.feature +0 -28
  127. data/features/edit_page.feature +0 -116
  128. data/features/favicon.feature +0 -20
  129. data/features/first_boot.feature +0 -16
  130. data/features/footer.feature +0 -28
  131. data/features/global_navigation.feature +0 -29
  132. data/features/i18n.feature +0 -55
  133. data/features/index/batch_actions.feature +0 -218
  134. data/features/index/filters.feature +0 -250
  135. data/features/index/format_as_csv.feature +0 -220
  136. data/features/index/formats.feature +0 -88
  137. data/features/index/index_as_block.feature +0 -15
  138. data/features/index/index_as_blog.feature +0 -69
  139. data/features/index/index_as_grid.feature +0 -45
  140. data/features/index/index_as_table.feature +0 -291
  141. data/features/index/index_blank_slate.feature +0 -83
  142. data/features/index/index_parameters.feature +0 -75
  143. data/features/index/index_scope_to.feature +0 -56
  144. data/features/index/index_scopes.feature +0 -285
  145. data/features/index/page_title.feature +0 -41
  146. data/features/index/pagination.feature +0 -63
  147. data/features/index/switch_index_view.feature +0 -73
  148. data/features/menu.feature +0 -72
  149. data/features/meta_tags.feature +0 -21
  150. data/features/new_page.feature +0 -136
  151. data/features/registering_assets.feature +0 -38
  152. data/features/registering_pages.feature +0 -237
  153. data/features/registering_resources.feature +0 -33
  154. data/features/renamed_resource.feature +0 -30
  155. data/features/root_to.feature +0 -17
  156. data/features/show/attributes_table_title.feature +0 -54
  157. data/features/show/columns.feature +0 -40
  158. data/features/show/default_content.feature +0 -44
  159. data/features/show/page_title.feature +0 -58
  160. data/features/show/tabs.feature +0 -33
  161. data/features/sidebar_sections.feature +0 -210
  162. data/features/site_title.feature +0 -47
  163. data/features/specifying_actions.feature +0 -118
  164. data/features/step_definitions/action_item_steps.rb +0 -7
  165. data/features/step_definitions/action_link_steps.rb +0 -19
  166. data/features/step_definitions/additional_web_steps.rb +0 -81
  167. data/features/step_definitions/asset_steps.rb +0 -15
  168. data/features/step_definitions/attribute_steps.rb +0 -18
  169. data/features/step_definitions/attributes_table_title_steps.rb +0 -11
  170. data/features/step_definitions/batch_action_steps.rb +0 -81
  171. data/features/step_definitions/blog_steps.rb +0 -3
  172. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  173. data/features/step_definitions/column_steps.rb +0 -8
  174. data/features/step_definitions/comment_steps.rb +0 -32
  175. data/features/step_definitions/configuration_steps.rb +0 -100
  176. data/features/step_definitions/dashboard_steps.rb +0 -15
  177. data/features/step_definitions/factory_steps.rb +0 -35
  178. data/features/step_definitions/filter_steps.rb +0 -47
  179. data/features/step_definitions/flash_steps.rb +0 -11
  180. data/features/step_definitions/footer_steps.rb +0 -11
  181. data/features/step_definitions/format_steps.rb +0 -56
  182. data/features/step_definitions/i18n_steps.rb +0 -11
  183. data/features/step_definitions/index_scope_steps.rb +0 -29
  184. data/features/step_definitions/index_views_steps.rb +0 -3
  185. data/features/step_definitions/layout_steps.rb +0 -3
  186. data/features/step_definitions/member_link_steps.rb +0 -7
  187. data/features/step_definitions/menu_steps.rb +0 -11
  188. data/features/step_definitions/meta_tag_steps.rb +0 -3
  189. data/features/step_definitions/pagination_steps.rb +0 -15
  190. data/features/step_definitions/sidebar_steps.rb +0 -11
  191. data/features/step_definitions/site_title_steps.rb +0 -17
  192. data/features/step_definitions/tab_steps.rb +0 -8
  193. data/features/step_definitions/table_steps.rb +0 -116
  194. data/features/step_definitions/user_steps.rb +0 -52
  195. data/features/step_definitions/web_steps.rb +0 -86
  196. data/features/sti_resource.feature +0 -65
  197. data/features/strong_parameters.feature +0 -69
  198. data/features/support/env.rb +0 -122
  199. data/features/support/paths.rb +0 -73
  200. data/features/support/regular_env.rb +0 -7
  201. data/features/support/reload_env.rb +0 -7
  202. data/features/support/selectors.rb +0 -45
  203. data/features/users/logging_in.feature +0 -36
  204. data/features/users/logging_out.feature +0 -13
  205. data/features/users/resetting_password.feature +0 -34
  206. data/gemfiles/rails_52.gemfile +0 -11
  207. data/lib/active_admin/helpers/settings.rb +0 -114
  208. data/spec/bug_report_templates_spec.rb +0 -26
  209. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  210. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  211. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  212. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  213. data/spec/javascripts/fixtures/flashes.html +0 -2
  214. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  215. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  216. data/spec/javascripts/support/jasmine.yml +0 -74
  217. data/spec/javascripts/support/jasmine_runner.rb +0 -19
  218. data/spec/rails_helper.rb +0 -59
  219. data/spec/requests/default_namespace_spec.rb +0 -81
  220. data/spec/requests/memory_spec.rb +0 -25
  221. data/spec/requests/stylesheets_spec.rb +0 -18
  222. data/spec/spec_helper.rb +0 -1
  223. data/spec/support/active_admin_integration_spec_helper.rb +0 -73
  224. data/spec/support/active_admin_request_helpers.rb +0 -39
  225. data/spec/support/rails_template.rb +0 -153
  226. data/spec/support/rails_template_with_data.rb +0 -327
  227. data/spec/support/templates/admin/stores.rb +0 -7
  228. data/spec/support/templates/en.yml +0 -8
  229. data/spec/support/templates/manifest.js +0 -3
  230. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  231. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  232. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  233. data/spec/support/templates/policies/application_policy.rb +0 -44
  234. data/spec/support/templates/policies/category_policy.rb +0 -7
  235. data/spec/support/templates/policies/post_policy.rb +0 -15
  236. data/spec/support/templates/policies/store_policy.rb +0 -11
  237. data/spec/support/templates/policies/user_policy.rb +0 -11
  238. data/spec/support/templates/post_decorator.rb +0 -24
  239. data/spec/unit/abstract_view_factory_spec.rb +0 -78
  240. data/spec/unit/action_builder_spec.rb +0 -158
  241. data/spec/unit/active_admin_spec.rb +0 -11
  242. data/spec/unit/application_spec.rb +0 -184
  243. data/spec/unit/asset_registration_spec.rb +0 -81
  244. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  245. data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
  246. data/spec/unit/authorization/index_overriding_spec.rb +0 -23
  247. data/spec/unit/auto_link_spec.rb +0 -93
  248. data/spec/unit/batch_actions/resource_spec.rb +0 -84
  249. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  250. data/spec/unit/belongs_to_spec.rb +0 -76
  251. data/spec/unit/cancan_adapter_spec.rb +0 -43
  252. data/spec/unit/comments_spec.rb +0 -176
  253. data/spec/unit/component_spec.rb +0 -18
  254. data/spec/unit/config_shared_examples.rb +0 -59
  255. data/spec/unit/controller_filters_spec.rb +0 -41
  256. data/spec/unit/csv_builder_spec.rb +0 -313
  257. data/spec/unit/dependency_spec.rb +0 -135
  258. data/spec/unit/devise_spec.rb +0 -110
  259. data/spec/unit/dsl_spec.rb +0 -120
  260. data/spec/unit/filters/active_filter_spec.rb +0 -189
  261. data/spec/unit/filters/active_spec.rb +0 -24
  262. data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
  263. data/spec/unit/filters/resource_spec.rb +0 -128
  264. data/spec/unit/form_builder_spec.rb +0 -990
  265. data/spec/unit/generators/install_spec.rb +0 -31
  266. data/spec/unit/helpers/collection_spec.rb +0 -68
  267. data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
  268. data/spec/unit/helpers/scope_chain_spec.rb +0 -35
  269. data/spec/unit/helpers/settings_spec.rb +0 -30
  270. data/spec/unit/i18n_spec.rb +0 -29
  271. data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
  272. data/spec/unit/menu_collection_spec.rb +0 -62
  273. data/spec/unit/menu_item_spec.rb +0 -141
  274. data/spec/unit/menu_spec.rb +0 -71
  275. data/spec/unit/namespace/authorization_spec.rb +0 -27
  276. data/spec/unit/namespace/register_page_spec.rb +0 -99
  277. data/spec/unit/namespace/register_resource_spec.rb +0 -162
  278. data/spec/unit/namespace_spec.rb +0 -124
  279. data/spec/unit/order_clause_spec.rb +0 -81
  280. data/spec/unit/page_controller_spec.rb +0 -5
  281. data/spec/unit/page_spec.rb +0 -128
  282. data/spec/unit/pretty_format_spec.rb +0 -82
  283. data/spec/unit/pundit_adapter_spec.rb +0 -98
  284. data/spec/unit/resource/action_items_spec.rb +0 -69
  285. data/spec/unit/resource/attributes_spec.rb +0 -49
  286. data/spec/unit/resource/includes_spec.rb +0 -21
  287. data/spec/unit/resource/menu_spec.rb +0 -18
  288. data/spec/unit/resource/naming_spec.rb +0 -122
  289. data/spec/unit/resource/ordering_spec.rb +0 -35
  290. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  291. data/spec/unit/resource/pagination_spec.rb +0 -38
  292. data/spec/unit/resource/routes_spec.rb +0 -125
  293. data/spec/unit/resource/scopes_spec.rb +0 -50
  294. data/spec/unit/resource/sidebars_spec.rb +0 -43
  295. data/spec/unit/resource_collection_spec.rb +0 -175
  296. data/spec/unit/resource_controller/data_access_spec.rb +0 -234
  297. data/spec/unit/resource_controller/decorators_spec.rb +0 -94
  298. data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
  299. data/spec/unit/resource_controller_spec.rb +0 -273
  300. data/spec/unit/resource_registration_spec.rb +0 -61
  301. data/spec/unit/resource_spec.rb +0 -320
  302. data/spec/unit/routing_spec.rb +0 -211
  303. data/spec/unit/scope_spec.rb +0 -209
  304. data/spec/unit/settings_spec.rb +0 -117
  305. data/spec/unit/view_factory_spec.rb +0 -19
  306. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
  307. data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
  308. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  309. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  310. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
  311. data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
  312. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
  313. data/spec/unit/views/components/attributes_table_spec.rb +0 -271
  314. data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
  315. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  316. data/spec/unit/views/components/columns_spec.rb +0 -187
  317. data/spec/unit/views/components/index_list_spec.rb +0 -49
  318. data/spec/unit/views/components/index_table_for_spec.rb +0 -127
  319. data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
  320. data/spec/unit/views/components/panel_spec.rb +0 -58
  321. data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
  322. data/spec/unit/views/components/site_title_spec.rb +0 -76
  323. data/spec/unit/views/components/status_tag_spec.rb +0 -265
  324. data/spec/unit/views/components/table_for_spec.rb +0 -436
  325. data/spec/unit/views/components/tabs_spec.rb +0 -67
  326. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
  327. data/spec/unit/views/index_as_blog_spec.rb +0 -76
  328. data/spec/unit/views/pages/form_spec.rb +0 -54
  329. data/spec/unit/views/pages/index_spec.rb +0 -60
  330. data/spec/unit/views/pages/layout_spec.rb +0 -59
  331. data/spec/unit/views/pages/show_spec.rb +0 -32
  332. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  333. data/tasks/parallel_tests.rake +0 -66
@@ -1,94 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::ResourceController::Decorators do
4
- let(:controller_class) do
5
- Class.new do
6
- def self.name
7
- "Test Controller using Decorators"
8
- end
9
-
10
- include ActiveAdmin::ResourceController::Decorators
11
-
12
- public :apply_decorator, :apply_collection_decorator
13
- end
14
- end
15
-
16
- let(:controller) { controller_class.new }
17
- let(:active_admin_config) { double(decorator_class: decorator_class) }
18
- before do
19
- allow(controller).to receive(:active_admin_config).and_return(active_admin_config)
20
- allow(controller).to receive(:action_name).and_return(action)
21
- end
22
-
23
- describe '#apply_decorator' do
24
- let(:action) { 'show' }
25
- let(:resource) { Post.new }
26
- subject(:applied) { controller.apply_decorator(resource) }
27
-
28
- context 'with a decorator configured' do
29
- let(:decorator_class) { PostDecorator }
30
- it { is_expected.to be_kind_of(PostDecorator) }
31
-
32
- context 'with form' do
33
- let(:action) { 'update' }
34
-
35
- it "does not decorate when :decorate is set to false" do
36
- form = double
37
- allow(form).to receive(:options).and_return(decorate: false)
38
- allow(active_admin_config).to receive(:get_page_presenter).and_return(form)
39
- is_expected.not_to be_kind_of(PostDecorator)
40
- end
41
- end
42
- end
43
-
44
- context 'with no decorator configured' do
45
- let(:decorator_class) { nil }
46
- it { is_expected.to be_kind_of(Post) }
47
- end
48
- end
49
-
50
- describe '#apply_collection_decorator' do
51
- before { Post.create! }
52
- let(:action) { 'index' }
53
- let(:collection) { Post.where nil }
54
- subject(:applied) { controller.apply_collection_decorator(collection) }
55
-
56
- context 'when a decorator is configured' do
57
- context 'and it is using a recent version of draper' do
58
- let(:decorator_class) { PostDecorator }
59
-
60
- it 'calling certain scope collections work' do
61
- # This is an example of one of the methods that was consistently
62
- # failing before this feature existed
63
- expect(applied.reorder('').count).to eq applied.count
64
- end
65
-
66
- it 'has a good description for the generated class' do
67
- expect(applied.class.name).to eq "Draper::CollectionDecorator of PostDecorator + ActiveAdmin"
68
- end
69
-
70
- end
71
- end
72
- end
73
-
74
- describe 'form actions' do
75
- let(:action) { 'edit' }
76
- let(:resource) { Post.new }
77
- let(:form_presenter) { double options: { decorate: decorate_form } }
78
- let(:decorator_class) { PostDecorator }
79
- before { allow(active_admin_config).to receive(:get_page_presenter).with(:form).and_return form_presenter }
80
-
81
- subject(:applied) { controller.apply_decorator(resource) }
82
-
83
- context 'when the form is not configured to decorate' do
84
- let(:decorate_form) { false }
85
- it { is_expected.to be_kind_of(Post) }
86
- end
87
-
88
- context 'when the form is configured to decorate' do
89
- let(:decorate_form) { true }
90
- it { is_expected.to be_kind_of(PostDecorator) }
91
- end
92
-
93
- end
94
- end
@@ -1,37 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::ResourceController::Sidebars, type: :controller do
4
- let(:klass){ Admin::PostsController }
5
-
6
- shared_context 'with post config' do
7
- before do
8
- load_resources { post_config }
9
-
10
- @controller = klass.new
11
-
12
- get :index
13
- end
14
- end
15
-
16
- context 'without skip_sidebar! before filter' do
17
- include_context 'with post config' do
18
- let(:post_config) { ActiveAdmin.register Post }
19
- end
20
-
21
- it 'does not set @skip_sidebar' do
22
- expect(controller.instance_variable_get(:@skip_sidebar)).to eq nil
23
- end
24
- end
25
-
26
- context 'with skip_sidebar! before_action' do
27
- include_context 'with post config' do
28
- let(:post_config) do
29
- ActiveAdmin.register(Post) { before_action :skip_sidebar! }
30
- end
31
- end
32
-
33
- it 'works' do
34
- expect(controller.instance_variable_get(:@skip_sidebar)).to eq true
35
- end
36
- end
37
- end
@@ -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