activeadmin 1.0.0.pre1 → 2.9.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 (595) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +587 -939
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/CONTRIBUTING.md +110 -59
  5. data/LICENSE +0 -5
  6. data/README.md +80 -61
  7. data/app/assets/javascripts/active_admin/base.js +517 -0
  8. data/app/assets/stylesheets/active_admin/_base.scss +31 -34
  9. data/app/assets/stylesheets/active_admin/_forms.scss +33 -35
  10. data/app/assets/stylesheets/active_admin/_header.scss +40 -8
  11. data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
  12. data/app/assets/stylesheets/active_admin/_normalize.scss +447 -0
  13. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  14. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -5
  15. data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
  16. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  17. data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
  18. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -4
  19. data/app/assets/stylesheets/active_admin/components/_tables.scss +5 -3
  20. data/app/assets/stylesheets/active_admin/components/_tabs.scss +1 -1
  21. data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -11
  22. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +1 -1
  23. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -1
  24. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
  25. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +9 -1
  26. data/app/assets/stylesheets/active_admin/print.scss +3 -4
  27. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -5
  29. data/app/javascript/active_admin/base.js +28 -0
  30. data/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  31. data/app/javascript/active_admin/ext/jquery.js +9 -0
  32. data/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  33. data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  34. data/app/javascript/active_admin/initializers/datepicker.js +16 -0
  35. data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  36. data/app/javascript/active_admin/initializers/filters.js +10 -0
  37. data/app/javascript/active_admin/initializers/has-many.js +95 -0
  38. data/app/javascript/active_admin/initializers/per-page.js +13 -0
  39. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  40. data/app/javascript/active_admin/initializers/tabs.js +6 -0
  41. data/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  42. data/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  43. data/app/javascript/active_admin/lib/filters.js +39 -0
  44. data/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  45. data/app/javascript/active_admin/lib/per-page.js +38 -0
  46. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  47. data/app/javascript/active_admin/lib/utils.js +40 -0
  48. data/app/views/active_admin/devise/confirmations/new.html.erb +2 -2
  49. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  50. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
  51. data/app/views/active_admin/devise/passwords/edit.html.erb +2 -2
  52. data/app/views/active_admin/devise/passwords/new.html.erb +2 -2
  53. data/app/views/active_admin/devise/registrations/new.html.erb +3 -4
  54. data/app/views/active_admin/devise/sessions/new.html.erb +2 -2
  55. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  56. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  57. data/app/views/active_admin/devise/unlocks/new.html.erb +2 -2
  58. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  59. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  60. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  61. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  62. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  63. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  64. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  65. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  66. data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  67. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  68. data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  69. data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  70. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  71. data/app/views/layouts/active_admin_logged_out.html.erb +21 -7
  72. data/config/locales/ar.yml +62 -47
  73. data/config/locales/az.yml +138 -0
  74. data/config/locales/bg.yml +1 -3
  75. data/config/locales/bs.yml +1 -2
  76. data/config/locales/ca.yml +2 -4
  77. data/config/locales/cs.yml +1 -2
  78. data/config/locales/da.yml +45 -14
  79. data/config/locales/de-CH.yml +4 -3
  80. data/config/locales/de.yml +46 -3
  81. data/config/locales/el.yml +3 -4
  82. data/config/locales/en-CA.yml +139 -0
  83. data/config/locales/en-GB.yml +46 -5
  84. data/config/locales/en.yml +44 -9
  85. data/config/locales/eo.yml +145 -0
  86. data/config/locales/es-MX.yml +9 -6
  87. data/config/locales/es.yml +63 -14
  88. data/config/locales/fa.yml +1 -2
  89. data/config/locales/fi.yml +2 -3
  90. data/config/locales/fr.yml +36 -8
  91. data/config/locales/he.yml +53 -7
  92. data/config/locales/hr.yml +1 -2
  93. data/config/locales/hu.yml +6 -3
  94. data/config/locales/id.yml +135 -0
  95. data/config/locales/it.yml +49 -4
  96. data/config/locales/ja.yml +31 -7
  97. data/config/locales/ko.yml +66 -36
  98. data/config/locales/lt.yml +27 -6
  99. data/config/locales/lv.yml +3 -4
  100. data/config/locales/mk.yml +134 -0
  101. data/config/locales/nb.yml +22 -8
  102. data/config/locales/nl.yml +26 -3
  103. data/config/locales/pl.yml +75 -5
  104. data/config/locales/pt-BR.yml +24 -2
  105. data/config/locales/pt-PT.yml +1 -2
  106. data/config/locales/ro.yml +1 -2
  107. data/config/locales/ru.yml +21 -4
  108. data/config/locales/sk.yml +168 -0
  109. data/config/locales/sv-SE.yml +50 -8
  110. data/config/locales/tr.yml +92 -45
  111. data/config/locales/uk.yml +30 -16
  112. data/config/locales/vi.yml +53 -12
  113. data/config/locales/zh-CN.yml +44 -7
  114. data/config/locales/zh-TW.yml +42 -3
  115. data/docs/.gitignore +1 -0
  116. data/docs/0-installation.md +68 -18
  117. data/docs/1-general-configuration.md +88 -4
  118. data/docs/10-custom-pages.md +56 -2
  119. data/docs/11-decorators.md +20 -5
  120. data/docs/12-arbre-components.md +75 -11
  121. data/docs/13-authorization-adapter.md +73 -36
  122. data/docs/14-gotchas.md +64 -18
  123. data/docs/2-resource-customization.md +91 -23
  124. data/docs/3-index-pages/custom-index.md +5 -1
  125. data/docs/3-index-pages/index-as-block.md +3 -5
  126. data/docs/3-index-pages/index-as-blog.md +4 -6
  127. data/docs/3-index-pages/index-as-grid.md +3 -5
  128. data/docs/3-index-pages/index-as-table.md +46 -9
  129. data/docs/3-index-pages.md +73 -10
  130. data/docs/4-csv-format.md +35 -0
  131. data/docs/5-forms.md +96 -18
  132. data/docs/6-show-pages.md +13 -25
  133. data/docs/7-sidebars.md +13 -1
  134. data/docs/8-custom-actions.md +18 -1
  135. data/docs/9-batch-actions.md +9 -5
  136. data/docs/CNAME +1 -0
  137. data/docs/Gemfile +3 -0
  138. data/docs/Gemfile.lock +259 -0
  139. data/docs/_config.yml +4 -0
  140. data/docs/_includes/footer.html +8 -0
  141. data/docs/_includes/google-analytics.html +16 -0
  142. data/docs/_includes/head.html +7 -0
  143. data/docs/_includes/toc.html +98 -0
  144. data/docs/_includes/top-menu.html +17 -0
  145. data/docs/_layouts/default.html +21 -0
  146. data/docs/documentation.md +60 -0
  147. data/docs/images/activeadmin.png +0 -0
  148. data/docs/images/code-header.png +0 -0
  149. data/docs/images/divider.png +0 -0
  150. data/docs/images/features.png +0 -0
  151. data/docs/images/tidelift.svg +14 -0
  152. data/docs/index.html +226 -0
  153. data/docs/stylesheets/main.css +1205 -0
  154. data/lib/active_admin/abstract_view_factory.rb +13 -51
  155. data/lib/active_admin/application.rb +105 -138
  156. data/lib/active_admin/application_settings.rb +42 -0
  157. data/lib/active_admin/authorization_adapter.rb +4 -7
  158. data/lib/active_admin/base_controller/authorization.rb +16 -21
  159. data/lib/active_admin/base_controller/menu.rb +10 -10
  160. data/lib/active_admin/base_controller.rb +15 -11
  161. data/lib/active_admin/batch_actions/controller.rb +6 -7
  162. data/lib/active_admin/batch_actions/resource_extension.rb +15 -15
  163. data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -4
  164. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -7
  165. data/lib/active_admin/batch_actions/views/selection_cells.rb +7 -6
  166. data/lib/active_admin/batch_actions.rb +0 -1
  167. data/lib/active_admin/callbacks.rb +2 -2
  168. data/lib/active_admin/cancan_adapter.rb +1 -1
  169. data/lib/active_admin/collection_decorator.rb +31 -0
  170. data/lib/active_admin/controller_action.rb +2 -1
  171. data/lib/active_admin/csv_builder.rb +30 -20
  172. data/lib/active_admin/dependency.rb +36 -29
  173. data/lib/active_admin/deprecation.rb +0 -25
  174. data/lib/active_admin/devise.rb +9 -9
  175. data/lib/active_admin/dsl.rb +5 -18
  176. data/lib/active_admin/dynamic_setting.rb +38 -0
  177. data/lib/active_admin/dynamic_settings_node.rb +28 -0
  178. data/lib/active_admin/engine.rb +14 -7
  179. data/lib/active_admin/error.rb +6 -6
  180. data/lib/active_admin/filters/active.rb +29 -0
  181. data/lib/active_admin/filters/active_filter.rb +123 -0
  182. data/lib/active_admin/filters/active_sidebar.rb +54 -0
  183. data/lib/active_admin/filters/forms.rb +17 -10
  184. data/lib/active_admin/filters/formtastic_addons.rb +2 -7
  185. data/lib/active_admin/filters/resource_extension.rb +50 -14
  186. data/lib/active_admin/filters.rb +7 -5
  187. data/lib/active_admin/form_builder.rb +112 -67
  188. data/lib/active_admin/generators/boilerplate.rb +53 -0
  189. data/lib/active_admin/helpers/collection.rb +2 -0
  190. data/lib/active_admin/helpers/optional_display.rb +2 -2
  191. data/lib/active_admin/helpers/routes/url_helpers.rb +1 -1
  192. data/lib/active_admin/helpers/scope_chain.rb +1 -0
  193. data/lib/active_admin/inputs/datepicker_input.rb +13 -6
  194. data/lib/active_admin/inputs/filters/base/search_method_select.rb +9 -9
  195. data/lib/active_admin/inputs/filters/base.rb +3 -1
  196. data/lib/active_admin/inputs/filters/boolean_input.rb +1 -1
  197. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -1
  198. data/lib/active_admin/inputs/filters/date_picker_input.rb +13 -0
  199. data/lib/active_admin/inputs/filters/date_range_input.rb +25 -9
  200. data/lib/active_admin/inputs/filters/select_input.rb +8 -4
  201. data/lib/active_admin/inputs/filters/text_input.rb +25 -0
  202. data/lib/active_admin/inputs.rb +2 -0
  203. data/lib/active_admin/localizers/resource_localizer.rb +35 -0
  204. data/lib/active_admin/localizers.rb +11 -0
  205. data/lib/active_admin/menu.rb +13 -15
  206. data/lib/active_admin/menu_collection.rb +0 -2
  207. data/lib/active_admin/menu_item.rb +10 -38
  208. data/lib/active_admin/namespace.rb +51 -32
  209. data/lib/active_admin/namespace_settings.rb +126 -0
  210. data/lib/active_admin/order_clause.rb +30 -8
  211. data/lib/active_admin/orm/active_record/comments/comment.rb +6 -20
  212. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +44 -21
  213. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  214. data/lib/active_admin/orm/active_record/comments.rb +49 -29
  215. data/lib/active_admin/orm/active_record.rb +1 -1
  216. data/lib/active_admin/page.rb +24 -5
  217. data/lib/active_admin/page_controller.rb +2 -2
  218. data/lib/active_admin/page_dsl.rb +5 -1
  219. data/lib/active_admin/page_presenter.rb +2 -1
  220. data/lib/active_admin/pundit_adapter.rb +22 -9
  221. data/lib/active_admin/resource/action_items.rb +34 -12
  222. data/lib/active_admin/resource/attributes.rb +47 -0
  223. data/lib/active_admin/resource/belongs_to.rb +17 -4
  224. data/lib/active_admin/resource/controllers.rb +1 -1
  225. data/lib/active_admin/resource/menu.rb +9 -6
  226. data/lib/active_admin/resource/model.rb +15 -0
  227. data/lib/active_admin/resource/naming.rb +5 -5
  228. data/lib/active_admin/resource/ordering.rb +11 -0
  229. data/lib/active_admin/resource/page_presenters.rb +1 -1
  230. data/lib/active_admin/resource/pagination.rb +4 -0
  231. data/lib/active_admin/resource/routes.rb +56 -26
  232. data/lib/active_admin/resource/scope_to.rb +7 -7
  233. data/lib/active_admin/resource/scopes.rb +5 -3
  234. data/lib/active_admin/resource/sidebars.rb +2 -2
  235. data/lib/active_admin/resource.rb +80 -22
  236. data/lib/active_admin/resource_collection.rb +5 -3
  237. data/lib/active_admin/resource_controller/action_builder.rb +10 -0
  238. data/lib/active_admin/resource_controller/data_access.rb +56 -43
  239. data/lib/active_admin/resource_controller/decorators.rb +9 -31
  240. data/lib/active_admin/resource_controller/polymorphic_routes.rb +37 -0
  241. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -0
  242. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  243. data/lib/active_admin/resource_controller/streaming.rb +12 -5
  244. data/lib/active_admin/resource_controller.rb +26 -10
  245. data/lib/active_admin/resource_dsl.rb +67 -21
  246. data/lib/active_admin/router.rb +90 -82
  247. data/lib/active_admin/scope.rb +21 -14
  248. data/lib/active_admin/settings_node.rb +19 -0
  249. data/lib/active_admin/sidebar_section.rb +6 -12
  250. data/lib/active_admin/version.rb +1 -1
  251. data/lib/active_admin/view_factory.rb +17 -18
  252. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -2
  253. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +5 -5
  254. data/lib/active_admin/view_helpers/display_helper.rb +51 -9
  255. data/lib/active_admin/view_helpers/download_format_links_helper.rb +14 -1
  256. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  257. data/lib/active_admin/view_helpers/form_helper.rb +2 -2
  258. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +11 -4
  259. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  260. data/lib/active_admin/view_helpers.rb +2 -2
  261. data/lib/active_admin/views/action_items.rb +1 -1
  262. data/lib/active_admin/views/components/active_admin_form.rb +45 -13
  263. data/lib/active_admin/views/components/attributes_table.rb +11 -29
  264. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  265. data/lib/active_admin/views/components/columns.rb +12 -7
  266. data/lib/active_admin/views/components/dropdown_menu.rb +11 -13
  267. data/lib/active_admin/views/components/index_list.rb +6 -5
  268. data/lib/active_admin/views/components/menu.rb +32 -0
  269. data/lib/active_admin/views/components/menu_item.rb +58 -0
  270. data/lib/active_admin/views/components/paginated_collection.rb +52 -33
  271. data/lib/active_admin/views/components/panel.rb +2 -4
  272. data/lib/active_admin/views/components/scopes.rb +20 -12
  273. data/lib/active_admin/views/components/sidebar.rb +13 -0
  274. data/lib/active_admin/views/components/sidebar_section.rb +6 -1
  275. data/lib/active_admin/views/components/site_title.rb +6 -7
  276. data/lib/active_admin/views/components/status_tag.rb +19 -23
  277. data/lib/active_admin/views/components/table_for.rb +31 -57
  278. data/lib/active_admin/views/components/tabs.rb +17 -5
  279. data/lib/active_admin/views/footer.rb +15 -4
  280. data/lib/active_admin/views/header.rb +3 -16
  281. data/lib/active_admin/views/index_as_blog.rb +3 -4
  282. data/lib/active_admin/views/index_as_grid.rb +28 -28
  283. data/lib/active_admin/views/index_as_table.rb +76 -28
  284. data/lib/active_admin/views/pages/base.rb +45 -58
  285. data/lib/active_admin/views/pages/form.rb +5 -2
  286. data/lib/active_admin/views/pages/index.rb +15 -13
  287. data/lib/active_admin/views/pages/layout.rb +1 -1
  288. data/lib/active_admin/views/pages/show.rb +9 -3
  289. data/lib/active_admin/views/tabbed_navigation.rb +4 -59
  290. data/lib/active_admin/views/title_bar.rb +6 -6
  291. data/lib/active_admin/views.rb +1 -1
  292. data/lib/active_admin.rb +69 -67
  293. data/lib/activeadmin.rb +1 -1
  294. data/lib/generators/active_admin/assets/assets_generator.rb +3 -3
  295. data/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  296. data/lib/generators/active_admin/assets/templates/{active_admin.css.scss → active_admin.scss} +3 -3
  297. data/lib/generators/active_admin/devise/devise_generator.rb +17 -26
  298. data/lib/generators/active_admin/install/install_generator.rb +18 -8
  299. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +107 -5
  300. data/lib/generators/active_admin/install/templates/{admin_user.rb.erb → admin_users.rb.erb} +1 -3
  301. data/lib/generators/active_admin/install/templates/dashboard.rb +2 -3
  302. data/lib/generators/active_admin/install/templates/migrations/{create_active_admin_comments.rb → create_active_admin_comments.rb.erb} +2 -5
  303. data/lib/generators/active_admin/page/page_generator.rb +1 -1
  304. data/lib/generators/active_admin/page/templates/page.rb +1 -1
  305. data/lib/generators/active_admin/resource/resource_generator.rb +8 -2
  306. data/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  307. data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  308. data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  309. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  310. data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  311. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +26 -0
  312. data/lib/ransack_ext.rb +11 -3
  313. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  314. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  315. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  316. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  317. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  318. data/vendor/assets/javascripts/jquery-ui/form.js +22 -0
  319. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  320. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  321. data/vendor/assets/javascripts/jquery-ui/labels.js +65 -0
  322. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  323. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  324. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  325. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  326. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  327. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  328. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  329. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  330. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  331. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  332. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  333. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  334. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  335. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  336. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  337. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  338. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  339. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  340. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  341. metadata +182 -553
  342. data/.gitignore +0 -49
  343. data/.hound.yml +0 -11
  344. data/.travis.yml +0 -42
  345. data/.yardopts +0 -8
  346. data/Gemfile +0 -54
  347. data/Guardfile +0 -8
  348. data/Rakefile +0 -33
  349. data/activeadmin.gemspec +0 -28
  350. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  351. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  352. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  353. data/app/assets/images/active_admin/orderable.png +0 -0
  354. data/app/assets/javascripts/active_admin/application.js.coffee +0 -32
  355. data/app/assets/javascripts/active_admin/base.js.coffee +0 -14
  356. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +0 -6
  357. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +0 -7
  358. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +0 -39
  359. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +0 -36
  360. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +0 -101
  361. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +0 -19
  362. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +0 -79
  363. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +0 -37
  364. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +0 -27
  365. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +0 -68
  366. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +0 -24
  367. data/app/assets/stylesheets/active_admin/components/_popovers.scss +0 -122
  368. data/app/assets/stylesheets/active_admin/mixins/_icons.scss +0 -20
  369. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  370. data/cucumber.yml +0 -3
  371. data/features/action_item.feature +0 -73
  372. data/features/authorization.feature +0 -64
  373. data/features/authorization_cancan.feature +0 -52
  374. data/features/authorization_pundit.feature +0 -37
  375. data/features/belongs_to.feature +0 -66
  376. data/features/breadcrumb.feature +0 -75
  377. data/features/comments/commenting.feature +0 -171
  378. data/features/comments/viewing_index.feature +0 -19
  379. data/features/dashboard.feature +0 -16
  380. data/features/decorators.feature +0 -41
  381. data/features/development_reloading.feature +0 -30
  382. data/features/edit_page.feature +0 -117
  383. data/features/favicon.feature +0 -20
  384. data/features/first_boot.feature +0 -16
  385. data/features/global_navigation.feature +0 -29
  386. data/features/i18n.feature +0 -43
  387. data/features/index/batch_actions.feature +0 -164
  388. data/features/index/filters.feature +0 -161
  389. data/features/index/format_as_csv.feature +0 -203
  390. data/features/index/formats.feature +0 -66
  391. data/features/index/index_as_block.feature +0 -15
  392. data/features/index/index_as_blog.feature +0 -69
  393. data/features/index/index_as_grid.feature +0 -45
  394. data/features/index/index_as_table.feature +0 -291
  395. data/features/index/index_blank_slate.feature +0 -83
  396. data/features/index/index_parameters.feature +0 -75
  397. data/features/index/index_scope_to.feature +0 -56
  398. data/features/index/index_scopes.feature +0 -251
  399. data/features/index/page_title.feature +0 -41
  400. data/features/index/pagination.feature +0 -59
  401. data/features/index/switch_index_view.feature +0 -73
  402. data/features/menu.feature +0 -53
  403. data/features/new_page.feature +0 -109
  404. data/features/registering_assets.feature +0 -35
  405. data/features/registering_pages.feature +0 -148
  406. data/features/registering_resources.feature +0 -33
  407. data/features/renamed_resource.feature +0 -32
  408. data/features/root_to.feature +0 -17
  409. data/features/show/default_content.feature +0 -43
  410. data/features/show/page_title.feature +0 -58
  411. data/features/show/tabs.feature +0 -27
  412. data/features/sidebar_sections.feature +0 -210
  413. data/features/site_title.feature +0 -47
  414. data/features/specifying_actions.feature +0 -93
  415. data/features/step_definitions/action_item_steps.rb +0 -7
  416. data/features/step_definitions/action_link_steps.rb +0 -20
  417. data/features/step_definitions/additional_web_steps.rb +0 -81
  418. data/features/step_definitions/asset_steps.rb +0 -15
  419. data/features/step_definitions/attribute_steps.rb +0 -18
  420. data/features/step_definitions/batch_action_steps.rb +0 -72
  421. data/features/step_definitions/blog_steps.rb +0 -3
  422. data/features/step_definitions/breadcrumb_steps.rb +0 -3
  423. data/features/step_definitions/comment_steps.rb +0 -12
  424. data/features/step_definitions/configuration_steps.rb +0 -100
  425. data/features/step_definitions/dashboard_steps.rb +0 -15
  426. data/features/step_definitions/factory_steps.rb +0 -34
  427. data/features/step_definitions/filter_steps.rb +0 -39
  428. data/features/step_definitions/flash_steps.rb +0 -11
  429. data/features/step_definitions/format_steps.rb +0 -52
  430. data/features/step_definitions/i18n_steps.rb +0 -3
  431. data/features/step_definitions/index_scope_steps.rb +0 -21
  432. data/features/step_definitions/index_views_steps.rb +0 -3
  433. data/features/step_definitions/layout_steps.rb +0 -3
  434. data/features/step_definitions/member_link_steps.rb +0 -7
  435. data/features/step_definitions/menu_steps.rb +0 -11
  436. data/features/step_definitions/pagination_steps.rb +0 -7
  437. data/features/step_definitions/sidebar_steps.rb +0 -13
  438. data/features/step_definitions/site_title_steps.rb +0 -17
  439. data/features/step_definitions/symbol_leak_steps.rb +0 -3
  440. data/features/step_definitions/tab_steps.rb +0 -8
  441. data/features/step_definitions/table_steps.rb +0 -119
  442. data/features/step_definitions/user_steps.rb +0 -45
  443. data/features/step_definitions/web_steps.rb +0 -85
  444. data/features/sti_resource.feature +0 -65
  445. data/features/strong_parameters.feature +0 -73
  446. data/features/support/env.rb +0 -145
  447. data/features/support/paths.rb +0 -71
  448. data/features/support/selectors.rb +0 -45
  449. data/features/symbol_leak.feature +0 -35
  450. data/features/users/logging_in.feature +0 -34
  451. data/features/users/logging_out.feature +0 -13
  452. data/features/users/resetting_password.feature +0 -34
  453. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +0 -28
  454. data/lib/active_admin/event.rb +0 -33
  455. data/lib/active_admin/helpers/settings.rb +0 -115
  456. data/lib/active_admin/iconic/icons.rb +0 -142
  457. data/lib/active_admin/iconic.rb +0 -53
  458. data/lib/active_admin/view_helpers/icon_helper.rb +0 -12
  459. data/lib/active_admin/views/components/action_list_popover.rb +0 -29
  460. data/lib/active_admin/views/components/popover.rb +0 -27
  461. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +0 -1
  462. data/lib/generators/active_admin/resource/templates/admin.rb +0 -18
  463. data/script/local +0 -44
  464. data/script/travis_cache +0 -107
  465. data/script/use_rails +0 -53
  466. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
  467. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
  468. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +0 -82
  469. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
  470. data/spec/javascripts/fixtures/checkboxes.html +0 -9
  471. data/spec/javascripts/fixtures/flashes.html +0 -2
  472. data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
  473. data/spec/javascripts/helpers/SpecHelper.js +0 -3
  474. data/spec/javascripts/support/jasmine.yml +0 -74
  475. data/spec/javascripts/support/jasmine_config.rb +0 -23
  476. data/spec/javascripts/support/jasmine_runner.rb +0 -32
  477. data/spec/rails_helper.rb +0 -154
  478. data/spec/requests/default_namespace_spec.rb +0 -61
  479. data/spec/requests/javascript_spec.rb +0 -20
  480. data/spec/requests/memory_spec.rb +0 -23
  481. data/spec/requests/stylesheets_spec.rb +0 -18
  482. data/spec/spec_helper.rb +0 -17
  483. data/spec/support/deferred_garbage_collection.rb +0 -19
  484. data/spec/support/detect_rails_version.rb +0 -34
  485. data/spec/support/integration_example_group.rb +0 -31
  486. data/spec/support/jslint.yml +0 -80
  487. data/spec/support/rails_template.rb +0 -138
  488. data/spec/support/rails_template_with_data.rb +0 -59
  489. data/spec/support/templates/admin/stores.rb +0 -9
  490. data/spec/support/templates/cucumber.rb +0 -24
  491. data/spec/support/templates/cucumber_with_reloading.rb +0 -5
  492. data/spec/support/templates/en.yml +0 -8
  493. data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
  494. data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
  495. data/spec/support/templates/policies/admin_user_policy.rb +0 -11
  496. data/spec/support/templates/policies/application_policy.rb +0 -45
  497. data/spec/support/templates/policies/category_policy.rb +0 -7
  498. data/spec/support/templates/policies/post_policy.rb +0 -15
  499. data/spec/support/templates/policies/store_policy.rb +0 -11
  500. data/spec/support/templates/policies/user_policy.rb +0 -11
  501. data/spec/support/templates/post_decorator.rb +0 -11
  502. data/spec/unit/abstract_view_factory_spec.rb +0 -79
  503. data/spec/unit/action_builder_spec.rb +0 -132
  504. data/spec/unit/active_admin_spec.rb +0 -11
  505. data/spec/unit/application_spec.rb +0 -140
  506. data/spec/unit/asset_registration_spec.rb +0 -52
  507. data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
  508. data/spec/unit/authorization/controller_authorization_spec.rb +0 -39
  509. data/spec/unit/authorization/index_overriding_spec.rb +0 -22
  510. data/spec/unit/auto_link_spec.rb +0 -69
  511. data/spec/unit/batch_actions/resource_spec.rb +0 -92
  512. data/spec/unit/batch_actions/settings_spec.rb +0 -61
  513. data/spec/unit/belongs_to_spec.rb +0 -51
  514. data/spec/unit/cancan_adapter_spec.rb +0 -43
  515. data/spec/unit/comments_spec.rb +0 -166
  516. data/spec/unit/component_spec.rb +0 -18
  517. data/spec/unit/config_shared_examples.rb +0 -59
  518. data/spec/unit/controller_filters_spec.rb +0 -44
  519. data/spec/unit/csv_builder_spec.rb +0 -244
  520. data/spec/unit/dependency_spec.rb +0 -135
  521. data/spec/unit/devise_spec.rb +0 -96
  522. data/spec/unit/dsl_spec.rb +0 -122
  523. data/spec/unit/event_spec.rb +0 -47
  524. data/spec/unit/filters/filter_form_builder_spec.rb +0 -433
  525. data/spec/unit/filters/resource_spec.rb +0 -121
  526. data/spec/unit/form_builder_spec.rb +0 -752
  527. data/spec/unit/generators/install_spec.rb +0 -23
  528. data/spec/unit/helpers/collection_spec.rb +0 -65
  529. data/spec/unit/helpers/scope_chain_spec.rb +0 -36
  530. data/spec/unit/helpers/settings_spec.rb +0 -30
  531. data/spec/unit/i18n_spec.rb +0 -12
  532. data/spec/unit/menu_collection_spec.rb +0 -62
  533. data/spec/unit/menu_item_spec.rb +0 -143
  534. data/spec/unit/menu_spec.rb +0 -71
  535. data/spec/unit/namespace/authorization_spec.rb +0 -27
  536. data/spec/unit/namespace/register_page_spec.rb +0 -74
  537. data/spec/unit/namespace/register_resource_spec.rb +0 -161
  538. data/spec/unit/namespace_spec.rb +0 -103
  539. data/spec/unit/order_clause_spec.rb +0 -81
  540. data/spec/unit/page_controller_spec.rb +0 -5
  541. data/spec/unit/page_spec.rb +0 -78
  542. data/spec/unit/pretty_format_spec.rb +0 -63
  543. data/spec/unit/pundit_adapter_spec.rb +0 -98
  544. data/spec/unit/resource/action_items_spec.rb +0 -65
  545. data/spec/unit/resource/includes_spec.rb +0 -21
  546. data/spec/unit/resource/menu_spec.rb +0 -18
  547. data/spec/unit/resource/naming_spec.rb +0 -122
  548. data/spec/unit/resource/page_presenters_spec.rb +0 -44
  549. data/spec/unit/resource/pagination_spec.rb +0 -38
  550. data/spec/unit/resource/routes_spec.rb +0 -73
  551. data/spec/unit/resource/scopes_spec.rb +0 -50
  552. data/spec/unit/resource/sidebars_spec.rb +0 -43
  553. data/spec/unit/resource_collection_spec.rb +0 -158
  554. data/spec/unit/resource_controller/data_access_spec.rb +0 -140
  555. data/spec/unit/resource_controller/decorators_spec.rb +0 -83
  556. data/spec/unit/resource_controller/sidebars_spec.rb +0 -45
  557. data/spec/unit/resource_controller_spec.rb +0 -269
  558. data/spec/unit/resource_registration_spec.rb +0 -56
  559. data/spec/unit/resource_spec.rb +0 -278
  560. data/spec/unit/routing_spec.rb +0 -180
  561. data/spec/unit/scope_spec.rb +0 -190
  562. data/spec/unit/settings_spec.rb +0 -118
  563. data/spec/unit/view_factory_spec.rb +0 -21
  564. data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -217
  565. data/spec/unit/view_helpers/display_name_spec.rb +0 -69
  566. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
  567. data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
  568. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -25
  569. data/spec/unit/view_helpers/form_helper_spec.rb +0 -43
  570. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -139
  571. data/spec/unit/views/components/action_list_popover_spec.rb +0 -40
  572. data/spec/unit/views/components/attributes_table_spec.rb +0 -272
  573. data/spec/unit/views/components/batch_action_popover_spec.rb +0 -47
  574. data/spec/unit/views/components/blank_slate_spec.rb +0 -27
  575. data/spec/unit/views/components/columns_spec.rb +0 -172
  576. data/spec/unit/views/components/index_list_spec.rb +0 -35
  577. data/spec/unit/views/components/index_table_for_spec.rb +0 -46
  578. data/spec/unit/views/components/paginated_collection_spec.rb +0 -236
  579. data/spec/unit/views/components/panel_spec.rb +0 -62
  580. data/spec/unit/views/components/popover_spec.rb +0 -33
  581. data/spec/unit/views/components/sidebar_section_spec.rb +0 -47
  582. data/spec/unit/views/components/site_title_spec.rb +0 -78
  583. data/spec/unit/views/components/status_tag_spec.rb +0 -235
  584. data/spec/unit/views/components/table_for_spec.rb +0 -384
  585. data/spec/unit/views/components/tabs_spec.rb +0 -39
  586. data/spec/unit/views/components/unsupported_browser_spec.rb +0 -47
  587. data/spec/unit/views/pages/form_spec.rb +0 -42
  588. data/spec/unit/views/pages/index_spec.rb +0 -60
  589. data/spec/unit/views/pages/layout_spec.rb +0 -59
  590. data/spec/unit/views/pages/show_spec.rb +0 -33
  591. data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
  592. data/tasks/docs.rake +0 -37
  593. data/tasks/parallel_tests.rake +0 -66
  594. data/tasks/test.rake +0 -83
  595. data/tasks/yard.rake +0 -9
@@ -1,433 +0,0 @@
1
- require 'rails_helper'
2
-
3
- class Post
4
- ransacker :custom_searcher do
5
- # nothing to see here
6
- end
7
- end
8
-
9
- describe ActiveAdmin::Filters::ViewHelper do
10
-
11
- # Setup an ActionView::Base object which can be used for
12
- # generating the form for.
13
- let(:helpers) do
14
- view = action_view
15
- def view.collection_path
16
- "/posts"
17
- end
18
-
19
- def view.protect_against_forgery?
20
- false
21
- end
22
-
23
- def view.a_helper_method
24
- "A Helper Method"
25
- end
26
-
27
- view
28
- end
29
-
30
- def render_filter(search, filters)
31
- render_arbre_component({filter_args: [search, filters]}, helpers) do
32
- text_node active_admin_filters_form_for *assigns[:filter_args]
33
- end.to_s
34
- end
35
-
36
- def filter(name, options = {})
37
- render_filter scope, name => options
38
- end
39
-
40
- let(:scope) { Post.search }
41
-
42
- describe "the form in general" do
43
- let(:body) { Capybara.string(filter :title) }
44
-
45
- it "should generate a form which submits via get" do
46
- expect(body).to have_selector("form.filter_form[method=get]")
47
- end
48
-
49
- it "should generate a filter button" do
50
- expect(body).to have_selector("input[type=submit][value=Filter]")
51
- end
52
-
53
- it "should only generate the form once" do
54
- expect(body).to have_selector("form", count: 1)
55
- end
56
-
57
- it "should generate a clear filters link" do
58
- expect(body).to have_selector("a.clear_filters_btn", text: "Clear Filters")
59
- end
60
-
61
- describe "label as proc" do
62
- let(:body) { Capybara.string(filter :title, label: proc { 'Title from proc' }) }
63
-
64
- it "should render proper label" do
65
- expect(body).to have_selector("label", text: "Title from proc")
66
- end
67
- end
68
- end
69
-
70
- describe "string attribute" do
71
- let(:body) { Capybara.string(filter :title) }
72
-
73
- it "should generate a select option for starts with" do
74
- expect(body).to have_selector("option[value=title_starts_with]", text: "Starts with")
75
- end
76
-
77
- it "should generate a select option for ends with" do
78
- expect(body).to have_selector("option[value=title_ends_with]", text: "Ends with")
79
- end
80
-
81
- it "should generate a select option for contains" do
82
- expect(body).to have_selector("option[value=title_contains]", text: "Contains")
83
- end
84
-
85
- it "should generate a text field for input" do
86
- expect(body).to have_selector("input[name='q[title_contains]']")
87
- end
88
-
89
- it "should have a proper label" do
90
- expect(body).to have_selector("label", text: "Title")
91
- end
92
-
93
- it "should translate the label for text field" do
94
- with_translation activerecord: {attributes: {post: {title: 'Name'}}} do
95
- expect(body).to have_selector("label", text: "Name")
96
- end
97
- end
98
-
99
- it "should select the option which is currently being filtered" do
100
- scope = Post.search title_starts_with: "foo"
101
- body = Capybara.string(render_filter scope, title: {})
102
- expect(body).to have_selector("option[value=title_starts_with][selected=selected]", text: "Starts with")
103
- end
104
-
105
- context "with predicate" do
106
- %w[eq equals cont contains start starts_with end ends_with].each do |predicate|
107
- describe "'#{predicate}'" do
108
- let(:body) { Capybara.string(filter :"title_#{predicate}") }
109
-
110
- it "shouldn't include a select field" do
111
- expect(body).not_to have_selector("select")
112
- end
113
-
114
- it "should build correctly" do
115
- expect(body).to have_selector("input[name='q[title_#{predicate}]']")
116
- end
117
- end
118
- end
119
- end
120
- end
121
-
122
- describe "text attribute" do
123
- let(:body) { Capybara.string(filter :body) }
124
-
125
- it "should generate a search field for a text attribute" do
126
- expect(body).to have_selector("input[name='q[body_contains]']")
127
- end
128
-
129
- it "should have a proper label" do
130
- expect(body).to have_selector("label", text: "Body")
131
- end
132
- end
133
-
134
- describe "string attribute, as a select" do
135
- let(:body) { filter :title, as: :select }
136
- let(:builder) { ActiveAdmin::Inputs::Filters::SelectInput }
137
-
138
- context "when loading collection from DB" do
139
- it "should use pluck for efficiency" do
140
- expect_any_instance_of(builder).to receive(:pluck_column) { [] }
141
- body
142
- end
143
-
144
- it "should remove original ordering to prevent PostgreSQL error" do
145
- expect(scope.object.klass).to receive(:reorder).with('title asc') {
146
- m = double uniq: double(pluck: ['A Title'])
147
- expect(m.uniq).to receive(:pluck).with :title
148
- m
149
- }
150
- body
151
- end
152
- end
153
- end
154
-
155
- describe "datetime attribute" do
156
- let(:body) { Capybara.string(filter :created_at) }
157
-
158
- it "should generate a date greater than" do
159
- expect(body).to have_selector("input.datepicker[name='q[created_at_gteq]']")
160
- end
161
- it "should generate a seperator" do
162
- expect(body).to have_selector("span.seperator")
163
- end
164
- it "should generate a date less than" do
165
- expect(body).to have_selector("input.datepicker[name='q[created_at_lteq]']")
166
- end
167
- end
168
-
169
- describe "integer attribute" do
170
- let(:body) { Capybara.string(filter :id) }
171
-
172
- it "should generate a select option for equal to" do
173
- expect(body).to have_selector("option[value=id_equals]", text: "Equals")
174
- end
175
- it "should generate a select option for greater than" do
176
- expect(body).to have_selector("option", text: "Greater than")
177
- end
178
- it "should generate a select option for less than" do
179
- expect(body).to have_selector("option", text: "Less than")
180
- end
181
- it "should generate a text field for input" do
182
- expect(body).to have_selector("input[name='q[id_equals]']")
183
- end
184
- it "should select the option which is currently being filtered" do
185
- scope = Post.search id_greater_than: 1
186
- body = Capybara.string(render_filter scope, id: {})
187
- expect(body).to have_selector("option[value=id_greater_than][selected=selected]", text: "Greater than")
188
- end
189
- end
190
-
191
- describe "boolean attribute" do
192
- context "boolean datatypes" do
193
- let(:body) { Capybara.string(filter :starred) }
194
-
195
- it "should generate a select" do
196
- expect(body).to have_selector("select[name='q[starred_eq]']")
197
- end
198
- it "should set the default text to 'Any'" do
199
- expect(body).to have_selector("option[value='']", text: "Any")
200
- end
201
- it "should create an option for true and false" do
202
- expect(body).to have_selector("option[value=true]", text: "Yes")
203
- expect(body).to have_selector("option[value=false]", text: "No")
204
- end
205
-
206
- it "should translate the label for boolean field" do
207
- with_translation activerecord: {attributes: {post: {starred: 'Faved'}}} do
208
- expect(body).to have_selector("label", text: "Faved")
209
- end
210
- end
211
- end
212
-
213
- context "non-boolean data types" do
214
- let(:body) { Capybara.string(filter :title_present, as: :boolean) }
215
-
216
- it "should generate a select" do
217
- expect(body).to have_selector("select[name='q[title_present]']")
218
- end
219
- it "should set the default text to 'Any'" do
220
- expect(body).to have_selector("option[value='']", text: "Any")
221
- end
222
- it "should create an option for true and false" do
223
- expect(body).to have_selector("option[value=true]", text: "Yes")
224
- expect(body).to have_selector("option[value=false]", text: "No")
225
- end
226
- end
227
- end
228
-
229
- describe "belongs_to" do
230
- before do
231
- @john = User.create first_name: "John", last_name: "Doe", username: "john_doe"
232
- @jane = User.create first_name: "Jane", last_name: "Doe", username: "jane_doe"
233
- end
234
-
235
- context "when given as the _id attribute name" do
236
- let(:body) { Capybara.string(filter :author_id) }
237
-
238
- it "should generate a numeric filter" do
239
- expect(body).to have_selector("label", text: "Author") # really this should be Author ID :/)
240
- expect(body).to have_selector("option[value=author_id_less_than]")
241
- expect(body).to have_selector("input#q_author_id[name='q[author_id_equals]']")
242
- end
243
- end
244
-
245
- context "when given as the name of the relationship" do
246
- let(:body) { Capybara.string(filter :author) }
247
-
248
- it "should generate a select" do
249
- expect(body).to have_selector("select[name='q[author_id_eq]']")
250
- end
251
- it "should set the default text to 'Any'" do
252
- expect(body).to have_selector("option[value='']", text: "Any")
253
- end
254
- it "should create an option for each related object" do
255
- expect(body).to have_selector("option[value='#{@john.id}']", text: "John Doe")
256
- expect(body).to have_selector("option[value='#{@jane.id}']", text: "Jane Doe")
257
- end
258
-
259
- context "with a proc" do
260
- let :body do
261
- Capybara.string(filter :title, as: :select, collection: proc{ ['Title One', 'Title Two'] })
262
- end
263
-
264
- it "should use call the proc as the collection" do
265
- expect(body).to have_selector("option", text: "Title One")
266
- expect(body).to have_selector("option", text: "Title Two")
267
- end
268
-
269
- it "should render the collection in the context of the view" do
270
- body = Capybara.string(filter(:title, as: :select, collection: proc{[a_helper_method]}))
271
- expect(body).to have_selector("option", text: "A Helper Method")
272
- end
273
- end
274
- end
275
-
276
- context "as check boxes" do
277
- let(:body) { Capybara.string(filter :author, as: :check_boxes) }
278
-
279
- it "should create a check box for each related object" do
280
- expect(body).to have_selector("input[type=checkbox][name='q[author_id_in][]'][value='#{@jane.id}']")
281
- expect(body).to have_selector("input[type=checkbox][name='q[author_id_in][]'][value='#{@jane.id}']")
282
- end
283
- end
284
-
285
- context "when polymorphic relationship" do
286
- let(:scope) { ActiveAdmin::Comment.search }
287
- it "should raise an error if a collection isn't provided" do
288
- expect { filter :resource }.to raise_error \
289
- Formtastic::PolymorphicInputWithoutCollectionError
290
- end
291
- end
292
-
293
- context "when using a custom foreign key" do
294
- let(:scope) { Post.search }
295
- let(:body) { Capybara.string(filter :category) }
296
- it "should ignore that foreign key and let Ransack handle it" do
297
- expect(Post.reflect_on_association(:category).foreign_key).to eq :custom_category_id
298
- expect(body).to have_selector("select[name='q[category_id_eq]']")
299
- end
300
- end
301
- end # belongs to
302
-
303
- describe "has_and_belongs_to_many" do
304
- skip "add HABTM models so this can be tested"
305
- end
306
-
307
- describe "has_many :through" do
308
- # Setup an ActionView::Base object which can be used for
309
- # generating the form for.
310
- let(:helpers) do
311
- view = action_view
312
- def view.collection_path
313
- "/categories"
314
- end
315
-
316
- def view.protect_against_forgery?
317
- false
318
- end
319
-
320
- def view.a_helper_method
321
- "A Helper Method"
322
- end
323
-
324
- view
325
- end
326
- let(:scope) { Category.search }
327
-
328
- let!(:john) { User.create first_name: "John", last_name: "Doe", username: "john_doe" }
329
- let!(:jane) { User.create first_name: "Jane", last_name: "Doe", username: "jane_doe" }
330
-
331
- context "when given as the name of the relationship" do
332
- let(:body) { Capybara.string(filter :authors) }
333
-
334
- it "should generate a select" do
335
- expect(body).to have_selector("select[name='q[posts_author_id_eq]']")
336
- end
337
-
338
- it "should set the default text to 'Any'" do
339
- expect(body).to have_selector("option[value='']", text: "Any")
340
- end
341
-
342
- it "should create an option for each related object" do
343
- expect(body).to have_selector("option[value='#{john.id}']", text: "John Doe")
344
- expect(body).to have_selector("option[value='#{jane.id}']", text: "Jane Doe")
345
- end
346
- end
347
-
348
- context "as check boxes" do
349
- let(:body) { Capybara.string(filter :authors, as: :check_boxes) }
350
-
351
- it "should create a check box for each related object" do
352
- expect(body).to have_selector("input[name='q[posts_author_id_in][]'][type=checkbox][value='#{john.id}']")
353
- expect(body).to have_selector("input[name='q[posts_author_id_in][]'][type=checkbox][value='#{jane.id}']")
354
- end
355
- end
356
- end
357
-
358
- describe "conditional display" do
359
- [:if, :unless].each do |verb|
360
- should = verb == :if ? "should" : "shouldn't"
361
- if_true = verb == :if ? :to : :to_not
362
- if_false = verb == :if ? :to_not : :to
363
- context "with #{verb.inspect} proc" do
364
- it "#{should} be displayed if true" do
365
- body = Capybara.string(filter :body, verb => proc{ true })
366
- expect(body).send if_true, have_selector("input[name='q[body_contains]']")
367
- end
368
- it "#{should} be displayed if false" do
369
- body = Capybara.string(filter :body, verb => proc{ false })
370
- expect(body).send if_false, have_selector("input[name='q[body_contains]']")
371
- end
372
- it "should still be hidden on the second render" do
373
- filters = {body: { verb => proc{ verb == :unless }}}
374
- 2.times do
375
- body = Capybara.string(render_filter scope, filters)
376
- expect(body).not_to have_selector("input[name='q[body_contains]']")
377
- end
378
- end
379
- it "should successfully keep rendering other filters after one is hidden" do
380
- filters = {body: { verb => proc{ verb == :unless }}, author: {}}
381
- body = Capybara.string(render_filter scope, filters)
382
- expect(body).not_to have_selector("input[name='q[body_contains]']")
383
- expect(body).to have_selector("select[name='q[author_id_eq]']")
384
- end
385
- end
386
- end
387
- end
388
-
389
- describe "custom search methods" do
390
-
391
- it "should work as select" do
392
- body = Capybara.string(filter :custom_searcher, as: :select, collection: ['foo'])
393
- expect(body).to have_selector("select[name='q[custom_searcher]']")
394
- end
395
-
396
- it "should work as string" do
397
- body = Capybara.string(filter :custom_searcher, as: :string)
398
- expect(body).to have_selector("input[name='q[custom_searcher]']")
399
- end
400
- end
401
-
402
- describe "does not support some filter inputs" do
403
- it "should fallback to use formtastic inputs" do
404
- body = Capybara.string(filter :custom_searcher, as: :text)
405
- expect(body).to have_selector("textarea[name='q[custom_searcher]']")
406
- end
407
- end
408
-
409
- describe "blank option" do
410
- context "for a select filter" do
411
- it "should be there by default" do
412
- body = Capybara.string(filter(:author))
413
- expect(body).to have_selector("option", text: "Any")
414
- end
415
- it "should be able to be disabled" do
416
- body = Capybara.string(filter(:author, include_blank: false))
417
- expect(body).to_not have_selector("option", text: "Any")
418
- end
419
- end
420
-
421
- context "for a multi-select filter" do
422
- it "should not be there by default" do
423
- body = Capybara.string(filter(:author, multiple: true))
424
- expect(body).to_not have_selector("option", text: "Any")
425
- end
426
- it "should be able to be enabled" do
427
- body = Capybara.string(filter(:author, multiple: true, include_blank: true))
428
- expect(body).to have_selector("option", text: "Any")
429
- end
430
- end
431
- end
432
-
433
- end
@@ -1,121 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe ActiveAdmin::Filters::ResourceExtension do
4
-
5
- let(:resource) do
6
- namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
- namespace.register(Post)
8
- end
9
-
10
- it "should return a Hash" do
11
- expect(resource.filters).to be_a Hash
12
- end
13
-
14
- it "should return the defaults if no filters are set" do
15
- expect(resource.filters.keys).to match_array([
16
- :author, :body, :category, :created_at, :custom_searcher, :position, :published_at, :starred, :taggings, :title, :updated_at
17
- ])
18
- end
19
-
20
- it "should not have defaults when filters are disabled on the resource" do
21
- resource.filters = false
22
- expect(resource.filters).to be_empty
23
- end
24
-
25
- it "should not have defaults when the filters are disabled on the namespace" do
26
- resource.namespace.filters = false
27
- expect(resource.filters).to be_empty
28
- end
29
-
30
- it "should not have defaults when the filters are disabled on the application" do
31
- resource.namespace.application.filters = false
32
- expect(resource.filters).to be_empty
33
- end
34
-
35
- describe "removing a filter" do
36
- it "should work" do
37
- expect(resource.filters.keys).to include :author
38
- resource.remove_filter :author
39
- expect(resource.filters.keys).to_not include :author
40
- end
41
-
42
- it "should work as a string" do
43
- expect(resource.filters.keys).to include :author
44
- resource.remove_filter 'author'
45
- expect(resource.filters.keys).to_not include :author
46
- end
47
-
48
- it "should be lazy" do
49
- expect(resource).to_not receive :default_filters # this hits the DB
50
- resource.remove_filter :author
51
- end
52
-
53
- it "should not prevent the default filters from being added" do
54
- resource.remove_filter :author
55
- expect(resource.filters).to_not be_empty
56
- end
57
-
58
- it "should raise an exception when filters are disabled" do
59
- resource.filters = false
60
- expect{ resource.remove_filter :author }.to raise_error ActiveAdmin::Filters::Disabled
61
- end
62
- end
63
-
64
- describe "removing a multiple filters inline" do
65
- it "should work" do
66
- expect(resource.filters.keys).to include :author, :body
67
- resource.remove_filter :author, :body
68
- expect(resource.filters.keys).to_not include :author, :body
69
- end
70
- end
71
-
72
- describe "adding a filter" do
73
- it "should work" do
74
- resource.add_filter :title
75
- expect(resource.filters).to eq title: {}
76
- end
77
-
78
- it "should work as a string" do
79
- resource.add_filter 'title'
80
- expect(resource.filters).to eq title: {}
81
- end
82
-
83
- it "should work with specified options" do
84
- resource.add_filter :title, as: :string
85
- expect(resource.filters).to eq title: {as: :string}
86
- end
87
-
88
- it "should override an existing filter" do
89
- resource.add_filter :title, one: :two
90
- resource.add_filter :title, three: :four
91
-
92
- expect(resource.filters).to eq title: {three: :four}
93
- end
94
-
95
- it "should preserve default filters" do
96
- resource.preserve_default_filters!
97
- resource.add_filter :count, as: :string
98
-
99
- expect(resource.filters.keys).to match_array([
100
- :author, :body, :category, :count, :created_at, :custom_searcher, :position, :published_at, :starred, :taggings, :title, :updated_at
101
- ])
102
- end
103
-
104
- it "should raise an exception when filters are disabled" do
105
- resource.filters = false
106
- expect{ resource.add_filter :title }.to raise_error ActiveAdmin::Filters::Disabled
107
- end
108
- end
109
-
110
- it "should reset filters" do
111
- resource.add_filter :title
112
- expect(resource.filters.size).to eq 1
113
- resource.reset_filters!
114
- expect(resource.filters.size).to be > 1
115
- end
116
-
117
- it "should add a sidebar section for the filters" do
118
- expect(resource.sidebar_sections.first.name).to eq :filters
119
- end
120
-
121
- end