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