yousty-activeadmin 1.0.4.pre → 1.0.5.pre

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::IndexList do
4
4
 
@@ -9,24 +9,27 @@ describe ActiveAdmin::Views::IndexList do
9
9
 
10
10
  let(:helpers) do
11
11
  helpers = mock_action_view
12
- helpers.stub url_for: "/"
13
- helpers.stub(:params).and_return as: "table"
12
+ allow(helpers).to receive(:url_for).and_return("/")
13
+ allow(helpers).to receive(:params).and_return as: "table"
14
14
  helpers
15
15
  end
16
16
 
17
17
  subject do
18
- render_arbre_component({:index_classes => index_classes}, helpers) do
18
+ render_arbre_component({index_classes: index_classes}, helpers) do
19
19
  index_list_renderer(index_classes)
20
20
  end
21
21
  end
22
22
 
23
- its(:tag_name) { should == 'ul' }
23
+ describe '#tag_name' do
24
+ subject { super().tag_name }
25
+ it { is_expected.to eq 'ul'}
26
+ end
24
27
 
25
28
  it "should contain the names of available indexes in links" do
26
29
  a_tags = subject.find_by_tag("a")
27
- a_tags.size.should == 2
28
- a_tags.first.to_s.should include("Table")
29
- a_tags.last.to_s.should include("List")
30
+ expect(a_tags.size).to eq 2
31
+ expect(a_tags.first.to_s).to include("Table")
32
+ expect(a_tags.last.to_s).to include("List")
30
33
  end
31
34
  end
32
35
  end
@@ -0,0 +1,46 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::IndexAsTable::IndexTableFor do
4
+ describe 'creating with the dsl' do
5
+ let(:collection) do
6
+ [Post.new(title: 'First Post', starred: true)]
7
+ end
8
+ let(:active_admin_config) do
9
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
10
+ namespace.batch_actions = [ActiveAdmin::BatchAction.new(:flag, 'Flag') {}]
11
+ namespace
12
+ end
13
+
14
+ let(:assigns) do
15
+ {
16
+ collection: collection,
17
+ active_admin_config: active_admin_config
18
+ }
19
+ end
20
+ let(:helpers) { mock_action_view }
21
+
22
+ context 'when creating a selectable column' do
23
+ let(:table) do
24
+ render_arbre_component assigns, helpers do
25
+ insert_tag(ActiveAdmin::Views::IndexAsTable::IndexTableFor, collection, {sortable: true}) do
26
+ selectable_column
27
+ end
28
+ end
29
+ end
30
+
31
+ context 'creates a table header based on the selectable column' do
32
+ let(:header) do
33
+ table.find_by_tag('th').first
34
+ end
35
+
36
+ it 'with selectable column class name' do
37
+ expect(header.attributes[:class]).to include 'col-selectable'
38
+ end
39
+
40
+ it 'not sortable' do
41
+ expect(header.attributes[:class]).not_to include 'sortable'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::PaginatedCollection do
4
4
  describe "creating with the dsl" do
@@ -10,41 +10,46 @@ describe ActiveAdmin::Views::PaginatedCollection do
10
10
 
11
11
  let(:view) do
12
12
  view = mock_action_view
13
- view.request.stub(:query_parameters).and_return page: '1'
14
- view.request.stub(:path_parameters).and_return controller: 'admin/posts', action: 'index'
13
+ allow(view.request).to receive(:query_parameters).and_return page: '1'
14
+ allow(view.request).to receive(:path_parameters).and_return controller: 'admin/posts', action: 'index'
15
15
  view
16
16
  end
17
17
 
18
18
  # Helper to render paginated collections within an arbre context
19
19
  def paginated_collection(*args)
20
- render_arbre_component({:paginated_collection_args => args}, view) do
20
+ render_arbre_component({paginated_collection_args: args}, view) do
21
21
  paginated_collection(*paginated_collection_args)
22
22
  end
23
23
  end
24
24
 
25
25
  let(:collection) do
26
- posts = [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
26
+ posts = [Post.new(title: "First Post"), Post.new(title: "Second Post"), Post.new(title: "Third Post")]
27
27
  Kaminari.paginate_array(posts).page(1).per(5)
28
28
  end
29
29
 
30
30
  before do
31
- collection.stub(:reorder) { collection }
31
+ allow(collection).to receive(:except) { collection } unless collection.respond_to? :except
32
+ allow(collection).to receive(:group_values) { [] } unless collection.respond_to? :group_values
32
33
  end
33
34
 
34
- context "when specifying collection" do
35
- let(:pagination) do
36
- paginated_collection(collection)
37
- end
35
+ let(:pagination){ paginated_collection collection }
38
36
 
39
- it "should set :collection as the passed in collection" do
40
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> posts"
41
- end
37
+ it "should set :collection as the passed in collection" do
38
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> posts"
39
+ end
42
40
 
43
- it "should raise error if collection has no pagination scope" do
44
- expect {
45
- paginated_collection([Post.new, Post.new])
46
- }.to raise_error(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
47
- end
41
+ it "should raise error if collection has no pagination scope" do
42
+ expect {
43
+ paginated_collection([Post.new, Post.new])
44
+ }.to raise_error(StandardError, "Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.")
45
+ end
46
+
47
+ it 'should preserve custom query params' do
48
+ allow(view.request).to receive(:query_parameters).and_return page: '1', something: 'else'
49
+ pagination_content = pagination.content
50
+ expect(pagination_content).to include '/admin/posts.csv?page=1&amp;something=else'
51
+ expect(pagination_content).to include '/admin/posts.xml?page=1&amp;something=else'
52
+ expect(pagination_content).to include '/admin/posts.json?page=1&amp;something=else'
48
53
  end
49
54
 
50
55
  context "when specifying :param_name option" do
@@ -53,23 +58,23 @@ describe ActiveAdmin::Views::PaginatedCollection do
53
58
  Kaminari.paginate_array(posts).page(1).per(5)
54
59
  end
55
60
 
56
- let(:pagination) { paginated_collection(collection, :param_name => :post_page) }
61
+ let(:pagination) { paginated_collection(collection, param_name: :post_page) }
57
62
 
58
63
  it "should customize the page number parameter in pagination links" do
59
- pagination.children.last.content.should match(/\/admin\/posts\?post_page=2/)
64
+ expect(pagination.children.last.content).to match(/\/admin\/posts\?post_page=2/)
60
65
  end
61
66
  end
62
67
 
63
- context "when specifying :download_links => false option" do
68
+ context "when specifying download_links: false option" do
64
69
  let(:collection) do
65
70
  posts = 10.times.map{ Post.new }
66
71
  Kaminari.paginate_array(posts).page(1).per(5)
67
72
  end
68
73
 
69
- let(:pagination) { paginated_collection(collection, :download_links => false) }
74
+ let(:pagination) { paginated_collection(collection, download_links: false) }
70
75
 
71
76
  it "should not render download links" do
72
- pagination.find_by_tag('div').last.content.should_not match(/Download:/)
77
+ expect(pagination.find_by_tag('div').last.content).to_not match(/Download:/)
73
78
  end
74
79
  end
75
80
 
@@ -79,18 +84,18 @@ describe ActiveAdmin::Views::PaginatedCollection do
79
84
  Kaminari.paginate_array(posts).page(1).per(5)
80
85
  end
81
86
 
82
- let(:pagination) { paginated_collection(collection, :entry_name => "message") }
87
+ let(:pagination) { paginated_collection(collection, entry_name: "message") }
83
88
 
84
89
  it "should use :entry_name as the collection name" do
85
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>1</b> message"
90
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> message"
86
91
  end
87
92
  end
88
93
 
89
94
  context "when specifying :entry_name option with multiple items" do
90
- let(:pagination) { paginated_collection(collection, :entry_name => "message") }
95
+ let(:pagination) { paginated_collection(collection, entry_name: "message") }
91
96
 
92
97
  it "should use :entry_name as the collection name" do
93
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> messages"
98
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> messages"
94
99
  end
95
100
  end
96
101
 
@@ -100,18 +105,18 @@ describe ActiveAdmin::Views::PaginatedCollection do
100
105
  Kaminari.paginate_array(posts).page(1).per(5)
101
106
  end
102
107
 
103
- let(:pagination) { paginated_collection(collection, :entry_name => "singular", :entries_name => "plural") }
108
+ let(:pagination) { paginated_collection(collection, entry_name: "singular", entries_name: "plural") }
104
109
 
105
110
  it "should use :entry_name as the collection name" do
106
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>1</b> singular"
111
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> singular"
107
112
  end
108
113
  end
109
114
 
110
115
  context "when specifying :entry_name and :entries_name option with a multiple items" do
111
- let(:pagination) { paginated_collection(collection, :entry_name => "singular", :entries_name => "plural") }
116
+ let(:pagination) { paginated_collection(collection, entry_name: "singular", entries_name: "plural") }
112
117
 
113
118
  it "should use :entries_name as the collection name" do
114
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> plural"
119
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> plural"
115
120
  end
116
121
  end
117
122
 
@@ -121,28 +126,24 @@ describe ActiveAdmin::Views::PaginatedCollection do
121
126
  Kaminari.paginate_array(posts).page(1).per(5)
122
127
  end
123
128
 
124
- let(:pagination) { paginated_collection(collection) }
125
-
126
129
  it "should use 'post' as the collection name when there is no I18n translation" do
127
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>1</b> post"
130
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> post"
128
131
  end
129
132
 
130
133
  it "should use 'Singular' as the collection name when there is an I18n translation" do
131
- I18n.stub(:translate) { "Singular" }
132
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>1</b> Singular"
134
+ allow(I18n).to receive(:translate) { "Singular" }
135
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>1</b> Singular"
133
136
  end
134
137
  end
135
138
 
136
139
  context "when omitting :entry_name with multiple items" do
137
- let(:pagination) { paginated_collection(collection) }
138
-
139
140
  it "should use 'posts' as the collection name when there is no I18n translation" do
140
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> posts"
141
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> posts"
141
142
  end
142
143
 
143
144
  it "should use 'Plural' as the collection name when there is an I18n translation" do
144
- I18n.stub(:translate) { "Plural" }
145
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 3</b> Plural"
145
+ allow(I18n).to receive(:translate) { "Plural" }
146
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 3</b> Plural"
146
147
  end
147
148
  end
148
149
 
@@ -152,37 +153,31 @@ describe ActiveAdmin::Views::PaginatedCollection do
152
153
  Kaminari.paginate_array(posts).page(1).per(5)
153
154
  end
154
155
 
155
- let(:pagination) { paginated_collection(collection) }
156
-
157
156
  it "should display 'No entries found'" do
158
- pagination.find_by_class('pagination_information').first.content.should == "No entries found"
157
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "No entries found"
159
158
  end
160
159
  end
161
160
 
162
161
  context "when collection comes from find with GROUP BY" do
163
162
  let(:collection) do
164
- %w{Foo Foo Bar}.each {|title| Post.create(:title => title) }
163
+ %w{Foo Foo Bar}.each {|title| Post.create(title: title) }
165
164
  Post.select(:title).group(:title).page(1).per(5)
166
165
  end
167
166
 
168
- let(:pagination) { paginated_collection(collection) }
169
-
170
167
  it "should display proper message (including number and not hash)" do
171
- pagination.find_by_class('pagination_information').first.content.should == "Displaying <b>all 2</b> posts"
168
+ expect(pagination.find_by_class('pagination_information').first.content).to eq "Displaying <b>all 2</b> posts"
172
169
  end
173
170
  end
174
171
 
175
172
  context "when collection with many pages comes from find with GROUP BY" do
176
173
  let(:collection) do
177
- %w{Foo Foo Bar Baz}.each {|title| Post.create(:title => title) }
174
+ %w{Foo Foo Bar Baz}.each {|title| Post.create(title: title) }
178
175
  Post.select(:title).group(:title).page(1).per(2)
179
176
  end
180
177
 
181
- let(:pagination) { paginated_collection(collection) }
182
-
183
178
  it "should display proper message (including number and not hash)" do
184
- pagination.find_by_class('pagination_information').first.content.
185
- gsub('&nbsp;',' ').should == "Displaying posts <b>1 - 2</b> of <b>3</b> in total"
179
+ expect(pagination.find_by_class('pagination_information').first.content.gsub('&nbsp;',' ')).
180
+ to eq "Displaying posts <b>1 - 2</b> of <b>3</b> in total"
186
181
  end
187
182
  end
188
183
 
@@ -191,11 +186,9 @@ describe ActiveAdmin::Views::PaginatedCollection do
191
186
  Kaminari.paginate_array([Post.new] * 81).page(3).per(30)
192
187
  end
193
188
 
194
- let(:pagination) { paginated_collection(collection) }
195
-
196
189
  it "should show the proper item counts" do
197
- pagination.find_by_class('pagination_information').first.content.
198
- gsub('&nbsp;',' ').should == "Displaying posts <b>61 - 81</b> of <b>81</b> in total"
190
+ expect(pagination.find_by_class('pagination_information').first.content.gsub('&nbsp;',' ')).
191
+ to eq "Displaying posts <b>61 - 81</b> of <b>81</b> in total"
199
192
  end
200
193
  end
201
194
 
@@ -209,7 +202,7 @@ describe ActiveAdmin::Views::PaginatedCollection do
209
202
 
210
203
  it "should not show the total item counts" do
211
204
  info = pagination.find_by_class('pagination_information').first.content.gsub('&nbsp;',' ')
212
- info.should eq "Displaying posts <b>1 - 30</b>"
205
+ expect(info).to eq "Displaying posts <b>1 - 30</b>"
213
206
  end
214
207
  end
215
208
 
@@ -218,10 +211,26 @@ describe ActiveAdmin::Views::PaginatedCollection do
218
211
 
219
212
  it "should show the total item counts" do
220
213
  info = pagination.find_by_class('pagination_information').first.content.gsub('&nbsp;',' ')
221
- info.should eq "Displaying posts <b>1 - 30</b> of <b>256</b> in total"
214
+ expect(info).to eq "Displaying posts <b>1 - 30</b> of <b>256</b> in total"
222
215
  end
223
216
  end
224
217
  end
225
218
 
219
+ context "when specifying per_page: array option" do
220
+ let(:collection) do
221
+ posts = 10.times.map { Post.new }
222
+ Kaminari.paginate_array(posts).page(1).per(5)
223
+ end
224
+
225
+ let(:pagination) { paginated_collection(collection, per_page: [1, 2, 3]) }
226
+ let(:pagination_html) { pagination.find_by_class("pagination_per_page").first }
227
+ let(:pagination_node) { Capybara.string(pagination_html.to_s) }
228
+
229
+ it "should render per_page select tag" do
230
+ expect(pagination_html.content).to match(/Per page:/)
231
+ expect(pagination_node).to have_css("select option", count: 3)
232
+ end
233
+ end
234
+
226
235
  end
227
236
  end
@@ -1,51 +1,62 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Panel do
4
-
5
- let(:the_panel) do
4
+ let(:arbre_panel) do
6
5
  render_arbre_component do
7
- panel "My Title" do
6
+ panel "My Title", icon: :arrow_down do
7
+ header_action link_to("My Link", "https://www.github.com/activeadmin/activeadmin")
8
8
  span("Hello World")
9
9
  end
10
10
  end
11
11
  end
12
12
 
13
+ let(:panel_html) { Capybara.string(arbre_panel.to_s) }
14
+
13
15
  it "should have a title h3" do
14
- the_panel.find_by_tag("h3").first.content.should == "My Title"
16
+ expect(panel_html).to have_css 'h3', text: "My Title"
17
+ end
18
+
19
+ it "should add panel actions to the panel header" do
20
+ link = panel_html.find('h3 > div.header_action a')
21
+ expect(link.text).to eq('My Link')
22
+ expect(link[:href]).to eq("https://www.github.com/activeadmin/activeadmin")
15
23
  end
16
24
 
17
25
  it "should have a contents div" do
18
- the_panel.find_by_tag("div").first.class_list.should include("panel_contents")
26
+ expect(panel_html).to have_css 'div.panel_contents'
19
27
  end
20
28
 
21
29
  it "should add children to the contents div" do
22
- the_panel.find_by_tag("span").first.parent.should == the_panel.find_by_tag("div").first
30
+ expect(panel_html).to have_css 'div.panel_contents > span', text: "Hello World"
23
31
  end
24
32
 
25
33
  it "should set the icon" do
26
- the_panel = render_arbre_component do
27
- panel("Title", :icon => :arrow_down)
28
- end
29
- the_panel.find_by_tag("h3").first.content.should include("span class=\"icon")
34
+ expect(panel_html).to have_css "h3 > span.icon"
30
35
  end
31
36
 
32
- it "should allow a html_safe title (without icon)" do
33
- title_with_html = %q[Title with <abbr>HTML</abbr>].html_safe
34
- the_panel = render_arbre_component do
35
- panel(title_with_html)
37
+ context "with html-safe title" do
38
+ let(:arbre_panel) do
39
+ title_with_html = %q[Title with <abbr>HTML</abbr>].html_safe
40
+ render_arbre_component do
41
+ panel(title_with_html)
42
+ end
43
+ end
44
+
45
+ it "should allow a html_safe title" do
46
+ expect(panel_html).to have_css "h3", text: "Title with HTML"
47
+ expect(panel_html).to have_css "h3 > abbr", text: "HTML"
36
48
  end
37
- the_panel.find_by_tag("h3").first.content.should eq(title_with_html)
38
49
  end
39
50
 
40
51
  describe "#children?" do
41
-
42
- it "returns false if no children have been added to the panel" do
43
- the_panel = render_arbre_component do
52
+ let(:arbre_panel) do
53
+ render_arbre_component do
44
54
  panel("A Panel")
45
55
  end
46
- the_panel.children?.should == false
47
56
  end
48
57
 
58
+ it "returns false if no children have been added to the panel" do
59
+ expect(arbre_panel.children?).to eq false
60
+ end
49
61
  end
50
-
51
62
  end
@@ -1,33 +1,33 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Popover do
4
4
 
5
5
  let(:the_popover) do
6
6
  render_arbre_component do
7
- popover :id => "my_awesome_popover" do
7
+ popover id: "my_awesome_popover" do
8
8
  para "Hello World, this is popover content baby."
9
9
  end
10
10
  end
11
11
  end
12
12
 
13
13
  it "should have the class of 'sidebar_section'" do
14
- the_popover.class_list.should include("popover")
14
+ expect(the_popover.class_list).to include("popover")
15
15
  end
16
16
 
17
17
  it "should have an inner content element class of 'popover_contents'" do
18
- the_popover.find_by_tag("div").first.class_list.should include("popover_contents")
18
+ expect(the_popover.find_by_tag("div").first.class_list).to include("popover_contents")
19
19
  end
20
20
 
21
21
  it "should have the popover content in the inner content element" do
22
- the_popover.find_by_class("popover_contents").first.content.should include("Hello World, this is popover content baby.")
22
+ expect(the_popover.find_by_class("popover_contents").first.content).to include("Hello World, this is popover content baby.")
23
23
  end
24
24
 
25
25
  it "should have an id" do
26
- the_popover.id.should == "my_awesome_popover"
26
+ expect(the_popover.id).to eq "my_awesome_popover"
27
27
  end
28
28
 
29
29
  it "should be hidden" do
30
- the_popover.attributes.should include(:style => "display: none");
30
+ expect(the_popover.attributes).to include(style: "display: none");
31
31
  end
32
32
 
33
33
  end