activeadmin 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,209 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Scope do
4
-
5
- describe "creating a scope" do
6
- subject{ scope }
7
-
8
- context "when just a scope method" do
9
- let(:scope) { ActiveAdmin::Scope.new :published }
10
-
11
- describe '#name' do
12
- subject { super().name }
13
- it { is_expected.to eq("Published")}
14
- end
15
-
16
- describe '#id' do
17
- subject { super().id }
18
- it { is_expected.to eq("published")}
19
- end
20
-
21
- describe '#scope_method' do
22
- subject { super().scope_method }
23
- it { is_expected.to eq(:published) }
24
- end
25
- end
26
-
27
- context "when scope method is :all" do
28
- let(:scope) { ActiveAdmin::Scope.new :all }
29
-
30
- describe '#name' do
31
- subject { super().name }
32
- it { is_expected.to eq("All")}
33
- end
34
-
35
- describe '#id' do
36
- subject { super().id }
37
- it { is_expected.to eq("all")}
38
- end
39
- # :all does not return a chain but an array of active record
40
- # instances. We set the scope_method to nil then.
41
-
42
- describe '#scope_method' do
43
- subject { super().scope_method }
44
- it { is_expected.to eq(nil) }
45
- end
46
-
47
- describe '#scope_block' do
48
- subject { super().scope_block }
49
- it { is_expected.to eq(nil) }
50
- end
51
- end
52
-
53
- context 'when a name and scope method is :all' do
54
- let(:scope) { ActiveAdmin::Scope.new 'Tous', :all }
55
-
56
- describe '#name' do
57
- subject { super().name }
58
- it { is_expected.to eq 'Tous' }
59
- end
60
-
61
- describe '#scope_method' do
62
- subject { super().scope_method }
63
- it { is_expected.to eq nil }
64
- end
65
-
66
- describe '#scope_block' do
67
- subject { super().scope_block }
68
- it { is_expected.to eq nil }
69
- end
70
- end
71
-
72
- context "when a name and scope method" do
73
- let(:scope) { ActiveAdmin::Scope.new "With API Access", :with_api_access }
74
-
75
- describe '#name' do
76
- subject { super().name }
77
- it { is_expected.to eq("With API Access")}
78
- end
79
-
80
- describe '#id' do
81
- subject { super().id }
82
- it { is_expected.to eq("with_api_access")}
83
- end
84
-
85
- describe '#scope_method' do
86
- subject { super().scope_method }
87
- it { is_expected.to eq(:with_api_access) }
88
- end
89
- end
90
-
91
- context "when a name and scope block" do
92
- let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
93
-
94
- describe '#name' do
95
- subject { super().name }
96
- it { is_expected.to eq("My Scope")}
97
- end
98
-
99
- describe '#id' do
100
- subject { super().id }
101
- it { is_expected.to eq("my_scope")}
102
- end
103
-
104
- describe '#scope_method' do
105
- subject { super().scope_method }
106
- it { is_expected.to eq(nil) }
107
- end
108
-
109
- describe '#scope_block' do
110
- subject { super().scope_block }
111
- it { is_expected.to be_a(Proc)}
112
- end
113
- end
114
-
115
- context "when a name has a space and lowercase" do
116
- let(:scope) { ActiveAdmin::Scope.new("my scope") }
117
-
118
- describe '#name' do
119
- subject { super().name }
120
- it { is_expected.to eq("my scope")}
121
- end
122
-
123
- describe '#id' do
124
- subject { super().id }
125
- it { is_expected.to eq("my_scope")}
126
- end
127
- end
128
-
129
- context "with a proc as the label" do
130
- it "should raise an exception if a second argument isn't provided" do
131
- expect{
132
- ActiveAdmin::Scope.new proc{ Date.today.strftime '%A' }
133
- }.to raise_error 'A string/symbol is required as the second argument if your label is a proc.'
134
- end
135
-
136
- it "should properly render the proc" do
137
- scope = ActiveAdmin::Scope.new proc{ Date.today.strftime '%A' }, :foobar
138
- expect(scope.name.call).to eq Date.today.strftime '%A'
139
- end
140
- end
141
-
142
- context "with scope method and localizer" do
143
- let(:localizer) do
144
- loc = double(:localizer)
145
- allow(loc).to receive(:t).with(:published, scope: 'scopes').and_return("All published")
146
- loc
147
- end
148
- let(:scope) { ActiveAdmin::Scope.new :published, :published, localizer: localizer }
149
-
150
- describe '#name' do
151
- subject { super().name }
152
- it { is_expected.to eq("All published")}
153
- end
154
-
155
- describe '#id' do
156
- subject { super().id }
157
- it { is_expected.to eq("published")}
158
- end
159
-
160
- describe '#scope_method' do
161
- subject { super().scope_method }
162
- it { is_expected.to eq(:published) }
163
- end
164
- end
165
-
166
- end # describe "creating a scope"
167
-
168
- describe "#display_if_block" do
169
- it "should return true by default" do
170
- scope = ActiveAdmin::Scope.new(:default)
171
- expect(scope.display_if_block.call).to eq true
172
- end
173
-
174
- it "should return the :if block if set" do
175
- scope = ActiveAdmin::Scope.new(:with_block, nil, if: proc{ false })
176
- expect(scope.display_if_block.call).to eq false
177
- end
178
- end
179
-
180
- describe "#default" do
181
- it "should accept a boolean" do
182
- scope = ActiveAdmin::Scope.new(:method, nil, default: true)
183
- expect(scope.default_block).to eq true
184
- end
185
-
186
- it "should default to a false #default_block" do
187
- scope = ActiveAdmin::Scope.new(:method, nil)
188
- expect(scope.default_block.call).to eq false
189
- end
190
-
191
- it "should store the :default proc" do
192
- scope = ActiveAdmin::Scope.new(:with_block, nil, default: proc{ true })
193
- expect(scope.default_block.call).to eq true
194
- end
195
- end
196
-
197
- describe "show_count" do
198
- it "should allow setting of show_count to prevent showing counts" do
199
- scope = ActiveAdmin::Scope.new(:default, nil, show_count: false)
200
- expect(scope.show_count).to eq false
201
- end
202
-
203
- it "should set show_count to true if not passed in" do
204
- scope = ActiveAdmin::Scope.new(:default)
205
- expect(scope.show_count).to eq true
206
- end
207
- end
208
-
209
- end
@@ -1,117 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Settings do
4
-
5
- subject{ Class.new{ include ActiveAdmin::Settings } }
6
-
7
- it{ is_expected.to respond_to :setting }
8
- it{ is_expected.to respond_to :deprecated_setting }
9
- it{ is_expected.to respond_to :default_settings }
10
-
11
- describe "class API" do
12
- it "should create settings" do
13
- subject.setting :foo, 'bar'
14
- expect(subject.default_settings[:foo]).to eq 'bar'
15
- end
16
-
17
- it "should create deprecated settings" do
18
- expect(ActiveAdmin::Deprecation).to receive(:deprecate).twice
19
- subject.deprecated_setting :baz, 32
20
- expect(subject.default_settings[:baz]).to eq 32
21
- end
22
- end
23
-
24
- describe "instance API" do
25
-
26
- before do
27
- subject.setting :foo, 'bar'
28
- subject.deprecated_setting :baz, 32
29
- end
30
- let(:instance) { subject.new }
31
-
32
- it "should have access to a default value" do
33
- expect(instance.foo).to eq 'bar'
34
- instance.foo = 'qqq'
35
- expect(instance.foo).to eq 'qqq'
36
- end
37
-
38
- it "should have access to a deprecated value" do
39
- expect(ActiveAdmin::Deprecation).to receive(:warn).exactly(3).times
40
- expect(instance.baz).to eq 32
41
- instance.baz = [45]
42
- expect(instance.baz).to eq [45]
43
- end
44
- end
45
-
46
- end
47
-
48
- RSpec.describe ActiveAdmin::Settings::Inheritance do
49
-
50
- subject do
51
- Class.new do
52
- include ActiveAdmin::Settings
53
- include ActiveAdmin::Settings::Inheritance
54
- end
55
- end
56
-
57
- it{ is_expected.to respond_to :settings_inherited_by }
58
- it{ is_expected.to respond_to :inheritable_setting }
59
- it{ is_expected.to respond_to :deprecated_inheritable_setting }
60
-
61
- let(:heir) { Class.new }
62
-
63
- before do
64
- subject.settings_inherited_by heir
65
- end
66
-
67
- describe "class API" do
68
- it "should add setting to an heir" do
69
- subject.inheritable_setting :one, 2
70
- expect(heir.default_settings[:one]).to eq 2
71
- end
72
-
73
- it "should add deprecated setting to an heir" do
74
- expect(ActiveAdmin::Deprecation).to receive(:deprecate).exactly(4).times
75
- subject.deprecated_inheritable_setting :three, 4
76
- expect(heir.default_settings[:three]).to eq 4
77
- end
78
- end
79
-
80
- describe "instance API" do
81
- describe "the setter `config.left =`" do
82
- before{ subject.inheritable_setting :left, :right }
83
- it "should work" do
84
- config = heir.new
85
- config.left = :none
86
- expect(config.left).to eq :none
87
- end
88
- end
89
-
90
- describe "the getter `config.left`" do
91
- before{ subject.inheritable_setting :left, :right }
92
- it "should work" do
93
- expect(heir.new.left).to eq :right
94
- end
95
- end
96
-
97
- describe "the getter with question-mark `config.left?`" do
98
- {
99
- "nil" => [nil, false],
100
- "false" => [false, false],
101
- "true" => [true, true],
102
- "string" => ["string", true],
103
- "empty string" => ["", false],
104
- "array" => [[1, 2], true],
105
- "empty array" => [[], false]
106
- }.each do |context, (value, result)|
107
- context "with a #{context} value" do
108
- before{ subject.inheritable_setting :left, value }
109
- it "should be #{result}" do
110
- expect(heir.new.left?).to eq result
111
- end
112
- end
113
- end
114
- end
115
- end
116
-
117
- end
@@ -1,19 +0,0 @@
1
- require 'rails_helper'
2
-
3
- def it_should_have_view(key, value)
4
- it "should have #{value} for view key '#{key}'" do
5
- expect(subject.send(key)).to eq value
6
- end
7
- end
8
-
9
- RSpec.describe ActiveAdmin::ViewFactory do
10
-
11
- it_should_have_view :global_navigation, ActiveAdmin::Views::TabbedNavigation
12
- it_should_have_view :utility_navigation, ActiveAdmin::Views::TabbedNavigation
13
- it_should_have_view :site_title, ActiveAdmin::Views::SiteTitle
14
- it_should_have_view :action_items, ActiveAdmin::Views::ActionItems
15
- it_should_have_view :header, ActiveAdmin::Views::Header
16
- it_should_have_view :blank_slate, ActiveAdmin::Views::BlankSlate
17
- it_should_have_view :layout, ActiveAdmin::Views::Pages::Layout
18
-
19
- end
@@ -1,253 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe "Breadcrumbs" do
4
-
5
- include ActiveAdmin::ViewHelpers
6
- include ActionView::Helpers::SanitizeHelper
7
-
8
- describe "generating a trail from paths" do
9
-
10
- def params; {}; end
11
- def link_to(name, url); {name: name, path: url}; end
12
-
13
- actions = ActiveAdmin::BaseController::ACTIVE_ADMIN_ACTIONS
14
-
15
- let(:user) { double display_name: 'Jane Doe' }
16
- let(:user_config) { double find_resource: user, resource_name: double(route_key: 'users'),
17
- defined_actions: actions }
18
- let(:post) { double display_name: 'Hello World' }
19
- let(:post_config) { double find_resource: post, resource_name: double(route_key: 'posts'),
20
- defined_actions: actions, belongs_to_config: double(target: user_config) }
21
-
22
- let :active_admin_config do
23
- post_config
24
- end
25
-
26
- let(:trail) { breadcrumb_links(path) }
27
-
28
- context "when request '/admin'" do
29
- let(:path) { "/admin" }
30
-
31
- it "should not have any items" do
32
- expect(trail.size).to eq 0
33
- end
34
- end
35
-
36
- context "when path 'admin/users'" do
37
- let(:path) { 'admin/users' }
38
-
39
- it 'should have one item' do
40
- expect(trail.size).to eq 1
41
- end
42
- it 'should have a link to /admin' do
43
- expect(trail[0][:name]).to eq 'Admin'
44
- expect(trail[0][:path]).to eq '/admin'
45
- end
46
- end
47
-
48
- context "when path '/admin/users'" do
49
- let(:path) { "/admin/users" }
50
-
51
- it "should have one item" do
52
- expect(trail.size).to eq 1
53
- end
54
- it "should have a link to /admin" do
55
- expect(trail[0][:name]).to eq "Admin"
56
- expect(trail[0][:path]).to eq "/admin"
57
- end
58
- end
59
-
60
- context "when path '/admin/users/1'" do
61
- let(:path) { "/admin/users/1" }
62
-
63
- it "should have 2 items" do
64
- expect(trail.size).to eq 2
65
- end
66
- it "should have a link to /admin" do
67
- expect(trail[0][:name]).to eq "Admin"
68
- expect(trail[0][:path]).to eq "/admin"
69
- end
70
- it "should have a link to /admin/users" do
71
- expect(trail[1][:name]).to eq "Users"
72
- expect(trail[1][:path]).to eq "/admin/users"
73
- end
74
- end
75
-
76
- context "when path '/admin/users/1/posts'" do
77
- let(:path) { "/admin/users/1/posts" }
78
-
79
- it "should have 3 items" do
80
- expect(trail.size).to eq 3
81
- end
82
- it "should have a link to /admin" do
83
- expect(trail[0][:name]).to eq "Admin"
84
- expect(trail[0][:path]).to eq "/admin"
85
- end
86
- it "should have a link to /admin/users" do
87
- expect(trail[1][:name]).to eq "Users"
88
- expect(trail[1][:path]).to eq "/admin/users"
89
- end
90
-
91
- context "when User.find(1) doesn't exist" do
92
- before { allow(user_config).to receive(:find_resource) }
93
- it "should have a link to /admin/users/1" do
94
- expect(trail[2][:name]).to eq "1"
95
- expect(trail[2][:path]).to eq "/admin/users/1"
96
- end
97
- end
98
-
99
- context "when User.find(1) does exist" do
100
- it "should have a link to /admin/users/1 using display name" do
101
- expect(trail[2][:name]).to eq "Jane Doe"
102
- expect(trail[2][:path]).to eq "/admin/users/1"
103
- end
104
- end
105
- end
106
-
107
- context "when path '/admin/users/4e24d6249ccf967313000000/posts'" do
108
- let(:path) { "/admin/users/4e24d6249ccf967313000000/posts" }
109
-
110
- it "should have 3 items" do
111
- expect(trail.size).to eq 3
112
- end
113
- it "should have a link to /admin" do
114
- expect(trail[0][:name]).to eq "Admin"
115
- expect(trail[0][:path]).to eq "/admin"
116
- end
117
- it "should have a link to /admin/users" do
118
- expect(trail[1][:name]).to eq "Users"
119
- expect(trail[1][:path]).to eq "/admin/users"
120
- end
121
-
122
- context "when User.find(4e24d6249ccf967313000000) doesn't exist" do
123
- before { allow(user_config).to receive(:find_resource) }
124
- it "should have a link to /admin/users/4e24d6249ccf967313000000" do
125
- expect(trail[2][:name]).to eq "4e24d6249ccf967313000000"
126
- expect(trail[2][:path]).to eq "/admin/users/4e24d6249ccf967313000000"
127
- end
128
- end
129
-
130
- context "when User.find(4e24d6249ccf967313000000) does exist" do
131
- before do
132
- display_name = double(display_name: 'Hello :)')
133
- allow(user_config).to receive(:find_resource).and_return(display_name)
134
- end
135
- it "should have a link to /admin/users/4e24d6249ccf967313000000 using display name" do
136
- expect(trail[2][:name]).to eq "Hello :)"
137
- expect(trail[2][:path]).to eq "/admin/users/4e24d6249ccf967313000000"
138
- end
139
- end
140
- end
141
-
142
- context "when path '/admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4/posts'" do
143
- let(:path) { "/admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4/posts" }
144
-
145
- it "should have 3 items" do
146
- expect(trail.size).to eq 3
147
- end
148
- it "should have a link to /admin" do
149
- expect(trail[0][:name]).to eq "Admin"
150
- expect(trail[0][:path]).to eq "/admin"
151
- end
152
- it "should have a link to /admin/users" do
153
- expect(trail[1][:name]).to eq "Users"
154
- expect(trail[1][:path]).to eq "/admin/users"
155
- end
156
-
157
- context "when User.find(2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4) doesn't exist" do
158
- before { allow(user_config).to receive(:find_resource) }
159
- it "should have a link to /admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4" do
160
- expect(trail[2][:name]).to eq "2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4".titlecase
161
- expect(trail[2][:path]).to eq "/admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4"
162
- end
163
- end
164
-
165
- context "when User.find(2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4) does exist" do
166
- before do
167
- display_name = double(display_name: 'Hello :)')
168
- allow(user_config).to receive(:find_resource).and_return(display_name)
169
- end
170
- it "should have a link to /admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4 using display name" do
171
- expect(trail[2][:name]).to eq "Hello :)"
172
- expect(trail[2][:path]).to eq "/admin/users/2b2f0fc2-9a0d-41b8-b39d-aa21963aaee4"
173
- end
174
- end
175
- end
176
-
177
- context "when path '/admin/users/1/coments/1'" do
178
- let(:path) { "/admin/users/1/posts/1" }
179
-
180
- it "should have 4 items" do
181
- expect(trail.size).to eq 4
182
- end
183
- it "should have a link to /admin" do
184
- expect(trail[0][:name]).to eq "Admin"
185
- expect(trail[0][:path]).to eq "/admin"
186
- end
187
- it "should have a link to /admin/users" do
188
- expect(trail[1][:name]).to eq "Users"
189
- expect(trail[1][:path]).to eq "/admin/users"
190
- end
191
- it "should have a link to /admin/users/1" do
192
- expect(trail[2][:name]).to eq "Jane Doe"
193
- expect(trail[2][:path]).to eq "/admin/users/1"
194
- end
195
- it "should have a link to /admin/users/1/posts" do
196
- expect(trail[3][:name]).to eq "Posts"
197
- expect(trail[3][:path]).to eq "/admin/users/1/posts"
198
- end
199
- end
200
-
201
- context "when path '/admin/users/1/coments/1/edit'" do
202
- let(:path) { "/admin/users/1/posts/1/edit" }
203
-
204
- it "should have 5 items" do
205
- expect(trail.size).to eq 5
206
- end
207
- it "should have a link to /admin" do
208
- expect(trail[0][:name]).to eq "Admin"
209
- expect(trail[0][:path]).to eq "/admin"
210
- end
211
- it "should have a link to /admin/users" do
212
- expect(trail[1][:name]).to eq "Users"
213
- expect(trail[1][:path]).to eq "/admin/users"
214
- end
215
- it "should have a link to /admin/users/1" do
216
- expect(trail[2][:name]).to eq "Jane Doe"
217
- expect(trail[2][:path]).to eq "/admin/users/1"
218
- end
219
- it "should have a link to /admin/users/1/posts" do
220
- expect(trail[3][:name]).to eq "Posts"
221
- expect(trail[3][:path]).to eq "/admin/users/1/posts"
222
- end
223
- it "should have a link to /admin/users/1/posts/1" do
224
- expect(trail[4][:name]).to eq "Hello World"
225
- expect(trail[4][:path]).to eq "/admin/users/1/posts/1"
226
- end
227
- end
228
-
229
- context "when the 'show' action is disabled" do
230
- let(:post_config) { double find_resource: post, resource_name: double(route_key: 'posts'),
231
- defined_actions: actions - [:show], # this is the change
232
- belongs_to_config: double(target: user_config) }
233
-
234
- let(:path) { "/admin/posts/1/edit" }
235
-
236
- it "should have 3 items" do
237
- expect(trail.size).to eq 3
238
- end
239
- it "should have a link to /admin" do
240
- expect(trail[0][:name]).to eq "Admin"
241
- expect(trail[0][:path]).to eq "/admin"
242
- end
243
- it "should have a link to /admin/posts" do
244
- expect(trail[1][:name]).to eq "Posts"
245
- expect(trail[1][:path]).to eq "/admin/posts"
246
- end
247
- it "should not link to the show view for the post" do
248
- expect(trail[2]).to eq "Hello World"
249
- end
250
- end
251
-
252
- end
253
- end