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,67 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::Tabs do
4
- describe "creating with the dsl" do
5
- context "when creating tabs with a symbol" do
6
- before do
7
- expect(I18n).to receive(:t).at_least(:once).with(:tab_key).and_return "テスト"
8
- end
9
-
10
- let(:tabs) do
11
- render_arbre_component do
12
- tabs do
13
- tab :overview
14
- tab I18n.t(:tab_key), { id: :something_unique }
15
- end
16
- end
17
- end
18
-
19
- let(:subject) { Capybara.string(tabs.to_s) }
20
-
21
- it "should create a tab navigation bar based on the symbol" do
22
- expect(subject).to have_content('Overview')
23
- end
24
-
25
- it "should have tab with id based on symbol" do
26
- expect(subject).to have_selector('div#overview')
27
- end
28
-
29
- it "should have link with fragment based on symbol" do
30
- expect(subject).to have_selector('a[href="#overview"]')
31
- end
32
-
33
- it "should handle translation" do
34
- expect(subject).to have_content('テスト')
35
- end
36
-
37
- it "should have tab with id based on options" do
38
- expect(subject).to have_selector('div#something_unique')
39
- end
40
-
41
- it "should have link with fragment based on options" do
42
- expect(subject).to have_selector('a[href="#something_unique"]')
43
- end
44
-
45
- end
46
-
47
- context "when creating a tab with a block" do
48
- let(:tabs) do
49
- render_arbre_component do
50
- tabs do
51
- tab :overview do
52
- span 'tab 1'
53
- end
54
- end
55
- end
56
- end
57
-
58
- it "should create a tab navigation bar based on the symbol" do
59
- expect(tabs.find_by_tag('li').first.content).to include "Overview"
60
- end
61
-
62
- it "should create a tab with a span inside of it" do
63
- expect(tabs.find_by_tag('span').first.content).to eq('tab 1')
64
- end
65
- end
66
- end
67
- end
@@ -1,41 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::UnsupportedBrowser do
4
- let(:helpers){ mock_action_view }
5
- let(:namespace) { double :namespace, unsupported_browser_matcher: /MSIE [1-8]\.0/ }
6
- let(:component) { double :unsupported_browser_component }
7
- let(:view_factory) { double :view_factory, unsupported_browser: component }
8
- let(:base) { ActiveAdmin::Views::Pages::Base.new }
9
-
10
- def build_panel
11
- render_arbre_component({}, helpers) do
12
- insert_tag ActiveAdmin::Views::UnsupportedBrowser
13
- end
14
- end
15
-
16
- it "should render the panel" do
17
- expect(I18n).to receive(:t).and_return("headline", "recommendation" , "turn_off_compatibility_view")
18
- expect(build_panel.content.gsub(/\s+/, "")).to eq "<h1>headline</h1><p>recommendation</p><p>turn_off_compatibility_view</p>"
19
- end
20
-
21
- describe "ActiveAdmin::Views::Pages::Base behavior" do
22
- context "when the reqex match" do
23
- it "should build the unsupported browser panel" do
24
- expect(base).to receive(:active_admin_namespace).and_return(namespace)
25
- expect(base).to receive_message_chain(:controller, :request, :user_agent).and_return("Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0)")
26
- expect(base).to receive(:view_factory).and_return(view_factory)
27
- expect(base).to receive(:insert_tag).with(component)
28
- base.send(:build_unsupported_browser)
29
- end
30
- end
31
-
32
- context "when the regex not match" do
33
- it "should not build the unsupported browser panel" do
34
- expect(base).to receive(:active_admin_namespace).and_return(namespace)
35
- expect(base).to receive_message_chain(:controller, :request, :user_agent).and_return("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)")
36
- expect(base).to receive(:insert_tag).never
37
- base.send(:build_unsupported_browser)
38
- end
39
- end
40
- end
41
- end
@@ -1,76 +0,0 @@
1
- require 'rails_helper'
2
-
3
- include ActiveAdmin
4
- RSpec.describe ActiveAdmin::Views::IndexAsBlog do
5
- subject { described_class.new }
6
-
7
- describe '#build' do
8
- let(:page_presenter) { double('page_presenter', block: nil) }
9
- let(:collection) { double('collection') }
10
-
11
- before do
12
- expect(subject).to receive('build_posts')
13
- expect(subject).to receive('add_class').with('index')
14
- end
15
-
16
- context 'when page_presenter has no block' do
17
- before do
18
- subject.build(page_presenter, collection)
19
- end
20
-
21
- it do
22
- expect(subject.instance_variable_get(:@page_presenter))
23
- .to eq(page_presenter)
24
- expect(subject.instance_variable_get(:@collection)).to eq(collection)
25
- end
26
- end
27
-
28
- context 'when page_presenter has block' do
29
- let(:block) { Proc.new { double('proc_method') } }
30
-
31
- before do
32
- allow(page_presenter).to receive(:block).and_return(block)
33
- allow(subject).to receive('instance_exec')
34
- subject.build(page_presenter, collection)
35
- end
36
-
37
- it do
38
- expect(subject).to have_received('instance_exec')
39
- end
40
- end
41
- end
42
-
43
- %w(title body).each do |method|
44
- describe "#{method}" do
45
- context 'when block given' do
46
- let(:block_result) { double('block_result') }
47
-
48
- it "should use the block to set the #{method}" do
49
- expect(
50
- subject.public_send("#{method}") do
51
- block_result
52
- end.yield
53
- ).to eq(block_result)
54
- end
55
- end
56
-
57
- context 'when no block and method given' do
58
- let(:method) { double('method') }
59
-
60
- it "should use method to set the #{method}" do
61
- expect(subject.public_send("#{method}", method)).to eq(method)
62
- end
63
- end
64
-
65
- context 'when no block and no method given' do
66
- it 'should be nil' do
67
- expect(subject.public_send("#{method}")).to eq(nil)
68
- end
69
- end
70
- end
71
- end
72
-
73
- describe '.index_name' do
74
- it { expect(described_class.index_name).to eq('blog') }
75
- end
76
- end
@@ -1,54 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::Pages::Form do
4
- describe "#title" do
5
- let!(:application){ ActiveAdmin::Application.new }
6
- let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
- let!(:http_params){ { controller: "UsersController", action: "edit" } }
8
- let!(:params) { ActionController::Parameters.new(http_params) }
9
-
10
- let(:helpers) do
11
- helpers = mock_action_view
12
- allow(helpers).to receive(:active_admin_config).and_return(namespace.register(Post))
13
- allow(helpers).to receive(:params).and_return(params)
14
- helpers
15
- end
16
-
17
- let(:arbre_context) do
18
- OpenStruct.new(params: params, helpers: helpers, assigns: {})
19
- end
20
-
21
- context "when :title is set" do
22
- it "should show the set page title" do
23
-
24
- page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
25
- expect(page).to receive(:resource)
26
- expect(page).to receive(:form_presenter).twice.and_return({ title: "My Page Title" })
27
- expect(page.title).to eq "My Page Title"
28
- end
29
- end
30
-
31
- context "when page_title is assigned" do
32
- it "should show the set page title" do
33
- arbre_context.assigns[:page_title] = "My Page Title"
34
- page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
35
- expect(page.title).to eq "My Page Title"
36
- end
37
- end
38
-
39
- context "when page_title is not assigned" do
40
- {
41
- "new" => "New Post",
42
- "create" => "New Post",
43
- "edit" => "Edit Post",
44
- "update" => "Edit Post"
45
- }.each do |action, title|
46
- it "should show the correct I18n text on the #{action} action" do
47
- params[:action] = action
48
- page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
49
- expect(page.title).to eq title
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,60 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::Pages::Index do
4
- describe "#title" do
5
- let!(:application){ ActiveAdmin::Application.new }
6
- let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
- let!(:params){ ActionController::Parameters.new(controller: "UsersController", action: "edit") }
8
- let(:helpers) do
9
- helpers = mock_action_view
10
- allow(helpers).to receive(:active_admin_config).and_return(namespace.register(Post))
11
- allow(helpers).to receive(:params).and_return(params)
12
- helpers
13
- end
14
-
15
- let(:arbre_context) do
16
- OpenStruct.new(params: params, helpers: helpers, assigns: {})
17
- end
18
-
19
- context "when config[:title] is assigned" do
20
- context "with a Proc" do
21
- it "should return the value of the assigned Proc" do
22
- page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
23
- allow(page).to receive(:config).and_return(title: ->{ "My Page Title" })
24
- expect(page.title).to eq "My Page Title"
25
- end
26
- end
27
-
28
- context "with a String" do
29
- it "should return the assigned String" do
30
- page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
31
- allow(page).to receive(:config).and_return(title: ->{ "My Page Title" })
32
- expect(page.title).to eq "My Page Title"
33
- end
34
- end
35
-
36
- context "with a Integer" do
37
- it "should return the Integer" do
38
- page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
39
- allow(page).to receive(:config).and_return(title: 1)
40
- expect(page.title).to eq 1
41
- end
42
- end
43
- end
44
-
45
- context "when page_title is assigned" do
46
- it "should return the set page title" do
47
- arbre_context.assigns[:page_title] = "My Page Title"
48
- page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
49
- expect(page.title).to eq "My Page Title"
50
- end
51
- end
52
-
53
- context "when page_title is not assigned" do
54
- it "should return the correct I18n text" do
55
- page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
56
- expect(page.title).to eq "Posts"
57
- end
58
- end
59
- end
60
- end
@@ -1,59 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::Pages::Layout do
4
-
5
- let(:assigns){ {} }
6
- let(:helpers) do
7
- helpers = mock_action_view
8
-
9
- { active_admin_application: active_admin_application,
10
- active_admin_config: double('Config', action_items?: nil, breadcrumb: nil, sidebar_sections?: nil),
11
- active_admin_namespace: active_admin_namespace,
12
- csrf_meta_tag: '',
13
- current_active_admin_user: nil,
14
- current_active_admin_user?: false,
15
- current_menu: double('Menu', items: []),
16
- params: {controller: 'UsersController', action: 'edit'},
17
- env: {}
18
- }.each do |method, returns|
19
- allow(helpers).to receive(method).and_return returns
20
- end
21
-
22
- helpers
23
- end
24
-
25
- let(:active_admin_namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :myspace) }
26
- let(:active_admin_application){ ActiveAdmin.application }
27
- let(:view_factory) { ActiveAdmin::ViewFactory.new }
28
-
29
- let(:layout) do
30
- render_arbre_component assigns, helpers do
31
- insert_tag ActiveAdmin::Views::Pages::Layout
32
- end
33
- end
34
-
35
- it "should be the @page_title if assigned in the controller" do
36
- assigns[:page_title] = "My Page Title"
37
-
38
- expect(layout.title).to eq "My Page Title"
39
- end
40
-
41
- it "should be the default translation" do
42
- helpers.params[:action] = "edit"
43
-
44
- expect(layout.title).to eq "Edit"
45
- end
46
-
47
- describe "the body" do
48
-
49
- it "should have class 'active_admin'" do
50
- expect(layout.build.class_list).to include 'active_admin'
51
- end
52
-
53
- it "should have namespace class" do
54
- expect(layout.build.class_list).to include "#{active_admin_namespace.name}_namespace"
55
- end
56
-
57
- end
58
-
59
- end
@@ -1,32 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::Pages::Show do
4
-
5
- describe "the resource" do
6
- let(:helpers) { double resource: resource }
7
- let(:arbre_context) { Arbre::Context.new({}, helpers) }
8
- subject(:page) { ActiveAdmin::Views::Pages::Show.new(arbre_context) }
9
-
10
- context 'when the resource does not respond to #decorator' do
11
- let(:resource) { 'Test Resource' }
12
-
13
- it "normally returns the resource" do
14
- expect(page.resource).to eq 'Test Resource'
15
- end
16
- end
17
-
18
- context 'when you pass a block to main content' do
19
- let(:block) { lambda { } }
20
- let(:resource) { double('resource') }
21
-
22
- before { allow(page).to receive(:active_admin_config).and_return(double(comments?: false, resource_columns: [:field]))}
23
-
24
- it 'appends it to the output' do
25
- expect(page).to receive(:attributes_table).with(:field).and_yield
26
- page.default_main_content(&block)
27
- end
28
- end
29
-
30
- end
31
-
32
- end
@@ -1,158 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin::Views::TabbedNavigation do
4
-
5
- let(:menu){ ActiveAdmin::Menu.new }
6
-
7
- let(:assigns){ { active_admin_menu: menu } }
8
- let(:helpers){ mock_action_view }
9
-
10
- let(:tabbed_navigation) do
11
- arbre(assigns, helpers) {
12
- insert_tag(ActiveAdmin::Views::TabbedNavigation, active_admin_menu)
13
- }.children.first
14
- end
15
-
16
- let(:html) { Capybara.string(tabbed_navigation.to_s) }
17
-
18
- before do
19
- load_resources { ActiveAdmin.register Post }
20
- allow(helpers).to receive(:admin_logged_in?).and_return(false)
21
- end
22
-
23
- describe "rendering a menu" do
24
-
25
- before do
26
- menu.add label: "Blog Posts", url: :admin_posts_path
27
-
28
- menu.add label: "Reports", url: "/admin/reports" do |reports|
29
- reports.add label: "A Sub Reports", url: "/admin/a-sub-reports"
30
- reports.add label: "B Sub Reports", url: "/admin/b-sub-reports"
31
- reports.add label: proc{ "Label Proc Sub Reports" }, url: "/admin/label-proc-sub-reports", id: "Label Proc Sub Reports"
32
- end
33
-
34
- menu.add label: "Administration", url: "/admin/administration" do |administration|
35
- administration.add label: "User administration",
36
- url: '/admin/user-administration',
37
- priority: 10,
38
- if: proc { false }
39
- end
40
-
41
- menu.add label: "Management", url: "#" do |management|
42
- management.add label: "Order management",
43
- url: '/admin/order-management',
44
- priority: 10,
45
- if: proc { false }
46
- management.add label: "Bill management",
47
- url: '/admin/bill-management',
48
- priority: 10,
49
- if: :admin_logged_in?
50
- end
51
-
52
- menu.add label: "Charles Smith", id: "current_user", url: -> { nil }
53
- end
54
-
55
- it "should generate a ul" do
56
- expect(html).to have_selector("ul")
57
- end
58
-
59
- it "should generate an li for each item" do
60
- expect(html).to have_selector("ul > li")
61
- end
62
-
63
- it "should generate a link for each item" do
64
- expect(html).to have_selector("a[href='/admin/posts']", text: "Blog Posts")
65
- end
66
-
67
- it "should generate a nested list for children" do
68
- expect(html).to have_selector("li > ul")
69
- end
70
-
71
- it "should generate a nested list with li for each child" do
72
- expect(html).to have_selector("ul > li#a_sub_reports")
73
- expect(html).to have_selector("ul > li#b_sub_reports")
74
- end
75
-
76
- it "should generate a valid id from a label proc" do
77
- expect(html).to have_selector("ul > li#label_proc_sub_reports")
78
- end
79
-
80
- it "should not generate a link for user administration" do
81
- expect(html).to_not have_selector("a[href='/admin/user-administration']", text: "User administration")
82
- end
83
-
84
- it "should generate the administration parent menu" do
85
- expect(html).to have_selector("a[href='/admin/administration']", text: "Administration")
86
- end
87
-
88
- it "should not generate a link for order management" do
89
- expect(html).to_not have_selector("a[href='/admin/order-management']", text: "Order management")
90
- end
91
-
92
- it "should not generate a link for bill management" do
93
- expect(html).to_not have_selector("a[href='/admin/bill-management']", text: "Bill management")
94
- end
95
-
96
- it "should not generate the management parent menu" do
97
- expect(html).to_not have_selector("a[href='#']", text: "Management")
98
- end
99
-
100
- context "when url is nil" do
101
- it "should generate a span" do
102
- selector = "li#current_user > span"
103
- expect(html).to have_selector(selector, text: "Charles Smith")
104
- end
105
- end
106
-
107
- describe "marking current item" do
108
-
109
- it "should add the 'current' class to the li" do
110
- assigns[:current_tab] = menu["Blog Posts"]
111
- expect(html).to have_selector("li.current")
112
- end
113
-
114
- it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
115
- assigns[:current_tab] = menu["Reports"]["A Sub Reports"]
116
- expect(html).to have_selector("li#reports.current")
117
- expect(html).to have_selector("li#reports.has_nested")
118
- expect(html).to have_selector("li#a_sub_reports.current")
119
- end
120
-
121
- end
122
-
123
- end
124
-
125
- describe "returning the menu items to display" do
126
-
127
- it "should return one item with no if block" do
128
- menu.add label: "Hello World", url: "/"
129
- expect(tabbed_navigation.menu_items).to eq menu.items
130
- end
131
-
132
- it "should not include menu items with an if block that returns false" do
133
- menu.add label: "Don't Show", url: "/", priority: 10, if: proc{ false }
134
- expect(tabbed_navigation.menu_items).to be_empty
135
- end
136
-
137
- it "should not include menu items with an if block that calls a method that returns false" do
138
- menu.add label: "Don't Show", url: "/", priority: 10, if: :admin_logged_in?
139
- expect(tabbed_navigation.menu_items).to be_empty
140
- end
141
-
142
- it "should not display any items that have no children to display" do
143
- menu.add label: "Parent", url: "#" do |p|
144
- p.add label: "Child", url: "/", priority: 10, if: proc{ false }
145
- end
146
- expect(tabbed_navigation.menu_items).to be_empty
147
- end
148
-
149
- it "should display a parent that has a child to display" do
150
- menu.add label: "Parent", url: "#" do |p|
151
- p.add label: "Hidden Child", url: "/", priority: 10, if: proc{ false }
152
- p.add label: "Child", url: "/"
153
- end
154
- expect(tabbed_navigation.menu_items.size).to eq(1)
155
- end
156
-
157
- end
158
- end