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,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
@@ -1,211 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin, "Routing", type: :routing do
4
-
5
- before do
6
- load_defaults!
7
- reload_routes!
8
- end
9
-
10
- after :all do
11
- load_defaults!
12
- reload_routes!
13
- end
14
-
15
- let(:namespaces) { ActiveAdmin.application.namespaces }
16
-
17
- it "should only have the namespaces necessary for route testing" do
18
- expect(namespaces.names).to eq [:admin]
19
- end
20
-
21
- it "should route to the admin dashboard" do
22
- expect(get('/admin')).to route_to 'admin/dashboard#index'
23
- end
24
-
25
- describe "root path helper" do
26
- context "when in admin namespace" do
27
- it "should be admin_root_path" do
28
- expect(admin_root_path).to eq "/admin"
29
- end
30
- end
31
- end
32
-
33
- describe "route_options" do
34
- context "with a custom path set in route_options" do
35
- before do
36
- namespaces[:admin].route_options = { path: '/custom-path' }
37
- reload_routes!
38
- end
39
-
40
- after do
41
- namespaces[:admin].route_options = {}
42
- reload_routes!
43
- end
44
-
45
- it "should route using the custom path" do
46
- expect(admin_posts_path).to eq "/custom-path/posts"
47
- end
48
- end
49
- end
50
-
51
- describe "standard resources" do
52
- context "when in admin namespace" do
53
- it "should route the index path" do
54
- expect(admin_posts_path).to eq "/admin/posts"
55
- end
56
-
57
- it "should route the show path" do
58
- expect(admin_post_path(1)).to eq "/admin/posts/1"
59
- end
60
-
61
- it "should route the new path" do
62
- expect(new_admin_post_path).to eq "/admin/posts/new"
63
- end
64
-
65
- it "should route the edit path" do
66
- expect(edit_admin_post_path(1)).to eq "/admin/posts/1/edit"
67
- end
68
- end
69
-
70
- context "when in root namespace" do
71
- before(:each) do
72
- load_resources { ActiveAdmin.register(Post, namespace: false) }
73
- end
74
-
75
- after(:each) do
76
- namespaces.instance_variable_get(:@namespaces).delete(:root)
77
- end
78
-
79
- it "should route the index path" do
80
- expect(posts_path).to eq "/posts"
81
- end
82
-
83
- it "should route the show path" do
84
- expect(post_path(1)).to eq "/posts/1"
85
- end
86
-
87
- it "should route the new path" do
88
- expect(new_post_path).to eq "/posts/new"
89
- end
90
-
91
- it "should route the edit path" do
92
- expect(edit_post_path(1)).to eq "/posts/1/edit"
93
- end
94
- end
95
-
96
- context "with member action" do
97
- context "without an http verb" do
98
- before do
99
- load_resources do
100
- ActiveAdmin.register(Post){ member_action "do_something" }
101
- end
102
- end
103
-
104
- it "should default to GET" do
105
- expect({get: "/admin/posts/1/do_something"}).to be_routable
106
- expect({post: "/admin/posts/1/do_something"}).to_not be_routable
107
- end
108
- end
109
-
110
- context "with one http verb" do
111
- before do
112
- load_resources do
113
- ActiveAdmin.register(Post){ member_action "do_something", method: :post }
114
- end
115
- end
116
-
117
- it "should properly route" do
118
- expect({post: "/admin/posts/1/do_something"}).to be_routable
119
- end
120
- end
121
-
122
- context "with two http verbs" do
123
- before do
124
- load_resources do
125
- ActiveAdmin.register(Post){ member_action "do_something", method: [:put, :delete] }
126
- end
127
- end
128
-
129
- it "should properly route the first verb" do
130
- expect({put: "/admin/posts/1/do_something"}).to be_routable
131
- end
132
-
133
- it "should properly route the second verb" do
134
- expect({delete: "/admin/posts/1/do_something"}).to be_routable
135
- end
136
- end
137
- end
138
- end
139
-
140
- describe "belongs to resource" do
141
- it "should route the nested index path" do
142
- expect(admin_user_posts_path(1)).to eq "/admin/users/1/posts"
143
- end
144
-
145
- it "should route the nested show path" do
146
- expect(admin_user_post_path(1, 2)).to eq "/admin/users/1/posts/2"
147
- end
148
-
149
- it "should route the nested new path" do
150
- expect(new_admin_user_post_path(1)).to eq "/admin/users/1/posts/new"
151
- end
152
-
153
- it "should route the nested edit path" do
154
- expect(edit_admin_user_post_path(1, 2)).to eq "/admin/users/1/posts/2/edit"
155
- end
156
-
157
- context "with collection action" do
158
- before do
159
- load_resources do
160
- ActiveAdmin.register(Post) do
161
- belongs_to :user, optional: true
162
- end
163
- ActiveAdmin.register(User) do
164
- collection_action "do_something"
165
- end
166
- end
167
- end
168
-
169
- it "should properly route the collection action" do
170
- expect({ get: "/admin/users/do_something" }).to \
171
- route_to({ controller: 'admin/users', action: 'do_something'})
172
- end
173
- end
174
- end
175
-
176
- describe "page" do
177
- context "when default namespace" do
178
- before(:each) do
179
- load_resources { ActiveAdmin.register_page("Chocolate I lØve You!") }
180
- end
181
-
182
- it "should route to the page under /admin" do
183
- expect(admin_chocolate_i_love_you_path).to eq "/admin/chocolate_i_love_you"
184
- end
185
- end
186
-
187
- context "when in the root namespace" do
188
- before(:each) do
189
- load_resources { ActiveAdmin.register_page("Chocolate I lØve You!", namespace: false) }
190
- end
191
-
192
- after(:each) do
193
- namespaces.instance_variable_get(:@namespaces).delete(:root)
194
- end
195
-
196
- it "should route to page under /" do
197
- expect(chocolate_i_love_you_path).to eq "/chocolate_i_love_you"
198
- end
199
- end
200
-
201
- context "when singular page name" do
202
- before(:each) do
203
- load_resources { ActiveAdmin.register_page("Log") }
204
- end
205
-
206
- it "should not inject _index_ into the route name" do
207
- expect(admin_log_path).to eq "/admin/log"
208
- end
209
- end
210
- end
211
- end