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::Application, type: :request do
4
-
5
- include Rails.application.routes.url_helpers
6
-
7
- let(:resource) { ActiveAdmin.register Category }
8
-
9
- [false, nil].each do |value|
10
-
11
- describe "with a #{value} default namespace" do
12
-
13
- around do |example|
14
- with_custom_default_namespace(value) { example.call }
15
- end
16
-
17
- it "should generate resource paths" do
18
- expect(resource.route_collection_path).to eq "/categories"
19
- end
20
-
21
- it "should generate a log out path" do
22
- expect(destroy_admin_user_session_path).to eq "/logout"
23
- end
24
-
25
- it "should generate a log in path" do
26
- expect(new_admin_user_session_path).to eq "/login"
27
- end
28
-
29
- end
30
-
31
- end
32
-
33
- describe "with a test default namespace" do
34
-
35
- around do |example|
36
- with_custom_default_namespace(:test) { example.call }
37
- end
38
-
39
- it "should generate resource paths" do
40
- expect(resource.route_collection_path).to eq "/test/categories"
41
- end
42
-
43
- it "should generate a log out path" do
44
- expect(destroy_admin_user_session_path).to eq "/test/logout"
45
- end
46
-
47
- it "should generate a log in path" do
48
- expect(new_admin_user_session_path).to eq "/test/login"
49
- end
50
-
51
- end
52
-
53
- describe "with a namespace with underscores in the name" do
54
-
55
- around do |example|
56
- with_custom_default_namespace(:abc_123) { example.call }
57
- end
58
-
59
- it "should generate resource paths" do
60
- expect(resource.route_collection_path).to eq "/abc_123/categories"
61
- end
62
-
63
- it "should generate a log out path" do
64
- expect(destroy_admin_user_session_path).to eq "/abc_123/logout"
65
- end
66
-
67
- it "should generate a log in path" do
68
- expect(new_admin_user_session_path).to eq "/abc_123/login"
69
- end
70
-
71
- end
72
-
73
- private
74
-
75
- def with_custom_default_namespace(namespace)
76
- application = ActiveAdmin::Application.new
77
- application.default_namespace = namespace
78
-
79
- with_temp_application(application) { yield }
80
- end
81
- end
@@ -1,25 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe "Memory Leak", type: :request, if: RUBY_ENGINE == 'ruby' do
4
- before do
5
- load_defaults!
6
- end
7
-
8
- def count_instances_of(klass)
9
- ObjectSpace.each_object(klass) { }
10
- end
11
-
12
- [ActiveAdmin::Namespace, ActiveAdmin::Resource].each do |klass|
13
- it "should not leak #{klass}" do
14
- previously_disabled = GC.enable
15
- GC.start
16
- count = count_instances_of(klass)
17
-
18
- load_defaults!
19
-
20
- GC.start
21
- GC.disable if previously_disabled
22
- expect(count_instances_of klass).to be <= count
23
- end
24
- end
25
- end
@@ -1,18 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe "Stylesheets", type: :request do
4
-
5
- require "sprockets"
6
-
7
- let(:css) do
8
- assets = Rails.application.assets
9
- assets.find_asset("active_admin.css")
10
- end
11
- it "should successfully render the scss stylesheets using sprockets" do
12
- expect(css).to_not eq nil
13
- end
14
- it "should not have any syntax errors" do
15
- expect(css.to_s).to_not include("Syntax error:")
16
- end
17
-
18
- end
@@ -1 +0,0 @@
1
- require 'simplecov' if ENV["COVERAGE"] == "true"
@@ -1,73 +0,0 @@
1
- module ActiveAdminIntegrationSpecHelper
2
- extend self
3
-
4
- def load_defaults!
5
- ActiveAdmin.unload!
6
- ActiveAdmin.load!
7
- ActiveAdmin.register(Category)
8
- ActiveAdmin.register(User)
9
- ActiveAdmin.register(Post){ belongs_to :user, optional: true }
10
- reload_menus!
11
- end
12
-
13
- def reload_menus!
14
- ActiveAdmin.application.namespaces.each{|n| n.reset_menu! }
15
- end
16
-
17
- # Sometimes we need to reload the routes within
18
- # the application to test them out
19
- def reload_routes!
20
- Rails.application.reload_routes!
21
- end
22
-
23
- # Helper method to load resources and ensure that Active Admin is
24
- # setup with the new configurations.
25
- #
26
- # Eg:
27
- # load_resources do
28
- # ActiveAdmin.register(Post)
29
- # end
30
- #
31
- def load_resources
32
- ActiveAdmin.unload!
33
- yield
34
- reload_menus!
35
- reload_routes!
36
- end
37
-
38
- def arbre(assigns = {}, helpers = mock_action_view, &block)
39
- Arbre::Context.new(assigns, helpers, &block)
40
- end
41
-
42
- def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
43
- arbre(assigns, helpers, &block).children.first
44
- end
45
-
46
- # Returns a fake action view instance to use with our renderers
47
- def mock_action_view(assigns = {})
48
- controller = ActionView::TestCase::TestController.new
49
- #this line needed because of rails bug https://github.com/rails/rails/commit/d8e98897b5703ac49bf0764da71a06d64ecda9b0
50
- controller.params = ActionController::Parameters.new
51
- MockActionView.new(ActionController::Base.view_paths, assigns, controller)
52
- end
53
- alias_method :action_view, :mock_action_view
54
-
55
- # A mock action view to test view helpers
56
- class MockActionView < ::ActionView::Base
57
- include ActiveAdmin::ViewHelpers
58
- include Rails.application.routes.url_helpers
59
- end
60
-
61
- def with_translation(translation)
62
- # If no translations have been loaded, any later calls to `I18n.t` will
63
- # cause the full translation hash to be loaded, possibly overwritting what
64
- # we've loaded via `store_translations`. We use this hack to prevent that.
65
- # TODO: Might not be necessary anymore once
66
- # https://github.com/svenfuchs/i18n/pull/353 lands.
67
- I18n.backend.send(:init_translations)
68
- I18n.backend.store_translations I18n.locale, translation
69
- yield
70
- ensure
71
- I18n.backend.reload!
72
- end
73
- end
@@ -1,39 +0,0 @@
1
- require "action_dispatch"
2
- require "capybara/rails"
3
- require "capybara/dsl"
4
-
5
- module ActiveAdminRequestHelpers
6
- extend ActiveSupport::Concern
7
-
8
- include ActionDispatch::Integration::Runner
9
- include RSpec::Rails::TestUnitAssertionAdapter
10
- include ActionDispatch::Assertions
11
- include Capybara::DSL
12
- include RSpec::Matchers
13
-
14
- def app
15
- ::Rails.application
16
- end
17
-
18
- def last_response
19
- page
20
- end
21
-
22
- included do
23
- before do
24
- @router = ::Rails.application.routes
25
- end
26
- end
27
-
28
- def with_temp_application(application)
29
- original_application = ActiveAdmin.application
30
- ActiveAdmin.application = application
31
- load_defaults!
32
- reload_routes!
33
-
34
- yield
35
-
36
- ensure
37
- ActiveAdmin.application = original_application
38
- end
39
- end
@@ -1,153 +0,0 @@
1
- # Rails template to build the sample app for specs
2
-
3
- copy_file File.expand_path('../templates/manifest.js', __FILE__), 'app/assets/config/manifest.js', force: true
4
-
5
- create_file 'app/assets/stylesheets/some-random-css.css'
6
- create_file 'app/assets/javascripts/some-random-js.js'
7
- create_file 'app/assets/images/a/favicon.ico'
8
-
9
- generate :model, 'post title:string body:text published_date:date author_id:integer ' +
10
- 'position:integer custom_category_id:integer starred:boolean foo_id:integer'
11
- create_file 'app/models/post.rb', <<-RUBY.strip_heredoc, force: true
12
- class Post < ActiveRecord::Base
13
- belongs_to :category, foreign_key: :custom_category_id
14
- belongs_to :author, class_name: 'User'
15
- has_many :taggings
16
- accepts_nested_attributes_for :author
17
- accepts_nested_attributes_for :taggings, allow_destroy: true
18
-
19
- ransacker :custom_title_searcher do |parent|
20
- parent.table[:title]
21
- end
22
-
23
- ransacker :custom_created_at_searcher do |parent|
24
- parent.table[:created_at]
25
- end
26
-
27
- ransacker :custom_searcher_numeric, type: :numeric do
28
- # nothing to see here
29
- end
30
-
31
- end
32
- RUBY
33
- copy_file File.expand_path('../templates/post_decorator.rb', __FILE__), 'app/models/post_decorator.rb'
34
-
35
- generate :model, 'blog/post title:string body:text published_date:date author_id:integer ' +
36
- 'position:integer custom_category_id:integer starred:boolean foo_id:integer'
37
- create_file 'app/models/blog/post.rb', <<-RUBY.strip_heredoc, force: true
38
- class Blog::Post < ActiveRecord::Base
39
- belongs_to :category, foreign_key: :custom_category_id
40
- belongs_to :author, class_name: 'User'
41
- has_many :taggings
42
- accepts_nested_attributes_for :author
43
- accepts_nested_attributes_for :taggings, allow_destroy: true
44
-
45
- end
46
- RUBY
47
-
48
- generate :model, 'profile user_id:integer bio:text'
49
-
50
- generate :model, 'user type:string first_name:string last_name:string username:string age:integer'
51
- create_file 'app/models/user.rb', <<-RUBY.strip_heredoc, force: true
52
- class User < ActiveRecord::Base
53
- class VIP < self
54
- end
55
- has_many :posts, foreign_key: 'author_id'
56
- has_one :profile
57
- accepts_nested_attributes_for :profile, allow_destroy: true
58
- accepts_nested_attributes_for :posts, allow_destroy: true
59
-
60
- ransacker :age_in_five_years, type: :numeric, formatter: proc { |v| v.to_i - 5 } do |parent|
61
- parent.table[:age]
62
- end
63
-
64
- def display_name
65
- "\#{first_name} \#{last_name}"
66
- end
67
- end
68
- RUBY
69
-
70
- create_file 'app/models/profile.rb', <<-RUBY.strip_heredoc, force: true
71
- class Profile < ActiveRecord::Base
72
- belongs_to :user
73
- end
74
- RUBY
75
-
76
- generate :model, 'publisher --migration=false --parent=User'
77
-
78
- generate :model, 'category name:string description:text'
79
- create_file 'app/models/category.rb', <<-RUBY.strip_heredoc, force: true
80
- class Category < ActiveRecord::Base
81
- has_many :posts, foreign_key: :custom_category_id
82
- has_many :authors, through: :posts
83
- accepts_nested_attributes_for :posts
84
- end
85
- RUBY
86
-
87
- generate :model, 'store name:string'
88
-
89
- generate :model, 'tag name:string'
90
- create_file 'app/models/tag.rb', <<-RUBY.strip_heredoc, force: true
91
- class Tag < ActiveRecord::Base
92
- end
93
- RUBY
94
-
95
- generate :model, 'tagging post_id:integer tag_id:integer position:integer'
96
- create_file 'app/models/tagging.rb', <<-RUBY.strip_heredoc, force: true
97
- class Tagging < ActiveRecord::Base
98
- belongs_to :post
99
- belongs_to :tag
100
-
101
- delegate :name, to: :tag, prefix: true
102
- end
103
- RUBY
104
-
105
- gsub_file 'config/environments/test.rb', / config.cache_classes = true/, <<-RUBY
106
-
107
- config.cache_classes = !ENV['CLASS_RELOADING']
108
- config.action_mailer.default_url_options = {host: 'example.com'}
109
- config.assets.precompile += %w( some-random-css.css some-random-js.js a/favicon.ico )
110
-
111
- config.active_record.maintain_test_schema = false
112
-
113
- if Rails::VERSION::MAJOR >= 5
114
- config.active_record.belongs_to_required_by_default = false
115
- end
116
-
117
- RUBY
118
-
119
- # Add our local Active Admin to the application
120
- gem 'activeadmin', path: '../..'
121
- gem 'devise'
122
-
123
- run 'bundle install'
124
-
125
- # Setup Active Admin
126
- generate 'active_admin:install'
127
-
128
- # Force strong parameters to raise exceptions
129
- inject_into_file 'config/application.rb', <<-RUBY, after: 'class Application < Rails::Application'
130
-
131
- config.action_controller.action_on_unpermitted_parameters = :raise
132
-
133
- RUBY
134
-
135
- # Add some translations
136
- append_file 'config/locales/en.yml', File.read(File.expand_path('../templates/en.yml', __FILE__))
137
-
138
- # Add predefined admin resources
139
- directory File.expand_path('../templates/admin', __FILE__), 'app/admin'
140
-
141
- # Add predefined policies
142
- directory File.expand_path('../templates/policies', __FILE__), 'app/policies'
143
-
144
- if ENV['RAILS_ENV'] != 'test'
145
- inject_into_file 'config/routes.rb', "\n root to: redirect('admin')", after: /.*routes.draw do/
146
- end
147
-
148
- rake "db:drop db:create db:migrate", env: 'development'
149
- rake "db:drop db:create db:migrate", env: 'test'
150
-
151
- if ENV['INSTALL_PARALLEL']
152
- inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", after: 'test.sqlite3'
153
- end
@@ -1,327 +0,0 @@
1
- apply File.expand_path("../rails_template.rb", __FILE__)
2
-
3
- inject_into_file 'config/initializers/active_admin.rb', <<-RUBY, after: "ActiveAdmin.setup do |config|\n"
4
-
5
- config.comments_menu = { parent: 'Administrative' }
6
- RUBY
7
-
8
- inject_into_file 'app/admin/admin_users.rb', <<-RUBY, after: "ActiveAdmin.register AdminUser do\n"
9
-
10
- menu parent: "Administrative", priority: 1
11
- RUBY
12
-
13
- generate :'active_admin:page', 'KitchenSink'
14
-
15
- gsub_file 'app/admin/kitchen_sink.rb', /^ *content.*?end/m, <<-RUBY
16
-
17
- sidebar "Sample Sidebar" do
18
- para "Sidebars can also be used on custom pages."
19
- para do
20
- a "Active Admin", href: "https://github.com/activeadmin/activeadmin"
21
- text_node "is a Ruby on Rails framework for"
22
- em "creating elegant backends"
23
- text_node "for"
24
- strong "website administration."
25
- end
26
- para do
27
- abbr "HTML", title: "HyperText Markup Language"
28
- text_node "is the most basic building block of the Web."
29
- end
30
- end
31
-
32
- content do
33
- columns do
34
- column do
35
- panel "Panel title" do
36
- h1 "This is an h1"
37
- h2 "This is an h2"
38
- h3 "This is an h3"
39
- end
40
- end
41
- column do
42
- table_for User.all do
43
- column :id
44
- column :display_name
45
- column :username
46
- column :age
47
- column :updated_at
48
- end
49
- end
50
- end
51
-
52
- tabs do
53
- tab :first do
54
- ul do
55
- li "List item"
56
- li "Another list item"
57
- li "Last item"
58
- end
59
- ol do
60
- li "First list item"
61
- li "Second list item"
62
- li "Third list item"
63
- end
64
- end
65
- tab :second do
66
- para "A popular quote."
67
- blockquote do
68
- text_node "&ldqou;Be yourself; everyone else is already taken.&rdqou;".html_safe
69
- cite "― Oscar Wilde"
70
- end
71
- end
72
- tab :third do
73
- para "Third tab content."
74
- end
75
- end
76
- end
77
- RUBY
78
-
79
- %w{Post User Category Tag}.each do |type|
80
- generate :'active_admin:resource', type
81
- end
82
-
83
- inject_into_file 'app/admin/categories.rb', <<-RUBY, after: "ActiveAdmin.register Category do\n"
84
-
85
- config.create_another = true
86
-
87
- permit_params [:name, :description]
88
- RUBY
89
-
90
- inject_into_file 'app/admin/users.rb', <<-RUBY, after: "ActiveAdmin.register User do\n"
91
-
92
- config.create_another = true
93
-
94
- permit_params [:first_name, :last_name, :username, :age]
95
-
96
- index as: :grid do |user|
97
- div for: user do
98
- resource_selection_cell user
99
- h2 link_to(user.display_name, admin_user_path(user)), style: 'margin-bottom: 0'
100
- para do
101
- strong user.username, style: 'text-transform: uppercase; font-size: 10px;'
102
- br
103
- em user.age
104
- text_node 'years old'
105
- end
106
- end
107
- end
108
-
109
- show do
110
- attributes_table do
111
- row :id
112
- row :first_name
113
- row :last_name
114
- row :username
115
- row :age
116
- row :created_at
117
- row :updated_at
118
- end
119
-
120
- panel 'Posts' do
121
- table_for(user.posts.includes(:category).order(:updated_at).limit(10)) do
122
- column :id do |post|
123
- link_to post.id, admin_post_path(post)
124
- end
125
- column :title
126
- column :published_date
127
- column :category
128
- column :created_at
129
- column :updated_at
130
- end
131
- para do
132
- link_to "View all posts", admin_posts_path('q[author_id_eq]' => user.id)
133
- end
134
- end
135
- end
136
- RUBY
137
-
138
- inject_into_file 'app/admin/posts.rb', <<-'RUBY', after: "ActiveAdmin.register Post do\n"
139
-
140
- permit_params :custom_category_id, :author_id, :title, :body, :published_date, :position, :starred, taggings_attributes: [ :id, :tag_id, :name, :position, :_destroy ]
141
-
142
- includes :author, :category, :taggings
143
-
144
- scope :all, default: true
145
-
146
- scope :drafts do |posts|
147
- posts.where(["published_date IS NULL"])
148
- end
149
-
150
- scope :scheduled do |posts|
151
- posts.where(["posts.published_date IS NOT NULL AND posts.published_date > ?", Time.now.utc])
152
- end
153
-
154
- scope :published do |posts|
155
- posts.where(["posts.published_date IS NOT NULL AND posts.published_date < ?", Time.now.utc])
156
- end
157
-
158
- scope :my_posts do |posts|
159
- posts.where(author_id: current_admin_user.id)
160
- end
161
-
162
- batch_action :set_starred, form: { starred: :checkbox } do |ids, inputs|
163
- Post.where(id: ids).update_all(starred: inputs['starred'].present?)
164
- redirect_to collection_path, notice: "The posts have been updated."
165
- end
166
-
167
- index do
168
- selectable_column
169
- id_column
170
- column :title
171
- column :published_date
172
- column :author
173
- column :category
174
- column :starred
175
- column :position
176
- column :created_at
177
- column :updated_at
178
- end
179
-
180
- sidebar :author, only: :show do
181
- attributes_table_for post.author do
182
- row :id do |author|
183
- link_to author.id, admin_user_path(author)
184
- end
185
- row :first_name
186
- row :last_name
187
- row :username
188
- row :age
189
- end
190
- end
191
-
192
- member_action :toggle_starred, method: :put do
193
- resource.update(starred: !resource.starred)
194
- redirect_to resource_path, notice: "Post updated."
195
- end
196
-
197
- action_item :toggle_starred, only: :show do
198
- link_to 'Toggle Starred', toggle_starred_admin_post_path(post), method: :put
199
- end
200
-
201
- show do |post|
202
- attributes_table do
203
- row :id
204
- row :title
205
- row :published_date
206
- row :author
207
- row :body
208
- row :category
209
- row :starred
210
- row :position
211
- row :created_at
212
- row :updated_at
213
- end
214
-
215
- columns do
216
- column do
217
- panel 'Tags' do
218
- table_for(post.taggings.order(:position)) do
219
- column :id do |tagging|
220
- link_to tagging.tag_id, admin_tag_path(tagging.tag)
221
- end
222
- column :tag, &:tag_name
223
- column :position
224
- column :updated_at
225
- end
226
- end
227
- end
228
- column do
229
- panel 'Category' do
230
- attributes_table_for post.category do
231
- row :id do |category|
232
- link_to category.id, admin_category_path(category)
233
- end
234
- row :description
235
- end
236
- end
237
- end
238
- end
239
- end
240
-
241
- form do |f|
242
- columns do
243
- column do
244
- f.inputs 'Details' do
245
- f.input :title
246
- f.input :author
247
- f.input :published_date,
248
- hint: f.object.persisted? && "Created at #{f.object.created_at}"
249
- f.input :custom_category_id
250
- f.input :category
251
- f.input :position
252
- f.input :starred
253
- end
254
- end
255
- column do
256
- f.inputs 'Content' do
257
- f.input :body
258
- end
259
- end
260
- end
261
- f.inputs "Tags" do
262
- f.has_many :taggings, sortable: :position do |t|
263
- t.input :tag
264
- t.input :_destroy, as: :boolean
265
- end
266
- end
267
- para "Press cancel to return to the list without saving."
268
- f.actions
269
- end
270
- RUBY
271
-
272
- inject_into_file 'app/admin/tags.rb', <<-RUBY, after: "ActiveAdmin.register Tag do\n"
273
-
274
- config.create_another = true
275
-
276
- permit_params [:name]
277
-
278
- index do
279
- selectable_column
280
- id_column
281
- column :name
282
- column :created_at
283
- actions dropdown: true do |tag|
284
- item "Preview", admin_tag_path(tag)
285
- end
286
- end
287
-
288
- RUBY
289
-
290
- append_file "db/seeds.rb", "\n\n" + <<-RUBY.strip_heredoc
291
- users = ["Jimi Hendrix", "Jimmy Page", "Yngwie Malmsteen", "Eric Clapton", "Kirk Hammett"].collect do |name|
292
- first, last = name.split(" ")
293
- User.create! first_name: first,
294
- last_name: last,
295
- username: [first,last].join('-').downcase,
296
- age: rand(80)
297
- end
298
-
299
- categories = ["Rock", "Pop Rock", "Alt-Country", "Blues", "Dub-Step"].collect do |name|
300
- Category.create! name: name
301
- end
302
-
303
- published_at_values = [Time.now.utc - 5.days, Time.now.utc - 1.day, nil, Time.now.utc + 3.days]
304
-
305
- 1_000.times do |i|
306
- user = users[i % users.size]
307
- cat = categories[i % categories.size]
308
- published = published_at_values[i % published_at_values.size]
309
- Post.create title: "Blog Post \#{i}",
310
- body: "Blog post \#{i} is written by \#{user.username} about \#{cat.name}",
311
- category: cat,
312
- published_date: published,
313
- author: user,
314
- starred: true
315
- end
316
-
317
- 800.times do |i|
318
- ActiveAdmin::Comment.create!(
319
- namespace: :admin,
320
- author: AdminUser.first,
321
- body: "Test comment #{i}",
322
- resource: categories.sample,
323
- )
324
- end
325
- RUBY
326
-
327
- rake 'db:seed'