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,7 +0,0 @@
1
- ActiveAdmin.register Store do
2
-
3
- permit_params :name
4
-
5
- index pagination_total: false
6
-
7
- end
@@ -1,8 +0,0 @@
1
- # Sample translations used to test ActiveAdmin's I18n integration.
2
- activerecord:
3
- models:
4
- store:
5
- one: Bookstore
6
- other: Bookstores
7
- active_admin:
8
- download: "Download this:"
@@ -1,3 +0,0 @@
1
- //= link_tree ../images
2
- //= link_directory ../javascripts .js
3
- //= link_directory ../stylesheets .css
@@ -1,9 +0,0 @@
1
- module ActiveAdmin
2
- class CommentPolicy < ApplicationPolicy
3
- class Scope < Struct.new(:user, :scope)
4
- def resolve
5
- scope
6
- end
7
- end
8
- end
9
- end
@@ -1,18 +0,0 @@
1
- module ActiveAdmin
2
- class PagePolicy < ApplicationPolicy
3
- class Scope < Struct.new(:user, :scope)
4
- def resolve
5
- scope
6
- end
7
- end
8
-
9
- def show?
10
- case record.name
11
- when "Dashboard"
12
- true
13
- else
14
- false
15
- end
16
- end
17
- end
18
- end
@@ -1,11 +0,0 @@
1
- class AdminUserPolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
-
8
- def destroy?
9
- record != user
10
- end
11
- end
@@ -1,44 +0,0 @@
1
- class ApplicationPolicy
2
- attr_reader :user, :record
3
-
4
- def initialize(user, record)
5
- @user = user
6
- @record = record
7
- end
8
-
9
- def index?
10
- true
11
- end
12
-
13
- def show?
14
- scope.where(id: record.id).exists?
15
- end
16
-
17
- def new?
18
- create?
19
- end
20
-
21
- def create?
22
- true
23
- end
24
-
25
- def edit?
26
- update?
27
- end
28
-
29
- def update?
30
- true
31
- end
32
-
33
- def destroy?
34
- true
35
- end
36
-
37
- def destroy_all?
38
- true
39
- end
40
-
41
- def scope
42
- Pundit.policy_scope!(user, record.class)
43
- end
44
- end
@@ -1,7 +0,0 @@
1
- class CategoryPolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
- end
@@ -1,15 +0,0 @@
1
- class PostPolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
-
8
- def update?
9
- record.author == user
10
- end
11
-
12
- def destroy?
13
- update?
14
- end
15
- end
@@ -1,11 +0,0 @@
1
- class StorePolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
-
8
- def destroy?
9
- false
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- class UserPolicy < ApplicationPolicy
2
- class Scope < Struct.new(:user, :scope)
3
- def resolve
4
- scope
5
- end
6
- end
7
-
8
- def destroy_all?
9
- true
10
- end
11
- end
@@ -1,24 +0,0 @@
1
- require 'draper'
2
-
3
- class PostDecorator < Draper::Decorator
4
- decorates :post
5
- delegate_all
6
-
7
- # @param attributes [Hash]
8
- def assign_attributes(attributes)
9
- object.assign_attributes attributes.except(:virtual_title)
10
- self.virtual_title = attributes.fetch(:virtual_title) if attributes.key?(:virtual_title)
11
- end
12
-
13
- def virtual_title
14
- object.title
15
- end
16
-
17
- def virtual_title=(virtual_title)
18
- object.title = virtual_title
19
- end
20
-
21
- def decorator_method
22
- 'A method only available on the decorator'
23
- end
24
- end
@@ -1,78 +0,0 @@
1
- require 'rails_helper'
2
-
3
- require 'active_admin/abstract_view_factory'
4
-
5
- RSpec.describe ActiveAdmin::AbstractViewFactory do
6
-
7
- let(:view_factory){ ActiveAdmin::AbstractViewFactory.new }
8
- let(:view){ Class.new }
9
-
10
- describe "registering a new view key" do
11
- before do
12
- view_factory.register my_new_view_class: view
13
- end
14
-
15
- it "should respond to :my_new_view_class" do
16
- expect(view_factory.respond_to? :my_new_view_class).to be true
17
- end
18
-
19
- it "should respond to :my_new_view_class=" do
20
- expect(view_factory.respond_to? :my_new_view_class=).to be true
21
- end
22
-
23
- it "should generate a getter method" do
24
- expect(view_factory.my_new_view_class).to eq view
25
- end
26
-
27
- it "should be settable view a setter method" do
28
- view_factory.my_new_view_class = "Some Obj"
29
- expect(view_factory.my_new_view_class).to eq "Some Obj"
30
- end
31
- end
32
-
33
- describe "array syntax access" do
34
- before do
35
- view_factory.register my_new_view_class: view
36
- end
37
-
38
- it "should be available through array syntax" do
39
- expect(view_factory[:my_new_view_class]).to eq view
40
- end
41
-
42
- it "should be settable through array syntax" do
43
- view_factory[:my_new_view_class] = "My New View Class"
44
- expect(view_factory[:my_new_view_class]).to eq "My New View Class"
45
- end
46
- end
47
-
48
- describe "registering default views" do
49
- before do
50
- ActiveAdmin::AbstractViewFactory.register my_default_view_class: view
51
- end
52
- it "should generate a getter method" do
53
- expect(view_factory.my_default_view_class).to eq view
54
- end
55
- it "should be settable view a setter method and not change default" do
56
- view_factory.my_default_view_class = "Some Obj"
57
- expect(view_factory.my_default_view_class).to eq "Some Obj"
58
- expect(view_factory.default_for(:my_default_view_class)).to eq view
59
- end
60
- end
61
-
62
- describe "subclassing the ViewFactory" do
63
- let(:subclass) do
64
- ActiveAdmin::AbstractViewFactory.register my_subclassed_view: "From Parent"
65
- Class.new(ActiveAdmin::AbstractViewFactory) do
66
- def my_subclassed_view
67
- "From Subclass"
68
- end
69
- end
70
- end
71
-
72
- it "should use the subclass implementation" do
73
- factory = subclass.new
74
- expect(factory.my_subclassed_view).to eq "From Subclass"
75
- end
76
- end
77
-
78
- end
@@ -1,158 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe 'defining actions from registration blocks', type: :controller do
4
- let(:klass){ Admin::PostsController }
5
-
6
- before do
7
- load_resources { action! }
8
-
9
- @controller = klass.new
10
- end
11
-
12
- describe 'creates a member action' do
13
- after(:each) do
14
- klass.clear_member_actions!
15
- end
16
-
17
- context 'with a block' do
18
- let(:action!) do
19
- ActiveAdmin.register Post do
20
- member_action :comment do
21
- # Do nothing
22
- end
23
- end
24
- end
25
-
26
- it 'should create a new public instance method' do
27
- expect(klass.public_instance_methods.collect(&:to_s)).to include('comment')
28
- end
29
-
30
- it 'should add itself to the member actions config' do
31
- expect(klass.active_admin_config.member_actions.size).to eq 1
32
- end
33
-
34
- it 'should create a new named route' do
35
- expect(Rails.application.routes.url_helpers.methods.collect(&:to_s)).to include('comment_admin_post_path')
36
- end
37
- end
38
-
39
- context 'without a block' do
40
- let(:action!) do
41
- ActiveAdmin.register Post do
42
- member_action :comment
43
- end
44
- end
45
-
46
- it 'should still generate a new empty action' do
47
- expect(klass.public_instance_methods.collect(&:to_s)).to include('comment')
48
- end
49
- end
50
-
51
- context 'with :title' do
52
- let(:action!) do
53
- ActiveAdmin.register Post do
54
- member_action :comment, title: 'My Awesome Comment' do
55
- render json: {a: 2}
56
- end
57
- end
58
- end
59
-
60
- it 'sets the page title' do
61
- params = {id: 1}
62
- params = {params: params} if ActiveAdmin::Dependency.rails5?
63
- get :comment, params
64
-
65
- expect(controller.instance_variable_get(:@page_title)).to eq 'My Awesome Comment'
66
- end
67
- end
68
- end
69
-
70
- describe 'creates a collection action' do
71
- after(:each) do
72
- klass.clear_collection_actions!
73
- end
74
-
75
- context 'with a block' do
76
- let(:action!) do
77
- ActiveAdmin.register Post do
78
- collection_action :comments do
79
- # Do nothing
80
- end
81
- end
82
- end
83
-
84
- it 'should create a public instance method' do
85
- expect(klass.public_instance_methods.collect(&:to_s)).to include('comments')
86
- end
87
-
88
- it 'should add itself to the member actions config' do
89
- expect(klass.active_admin_config.collection_actions.size).to eq 1
90
- end
91
-
92
- it 'should create a named route' do
93
- expect(Rails.application.routes.url_helpers.methods.collect(&:to_s)).to include('comments_admin_posts_path')
94
- end
95
- end
96
-
97
- context 'without a block' do
98
- let(:action!) do
99
- ActiveAdmin.register Post do
100
- collection_action :comments
101
- end
102
- end
103
-
104
- it 'should still generate a new empty action' do
105
- expect(klass.public_instance_methods.collect(&:to_s)).to include('comments')
106
- end
107
- end
108
-
109
- context 'with :title' do
110
- let(:action!) do
111
- ActiveAdmin.register Post do
112
- collection_action :comments, title: 'My Awesome Comments' do
113
- render json: {a: 2}
114
- end
115
- end
116
- end
117
-
118
- it 'sets the page title' do
119
- get :comments
120
-
121
- expect(controller.instance_variable_get(:@page_title)).to eq 'My Awesome Comments'
122
- end
123
- end
124
- end
125
-
126
- context 'when method with given name is already defined' do
127
- around :each do |example|
128
- original_stderr = $stderr
129
- $stderr = StringIO.new
130
- example.run
131
- $stderr = original_stderr
132
- end
133
-
134
- describe 'defining member action' do
135
- let :action! do
136
- ActiveAdmin.register Post do
137
- member_action :process
138
- end
139
- end
140
-
141
- it 'writes warning to $stderr' do
142
- expect($stderr.string).to include('Warning: method `process` already defined')
143
- end
144
- end
145
-
146
- describe 'defining collection action' do
147
- let :action! do
148
- ActiveAdmin.register Post do
149
- collection_action :process
150
- end
151
- end
152
-
153
- it 'writes warning to $stderr' do
154
- expect($stderr.string).to include('Warning: method `process` already defined')
155
- end
156
- end
157
- end
158
- end
@@ -1,11 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe ActiveAdmin do
4
- %w(register register_page unload! load! routes).each do |method|
5
- it "delegates ##{method} to application" do
6
- expect(ActiveAdmin.application).to receive(method)
7
-
8
- ActiveAdmin.send(method)
9
- end
10
- end
11
- end
@@ -1,184 +0,0 @@
1
- require 'rails_helper'
2
- require 'fileutils'
3
-
4
- RSpec.describe ActiveAdmin::Application do
5
-
6
- let(:application) { ActiveAdmin::Application.new }
7
-
8
- around do |example|
9
- old_load_paths = application.load_paths
10
- # TODO: Figure out why load paths need to be overriden
11
- application.load_paths = [File.expand_path('app/admin', Rails.root)]
12
-
13
- example.call
14
-
15
- application.load_paths = old_load_paths
16
- end
17
-
18
- it "should have a default load path of ['app/admin']" do
19
- expect(application.load_paths).to eq [File.expand_path('app/admin', Rails.root)]
20
- end
21
-
22
- it "should remove app/admin from the autoload paths (Active Admin deals with loading)" do
23
- expect(ActiveSupport::Dependencies.autoload_paths).to_not include(File.join(Rails.root, "app/admin"))
24
- end
25
-
26
- it "should store the site's title" do
27
- expect(application.site_title).to eq ""
28
- end
29
-
30
- it "should set the site title" do
31
- application.site_title = "New Title"
32
- expect(application.site_title).to eq "New Title"
33
- end
34
-
35
- it "should store the site's title link" do
36
- expect(application.site_title_link).to eq ""
37
- end
38
-
39
- it "should set the site's title link" do
40
- application.site_title_link = "http://www.mygreatsite.com"
41
- expect(application.site_title_link).to eq "http://www.mygreatsite.com"
42
- end
43
-
44
- it "should store the site's title image" do
45
- expect(application.site_title_image).to eq ""
46
- end
47
-
48
- it "should set the site's title image" do
49
- application.site_title_image = "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
50
- expect(application.site_title_image).to eq "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
51
- end
52
-
53
- it "should store the site's favicon" do
54
- expect(application.favicon).to eq false
55
- end
56
-
57
- it "should return default localize format" do
58
- expect(application.localize_format).to eq :long
59
- end
60
-
61
- it "should set localize format" do
62
- application.localize_format = :default
63
- expect(application.localize_format).to eq :default
64
- end
65
-
66
- it "should set the site's favicon" do
67
- application.favicon = "/a/favicon.ico"
68
- expect(application.favicon).to eq "/a/favicon.ico"
69
- end
70
-
71
- it "should store meta tags" do
72
- expect(application.meta_tags).to eq({})
73
- end
74
-
75
- it "should set meta tags" do
76
- application.meta_tags = { author: "My Company" }
77
- expect(application.meta_tags).to eq(author: "My Company")
78
- end
79
-
80
- it "should contains robots meta tags by default" do
81
- result = application.meta_tags_for_logged_out_pages
82
- expect(result).to eq(robots: "noindex, nofollow")
83
- end
84
-
85
- it "should set meta tags for logged out pages" do
86
- value = { author: "My Company" }
87
- application.meta_tags_for_logged_out_pages = value
88
- expect(application.meta_tags_for_logged_out_pages).to eq value
89
- end
90
-
91
- it "should have a view factory" do
92
- expect(application.view_factory).to be_an_instance_of(ActiveAdmin::ViewFactory)
93
- end
94
-
95
- it "should allow comments by default" do
96
- expect(application.comments).to eq true
97
- end
98
-
99
- it "should have default order clause class" do
100
- expect(application.order_clause).to eq ActiveAdmin::OrderClause
101
- end
102
-
103
- it "should have default show_count for scopes" do
104
- expect(application.scopes_show_count).to eq true
105
- end
106
-
107
- describe "authentication settings" do
108
-
109
- it "should have no default current_user_method" do
110
- expect(application.current_user_method).to eq false
111
- end
112
-
113
- it "should have no default authentication method" do
114
- expect(application.authentication_method).to eq false
115
- end
116
-
117
- it "should have a logout link path (Devise's default)" do
118
- expect(application.logout_link_path).to eq :destroy_admin_user_session_path
119
- end
120
-
121
- it "should have a logout link method (Devise's default)" do
122
- expect(application.logout_link_method).to eq :get
123
- end
124
- end
125
-
126
- describe "files in load path" do
127
- it "should load files in the first level directory" do
128
- expect(application.files).to include(File.expand_path("app/admin/dashboard.rb", Rails.root))
129
- end
130
-
131
- it "should load files from subdirectories" do
132
- test_dir = File.expand_path("app/admin/public", Rails.root)
133
- test_file = File.expand_path("app/admin/public/posts.rb", Rails.root)
134
-
135
- begin
136
- FileUtils.mkdir_p(test_dir)
137
- FileUtils.touch(test_file)
138
- expect(application.files).to include(test_file)
139
- ensure
140
- FileUtils.remove_entry_secure(test_dir, force: true)
141
- end
142
- end
143
- end
144
-
145
- describe "#namespace" do
146
-
147
- it "should yield a new namespace" do
148
- application.namespace :new_namespace do |ns|
149
- expect(ns.name).to eq :new_namespace
150
- end
151
- end
152
-
153
- it "should return an instantiated namespace" do
154
- admin = application.namespace :admin
155
- expect(admin).to eq application.namespaces[:admin]
156
- end
157
-
158
- it "should yield an existing namespace" do
159
- expect {
160
- application.namespace :admin do |ns|
161
- expect(ns).to eq application.namespaces[:admin]
162
- raise "found"
163
- end
164
- }.to raise_error("found")
165
- end
166
-
167
- it "should not pollute the global app" do
168
- expect(application.namespaces).to be_empty
169
- application.namespace(:brand_new_ns)
170
- expect(application.namespaces.names).to eq [:brand_new_ns]
171
- expect(ActiveAdmin.application.namespaces.names).to eq [:admin]
172
- end
173
- end
174
-
175
- describe "#register_page" do
176
- it "finds or create the namespace and register the page to it" do
177
- namespace = double
178
- expect(application).to receive(:namespace).with("public").and_return namespace
179
- expect(namespace).to receive(:register_page).with("My Page", {namespace: "public"})
180
- application.register_page("My Page", namespace: "public")
181
- end
182
- end
183
-
184
- end