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,81 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::OrderClause do
4
- subject { described_class.new(config, clause) }
5
-
6
- let(:application) { ActiveAdmin::Application.new }
7
- let(:namespace) { ActiveAdmin::Namespace.new application, :admin }
8
- let(:config) { ActiveAdmin::Resource.new namespace, Post }
9
-
10
- describe 'id_asc (existing column)' do
11
- let(:clause) { 'id_asc' }
12
-
13
- it { is_expected.to be_valid }
14
-
15
- describe '#field' do
16
- subject { super().field }
17
- it { is_expected.to eq('id') }
18
- end
19
-
20
- describe '#order' do
21
- subject { super().order }
22
- it { is_expected.to eq('asc') }
23
- end
24
-
25
- specify '#to_sql prepends table name' do
26
- expect(subject.to_sql).to eq '"posts"."id" asc'
27
- end
28
- end
29
-
30
- describe 'virtual_column_asc' do
31
- let(:clause) { 'virtual_column_asc' }
32
-
33
- it { is_expected.to be_valid }
34
-
35
- describe '#field' do
36
- subject { super().field }
37
- it { is_expected.to eq('virtual_column') }
38
- end
39
-
40
- describe '#order' do
41
- subject { super().order }
42
- it { is_expected.to eq('asc') }
43
- end
44
-
45
- specify '#to_sql' do
46
- expect(subject.to_sql).to eq '"virtual_column" asc'
47
- end
48
- end
49
-
50
- describe "hstore_col->'field'_desc" do
51
- let(:clause) { "hstore_col->'field'_desc" }
52
-
53
- it { is_expected.to be_valid }
54
-
55
- describe '#field' do
56
- subject { super().field }
57
- it { is_expected.to eq("hstore_col->'field'") }
58
- end
59
-
60
- describe '#order' do
61
- subject { super().order }
62
- it { is_expected.to eq('desc') }
63
- end
64
-
65
- it 'converts to sql' do
66
- expect(subject.to_sql).to eq %Q("hstore_col"->'field' desc)
67
- end
68
- end
69
-
70
- describe '_asc' do
71
- let(:clause) { '_asc' }
72
-
73
- it { is_expected.not_to be_valid }
74
- end
75
-
76
- describe 'nil' do
77
- let(:clause) { nil }
78
-
79
- it { is_expected.not_to be_valid }
80
- end
81
- end
@@ -1,5 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::PageController do
4
- let(:controller) { ActiveAdmin::PageController.new }
5
- end
@@ -1,128 +0,0 @@
1
- require 'rails_helper'
2
- require File.expand_path('config_shared_examples', File.dirname(__FILE__))
3
-
4
- module ActiveAdmin
5
- RSpec.describe Page 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
- let(:page_name) { "Chocolate I lØve You!" }
13
-
14
- def config(options = {})
15
- @config ||= namespace.register_page("Chocolate I lØve You!", options)
16
- end
17
-
18
- describe "controller name" do
19
- it "should return a namespaced controller name" do
20
- expect(config.controller_name).to eq "Admin::ChocolateILoveYouController"
21
- end
22
- context "when non namespaced controller" do
23
- let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
24
- it "should return a non namespaced controller name" do
25
- expect(config.controller_name).to eq "ChocolateILoveYouController"
26
- end
27
- end
28
- end
29
-
30
- describe "#resource_name" do
31
- it "returns the name" do
32
- expect(config.resource_name).to eq "Chocolate I lØve You!"
33
- end
34
-
35
- it "returns the singular, lowercase name" do
36
- if RUBY_VERSION >= '2.4.0'
37
- expect(config.resource_name.singular).to eq "chocolate i løve you!"
38
- else
39
- expect(config.resource_name.singular).to eq "chocolate i lØve you!"
40
- end
41
- end
42
- end
43
-
44
- describe "#plural_resource_label" do
45
- it "returns the singular name" do
46
- expect(config.plural_resource_label).to eq "Chocolate I lØve You!"
47
- end
48
- end
49
-
50
- describe "#underscored_resource_name" do
51
- it "returns the resource name underscored" do
52
- expect(config.underscored_resource_name).to eq "chocolate_i_love_you"
53
- end
54
- end
55
-
56
- describe "#camelized_resource_name" do
57
- it "returns the resource name camel case" do
58
- expect(config.camelized_resource_name).to eq "ChocolateILoveYou"
59
- end
60
- end
61
-
62
- describe "#namespace_name" do
63
- it "returns the name of the namespace" do
64
- expect(config.namespace_name).to eq "admin"
65
- end
66
- end
67
-
68
- it "should not belong_to anything" do
69
- expect(config.belongs_to?).to eq false
70
- end
71
-
72
- it "should not have any action_items" do
73
- expect(config.action_items?).to eq false
74
- end
75
-
76
- it "should not have any sidebar_sections" do
77
- expect(config.sidebar_sections?).to eq false
78
- end
79
-
80
- context "with belongs to config" do
81
- let!(:post_config) { namespace.register Post }
82
- let!(:page_config) {
83
- namespace.register_page page_name do
84
- belongs_to :post
85
- end
86
- }
87
-
88
- it "configures page with belongs_to" do
89
- expect(page_config.belongs_to?).to be true
90
- end
91
-
92
- it "sets navigation menu to parent" do
93
- expect(page_config.navigation_menu_name).to eq :post
94
- end
95
-
96
- it "builds a belongs_to relationship" do
97
- belongs_to = page_config.belongs_to_config
98
-
99
- expect(belongs_to.target).to eq(post_config)
100
- expect(belongs_to.owner).to eq(page_config)
101
- expect(belongs_to.optional?).to be_falsy
102
- end
103
-
104
- it "forwards belongs_to call to controller" do
105
- options = { optional: true }
106
- expect(page_config.controller).to receive(:belongs_to).with(:post, options)
107
- page_config.belongs_to :post, options
108
- end
109
- end # context "with belongs to config" do
110
-
111
- context "with optional belongs to config" do
112
- let!(:post_config) { namespace.register Post }
113
- let!(:page_config) {
114
- namespace.register_page page_name do
115
- belongs_to :post, optional: true
116
- end
117
- }
118
-
119
- it "does not override default navigation menu" do
120
- expect(page_config.navigation_menu_name).to eq(:default)
121
- end
122
- end # context "with optional belongs to config" do
123
-
124
- it "has no belongs_to by default" do
125
- expect(config.belongs_to?).to be_falsy
126
- end
127
- end
128
- end
@@ -1,82 +0,0 @@
1
- require 'rails_helper'
2
- require 'active_admin/view_helpers/display_helper'
3
-
4
- RSpec.describe "#pretty_format" do
5
- include ActiveAdmin::ViewHelpers::DisplayHelper
6
-
7
- def method_missing(*args, &block)
8
- mock_action_view.send *args, &block
9
- end
10
-
11
- ['hello', 23, 5.67, 10**30, :foo, Arbre::Element.new.br].each do |obj|
12
- it "should call `to_s` on #{obj.class}s" do
13
- expect(pretty_format(obj)).to eq obj.to_s
14
- end
15
- end
16
-
17
- shared_examples_for 'a time-ish object' do |t|
18
- it "formats it with the default long format" do
19
- expect(pretty_format(t)).to eq "February 28, 1985 20:15"
20
- end
21
-
22
- it "formats it with a customized long format" do
23
- with_translation time: { formats: { long: "%B %d, %Y, %l:%M%P" } } do
24
- expect(pretty_format(t)).to eq "February 28, 1985, 8:15pm"
25
- end
26
- end
27
-
28
- context "with a custom localize format" do
29
- around do |example|
30
- previous_localize_format = ActiveAdmin.application.localize_format
31
- ActiveAdmin.application.localize_format = :short
32
- example.call
33
- ActiveAdmin.application.localize_format = previous_localize_format
34
- end
35
-
36
- it "formats it with the default custom format" do
37
- expect(pretty_format(t)).to eq "28 Feb 20:15"
38
- end
39
-
40
- it "formats it with i18n custom format" do
41
- with_translation time: { formats: { short: "%-m %d %Y" } } do
42
- expect(pretty_format(t)).to eq "2 28 1985"
43
- end
44
- end
45
- end
46
-
47
- context "with non-English locale" do
48
- around do |example|
49
- I18n.with_locale(:es) { example.call }
50
- end
51
-
52
- it "formats it with the default long format" do
53
- expect(pretty_format(t)).to eq "28 de febrero de 1985 20:15"
54
- end
55
-
56
- it "formats it with a customized long format" do
57
- with_translation time: { formats: { long: "El %d de %B de %Y a las %H horas y %M minutos" } } do
58
- expect(pretty_format(t)).to eq "El 28 de febrero de 1985 a las 20 horas y 15 minutos"
59
- end
60
- end
61
- end
62
- end
63
-
64
- it_behaves_like 'a time-ish object', Time.utc(1985, "feb", 28, 20, 15, 1)
65
- it_behaves_like 'a time-ish object', DateTime.new(1985, 2, 28, 20, 15, 1)
66
-
67
- context "given an ActiveRecord object" do
68
- it "should delegate to auto_link" do
69
- post = Post.new
70
- expect(self).to receive(:auto_link).with(post) { "model name" }
71
- expect(pretty_format(post)).to eq "model name"
72
- end
73
- end
74
-
75
- context "given an arbitrary object" do
76
- it "should delegate to `display_name`" do
77
- something = Class.new.new
78
- expect(self).to receive(:display_name).with(something) { "I'm not famous" }
79
- expect(pretty_format(something)).to eq "I'm not famous"
80
- end
81
- end
82
- end
@@ -1,98 +0,0 @@
1
- require 'rails_helper'
2
-
3
- class DefaultPolicy < ApplicationPolicy
4
- def respond_to_missing?(method, include_private = false)
5
- method.to_s[0...3] == "foo" || super
6
- end
7
-
8
- def method_missing(method, *args, &block)
9
- if method.to_s[0...3] == "foo"
10
- method.to_s[4...7] == "yes"
11
- else
12
- super
13
- end
14
- end
15
-
16
- class Scope
17
-
18
- attr_reader :user, :scope
19
-
20
- def initialize(user, scope)
21
- @user = user
22
- @scope = scope
23
- end
24
-
25
- def resolve
26
- scope
27
- end
28
- end
29
- end
30
-
31
- RSpec.describe ActiveAdmin::PunditAdapter do
32
-
33
- describe "full integration" do
34
-
35
- let(:application) { ActiveAdmin::Application.new }
36
- let(:namespace) { ActiveAdmin::Namespace.new(application, "Admin") }
37
- let(:resource) { namespace.register(Post) }
38
- let(:auth) { namespace.authorization_adapter.new(resource, double) }
39
- let(:default_policy_klass) { DefaultPolicy }
40
- let(:default_policy_klass_name) { "DefaultPolicy" }
41
-
42
- before do
43
- namespace.authorization_adapter = ActiveAdmin::PunditAdapter
44
- end
45
-
46
- it "should initialize the ability stored in the namespace configuration" do
47
- expect(auth.authorized?(:read, Post)).to eq true
48
- expect(auth.authorized?(:update, Post)).to eq false
49
- end
50
-
51
- it "should scope the collection" do
52
- class RSpec::Mocks::DoublePolicy < ApplicationPolicy
53
- class Scope < Struct.new(:user, :scope)
54
- def resolve
55
- scope
56
- end
57
- end
58
- end
59
-
60
- collection = double
61
- auth.scope_collection(collection, :read)
62
- expect(collection).to eq collection
63
- end
64
-
65
- it "works well with method_missing" do
66
- allow(auth).to receive(:retrieve_policy).and_return(DefaultPolicy.new(double, double))
67
- expect(auth.authorized?(:foo_no)).to eq false
68
- expect(auth.authorized?(:foo_yes)).to eq true
69
- expect(auth.authorized?(:bar_yes)).to eq false
70
- end
71
-
72
- context 'when Pundit is unable to find policy scope' do
73
- let(:collection) { double("collection", to_sym: :collection) }
74
- subject(:scope) { auth.scope_collection(collection, :read) }
75
-
76
- before do
77
- allow(ActiveAdmin.application).to receive(:pundit_default_policy).and_return default_policy_klass_name
78
- allow(Pundit).to receive(:policy_scope!) { raise Pundit::NotDefinedError.new }
79
- end
80
-
81
- it("should return default policy's scope if defined") { is_expected.to eq(collection) }
82
- end
83
-
84
- context "when Pundit is unable to find policy" do
85
- let(:record) { double }
86
-
87
- subject(:policy) { auth.retrieve_policy(record) }
88
-
89
- before do
90
- allow(ActiveAdmin.application).to receive(:pundit_default_policy).and_return default_policy_klass_name
91
- allow(Pundit).to receive(:policy!) { raise Pundit::NotDefinedError.new }
92
- end
93
-
94
- it("should return default policy instance") { is_expected.to be_instance_of(default_policy_klass) }
95
- end
96
- end
97
-
98
- end
@@ -1,69 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Resource::ActionItems do
4
-
5
- let(:resource) do
6
- namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
- namespace.register(Post)
8
- end
9
-
10
- describe "adding a new action item" do
11
-
12
- before do
13
- resource.clear_action_items!
14
- resource.add_action_item :empty, class: :test do
15
- # Empty ...
16
- end
17
- end
18
-
19
- it "should add an action item" do
20
- expect(resource.action_items.size).to eq 1
21
- end
22
-
23
- it "should store an instance of ActionItem" do
24
- expect(resource.action_items.first).to be_an_instance_of(ActiveAdmin::ActionItem)
25
- end
26
-
27
- it "should store the block in the action item" do
28
- expect(resource.action_items.first.block).to_not eq nil
29
- end
30
-
31
- it "should include class from options" do
32
- expect(resource.action_items.first.html_class).to eq("action_item test")
33
- end
34
-
35
- end
36
-
37
- describe "setting an action item to only display on specific controller actions" do
38
-
39
- before do
40
- resource.clear_action_items!
41
- resource.add_action_item :new, only: :index do
42
- raise StandardError
43
- end
44
- resource.add_action_item :edit, only: :show do
45
- # Empty ...
46
- end
47
- end
48
-
49
- it "should return only relevant action items" do
50
- expect(resource.action_items_for(:index).size).to eq 1
51
- expect {
52
- resource.action_items_for(:index).first.call
53
- }.to raise_exception(StandardError)
54
- end
55
-
56
- end
57
-
58
- describe "default action items" do
59
- it "should have 3 action items" do
60
- expect(resource.action_items.size).to eq 3
61
- end
62
-
63
- it 'can be removed by name' do
64
- resource.remove_action_item :new
65
- expect(resource.action_items.size).to eq 2
66
- end
67
- end
68
-
69
- end