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
@@ -0,0 +1,39 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::Tabs do
4
+ describe "creating with the dsl" do
5
+ context "when creating tabs with a symbol" do
6
+ let(:tabs) do
7
+ render_arbre_component do
8
+ tabs do
9
+ tab :overview
10
+ end
11
+ end
12
+ end
13
+
14
+ it "should create a tab navigation bar based on the symbol" do
15
+ expect(tabs.find_by_tag('li').first.content).to include "Overview"
16
+ end
17
+ end
18
+
19
+ context "when creating a tab with a block" do
20
+ let(:tabs) do
21
+ render_arbre_component do
22
+ tabs do
23
+ tab :overview do
24
+ span 'tab 1'
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ it "should create a tab navigation bar based on the symbol" do
31
+ expect(tabs.find_by_tag('li').first.content).to include "Overview"
32
+ end
33
+
34
+ it "should create a tab with a span inside of it" do
35
+ expect(tabs.find_by_tag('span').first.content).to eq('tab 1')
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,47 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::UnsupportedBrowser do
4
+
5
+ let(:helpers){ mock_action_view }
6
+ let(:namespace) { double :namespace, unsupported_browser_matcher: /MSIE [1-8]\.0/ }
7
+ let(:component) { double :unsupported_browser_component }
8
+ let(:view_factory) { double :view_factory, unsupported_browser: component }
9
+ let(:base) { ActiveAdmin::Views::Pages::Base.new }
10
+
11
+ def build_panel
12
+ render_arbre_component({}, helpers) do
13
+ insert_tag ActiveAdmin::Views::UnsupportedBrowser
14
+ end
15
+ end
16
+
17
+ it "should render the panel" do
18
+ expect(I18n).to receive(:t).and_return("headline", "recommendation" ,"turn_off_compatibility_view")
19
+ expect(build_panel.content.gsub(/\s+/, "")).to eq "<h1>headline</h1><p>recommendation</p><p>turn_off_compatibility_view</p>"
20
+ end
21
+
22
+ describe "ActiveAdmin::Views::Pages::Base behavior" do
23
+ context "when the reqex match" do
24
+
25
+ it "should build the unsupported browser panel" do
26
+ expect(base).to receive(:active_admin_namespace).and_return(namespace)
27
+ expect(base).to receive(:env).and_return({ "HTTP_USER_AGENT" => "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0)" })
28
+ expect(base).to receive(:view_factory).and_return(view_factory)
29
+ expect(base).to receive(:insert_tag).with(component)
30
+ base.send(:build_unsupported_browser)
31
+ end
32
+
33
+ end
34
+
35
+ context "when the regex not match" do
36
+
37
+ it "should not build the unsupported browser panel" do
38
+ expect(base).to receive(:active_admin_namespace).and_return(namespace)
39
+ expect(base).to receive(:env).and_return({ "HTTP_USER_AGENT" => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)" })
40
+ expect(base).to receive(:insert_tag).never
41
+ base.send(:build_unsupported_browser)
42
+ end
43
+
44
+ end
45
+ end
46
+
47
+ end
@@ -1,34 +1,41 @@
1
- require "spec_helper"
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Pages::Form do
4
4
  describe "#title" do
5
5
  let!(:application){ ActiveAdmin::Application.new }
6
6
  let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
- let!(:params){ { :controller => "UsersController", :action => "edit" } }
7
+ let!(:params){ { controller: "UsersController", action: "edit" } }
8
8
  let(:helpers) do
9
9
  helpers = mock_action_view
10
- helpers.stub :active_admin_config => namespace.register(Post),
11
- :params => params
12
-
10
+ allow(helpers).to receive(:active_admin_config).and_return(namespace.register(Post))
11
+ allow(helpers).to receive(:params).and_return(params)
13
12
  helpers
14
13
  end
15
14
 
16
15
  let(:arbre_context) do
17
- OpenStruct.new(:params => params, :helpers => helpers, :assigns => {})
16
+ OpenStruct.new(params: params, helpers: helpers, assigns: {})
18
17
  end
19
18
 
20
19
  context "when page_title is assigned" do
21
20
  it "should show the set page title" do
22
21
  arbre_context.assigns[:page_title] = "My Page Title"
23
22
  page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
24
- page.title.should eq "My Page Title"
23
+ expect(page.title).to eq "My Page Title"
25
24
  end
26
25
  end
27
26
 
28
27
  context "when page_title is not assigned" do
29
- it "should show the correct I18n text" do
30
- page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
31
- page.title.should eq "Edit Post"
28
+ {
29
+ "new" => "New Post",
30
+ "create" => "New Post",
31
+ "edit" => "Edit Post",
32
+ "update" => "Edit Post"
33
+ }.each do |action, title|
34
+ it "should show the correct I18n text on the #{action} action" do
35
+ params[:action] = action
36
+ page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
37
+ expect(page.title).to eq title
38
+ end
32
39
  end
33
40
  end
34
41
  end
@@ -0,0 +1,60 @@
1
+ require 'rails_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Index do
4
+ describe "#title" do
5
+ let!(:application){ ActiveAdmin::Application.new }
6
+ let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
+ let!(:params){ { controller: "UsersController", action: "edit" } }
8
+ let(:helpers) do
9
+ helpers = mock_action_view
10
+ allow(helpers).to receive(:active_admin_config).and_return(namespace.register(Post))
11
+ allow(helpers).to receive(:params).and_return(params)
12
+ helpers
13
+ end
14
+
15
+ let(:arbre_context) do
16
+ OpenStruct.new(params: params, helpers: helpers, assigns: {})
17
+ end
18
+
19
+ context "when config[:title] is assigned" do
20
+ context "with a Proc" do
21
+ it "should return the value of the assigned Proc" do
22
+ page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
23
+ allow(page).to receive(:config).and_return(title: ->{ "My Page Title" })
24
+ expect(page.title).to eq "My Page Title"
25
+ end
26
+ end
27
+
28
+ context "with a String" do
29
+ it "should return the assigned String" do
30
+ page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
31
+ allow(page).to receive(:config).and_return(title: ->{ "My Page Title" })
32
+ expect(page.title).to eq "My Page Title"
33
+ end
34
+ end
35
+
36
+ context "with a Integer" do
37
+ it "should return the Integer" do
38
+ page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
39
+ allow(page).to receive(:config).and_return(title: 1)
40
+ expect(page.title).to eq 1
41
+ end
42
+ end
43
+ end
44
+
45
+ context "when page_title is assigned" do
46
+ it "should return the set page title" do
47
+ arbre_context.assigns[:page_title] = "My Page Title"
48
+ page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
49
+ expect(page.title).to eq "My Page Title"
50
+ end
51
+ end
52
+
53
+ context "when page_title is not assigned" do
54
+ it "should return the correct I18n text" do
55
+ page = ActiveAdmin::Views::Pages::Index.new(arbre_context)
56
+ expect(page.title).to eq "Posts"
57
+ end
58
+ end
59
+ end
60
+ end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Pages::Layout do
4
4
 
@@ -6,22 +6,18 @@ describe ActiveAdmin::Views::Pages::Layout do
6
6
  let(:helpers) do
7
7
  helpers = mock_action_view
8
8
 
9
- helpers.stub :active_admin_application => active_admin_application,
10
- :active_admin_config => double('Config', action_items?: nil, breadcrumb: nil, sidebar_sections?: nil),
11
- :active_admin_namespace => active_admin_namespace,
12
- :breadcrumb_links => [],
13
- :content_for => "",
14
- :csrf_meta_tag => "",
15
- :current_active_admin_user => nil,
16
- :current_active_admin_user? => false,
17
- :current_menu => double('Menu', :items => []),
18
- :flash => {},
19
- :javascript_path => "/dummy/",
20
- :link_to => "",
21
- :render_or_call_method_or_proc_on => "",
22
- :stylesheet_link_tag => double(html_safe: ""),
23
- :view_factory => view_factory,
24
- :params => {:controller => 'UsersController', :action => 'edit'}
9
+ { active_admin_application: active_admin_application,
10
+ active_admin_config: double('Config', action_items?: nil, breadcrumb: nil, sidebar_sections?: nil),
11
+ active_admin_namespace: active_admin_namespace,
12
+ csrf_meta_tag: '',
13
+ current_active_admin_user: nil,
14
+ current_active_admin_user?: false,
15
+ current_menu: double('Menu', items: []),
16
+ params: {controller: 'UsersController', action: 'edit'},
17
+ env: {}
18
+ }.each do |method, returns|
19
+ allow(helpers).to receive(method).and_return returns
20
+ end
25
21
 
26
22
  helpers
27
23
  end
@@ -39,23 +35,23 @@ describe ActiveAdmin::Views::Pages::Layout do
39
35
  it "should be the @page_title if assigned in the controller" do
40
36
  assigns[:page_title] = "My Page Title"
41
37
 
42
- layout.title.should == "My Page Title"
38
+ expect(layout.title).to eq "My Page Title"
43
39
  end
44
40
 
45
41
  it "should be the default translation" do
46
42
  helpers.params[:action] = "edit"
47
43
 
48
- layout.title.should == "Edit"
44
+ expect(layout.title).to eq "Edit"
49
45
  end
50
46
 
51
47
  describe "the body" do
52
48
 
53
49
  it "should have class 'active_admin'" do
54
- layout.build.class_list.should include 'active_admin'
50
+ expect(layout.build.class_list).to include 'active_admin'
55
51
  end
56
52
 
57
53
  it "should have namespace class" do
58
- layout.build.class_list.should include "#{active_admin_namespace.name}_namespace"
54
+ expect(layout.build.class_list).to include "#{active_admin_namespace.name}_namespace"
59
55
  end
60
56
 
61
57
  end
@@ -1,17 +1,30 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Views::Pages::Show do
4
4
 
5
5
  describe "the resource" do
6
6
  let(:helpers) { double resource: resource }
7
7
  let(:arbre_context) { Arbre::Context.new({}, helpers) }
8
+ subject(:page) { ActiveAdmin::Views::Pages::Show.new(arbre_context) }
8
9
 
9
10
  context 'when the resource does not respond to #decorator' do
10
11
  let(:resource) { 'Test Resource' }
11
12
 
12
13
  it "normally returns the resource" do
13
- page = ActiveAdmin::Views::Pages::Show.new(arbre_context)
14
- page.resource.should == 'Test Resource'
14
+ expect(page.resource).to eq 'Test Resource'
15
+ end
16
+ end
17
+
18
+ context 'when you pass a block to main content' do
19
+ let(:block) { lambda { } }
20
+ let(:resource_class) { double(columns: [double('column', name: 'field')]) }
21
+ let(:resource) { double('resource', class: resource_class) }
22
+
23
+ before { allow(page).to receive(:active_admin_config).and_return(double(comments?: false))}
24
+
25
+ it 'appends it to the output' do
26
+ expect(page).to receive(:attributes_table).with(:field).and_yield
27
+ page.default_main_content(&block)
15
28
  end
16
29
  end
17
30
 
@@ -1,11 +1,11 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  include ActiveAdmin
4
4
  describe ActiveAdmin::Views::TabbedNavigation do
5
5
 
6
6
  let(:menu){ ActiveAdmin::Menu.new }
7
7
 
8
- let(:assigns){ { :active_admin_menu => menu } }
8
+ let(:assigns){ { active_admin_menu: menu } }
9
9
  let(:helpers){ mock_action_view }
10
10
 
11
11
  let(:tabbed_navigation) do
@@ -14,99 +14,108 @@ describe ActiveAdmin::Views::TabbedNavigation do
14
14
  }.children.first
15
15
  end
16
16
 
17
- let(:html) { tabbed_navigation.to_s }
17
+ let(:html) { Capybara.string(tabbed_navigation.to_s) }
18
18
 
19
19
  before do
20
- helpers.stub(:admin_logged_in?).and_return(false)
20
+ allow(helpers).to receive(:admin_logged_in?).and_return(false)
21
21
  end
22
22
 
23
23
  describe "rendering a menu" do
24
24
 
25
25
  before do
26
- menu.add :label => "Blog Posts", :url => :admin_posts_path
26
+ menu.add label: "Blog Posts", url: :admin_posts_path
27
27
 
28
- menu.add :label => "Reports", :url => "/admin/reports" do |reports|
29
- reports.add :label => "A Sub Reports", :url => "/admin/a-sub-reports"
30
- reports.add :label => "B Sub Reports", :url => "/admin/b-sub-reports"
31
- reports.add :label => proc{ "Label Proc Sub Reports" }, :url => "/admin/label-proc-sub-reports", :id => "Label Proc Sub Reports"
28
+ menu.add label: "Reports", url: "/admin/reports" do |reports|
29
+ reports.add label: "A Sub Reports", url: "/admin/a-sub-reports"
30
+ reports.add label: "B Sub Reports", url: "/admin/b-sub-reports"
31
+ reports.add label: proc{ "Label Proc Sub Reports" }, url: "/admin/label-proc-sub-reports", id: "Label Proc Sub Reports"
32
32
  end
33
33
 
34
- menu.add :label => "Administration", :url => "/admin/administration" do |administration|
35
- administration.add :label => "User administration",
36
- :url => '/admin/user-administration',
37
- :priority => 10,
38
- :if => proc { false }
34
+ menu.add label: "Administration", url: "/admin/administration" do |administration|
35
+ administration.add label: "User administration",
36
+ url: '/admin/user-administration',
37
+ priority: 10,
38
+ if: proc { false }
39
39
  end
40
40
 
41
- menu.add :label => "Management", :url => "#" do |management|
42
- management.add :label => "Order management",
43
- :url => '/admin/order-management',
44
- :priority => 10,
45
- :if => proc { false }
46
- management.add :label => "Bill management",
47
- :url => '/admin/bill-management',
48
- :priority => 10,
49
- :if => :admin_logged_in?
41
+ menu.add label: "Management", url: "#" do |management|
42
+ management.add label: "Order management",
43
+ url: '/admin/order-management',
44
+ priority: 10,
45
+ if: proc { false }
46
+ management.add label: "Bill management",
47
+ url: '/admin/bill-management',
48
+ priority: 10,
49
+ if: :admin_logged_in?
50
50
  end
51
+
52
+ menu.add label: "Charles Smith", id: "current_user", url: -> { nil }
51
53
  end
52
54
 
53
55
  it "should generate a ul" do
54
- html.should have_tag("ul")
56
+ expect(html).to have_selector("ul")
55
57
  end
56
58
 
57
59
  it "should generate an li for each item" do
58
- html.should have_tag("li", :parent => { :tag => "ul" })
60
+ expect(html).to have_selector("ul > li")
59
61
  end
60
62
 
61
63
  it "should generate a link for each item" do
62
- html.should have_tag("a", "Blog Posts", :attributes => { :href => '/admin/posts' })
64
+ expect(html).to have_selector("a[href='/admin/posts']", text: "Blog Posts")
63
65
  end
64
66
 
65
67
  it "should generate a nested list for children" do
66
- html.should have_tag("ul", :parent => { :tag => "li" })
68
+ expect(html).to have_selector("li > ul")
67
69
  end
68
70
 
69
71
  it "should generate a nested list with li for each child" do
70
- html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "a_sub_reports"})
71
- html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "b_sub_reports"})
72
+ expect(html).to have_selector("ul > li#a_sub_reports")
73
+ expect(html).to have_selector("ul > li#b_sub_reports")
72
74
  end
73
75
 
74
76
  it "should generate a valid id from a label proc" do
75
- html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "label_proc_sub_reports"})
77
+ expect(html).to have_selector("ul > li#label_proc_sub_reports")
76
78
  end
77
79
 
78
80
  it "should not generate a link for user administration" do
79
- html.should_not have_tag("a", "User administration", :attributes => { :href => '/admin/user-administration' })
81
+ expect(html).to_not have_selector("a[href='/admin/user-administration']", text: "User administration")
80
82
  end
81
83
 
82
84
  it "should generate the administration parent menu" do
83
- html.should have_tag("a", "Administration", :attributes => { :href => '/admin/administration' })
85
+ expect(html).to have_selector("a[href='/admin/administration']", text: "Administration")
84
86
  end
85
87
 
86
88
  it "should not generate a link for order management" do
87
- html.should_not have_tag("a", "Order management", :attributes => { :href => '/admin/order-management' })
89
+ expect(html).to_not have_selector("a[href='/admin/order-management']", text: "Order management")
88
90
  end
89
91
 
90
92
  it "should not generate a link for bill management" do
91
- html.should_not have_tag("a", "Bill management", :attributes => { :href => '/admin/bill-management' })
93
+ expect(html).to_not have_selector("a[href='/admin/bill-management']", text: "Bill management")
92
94
  end
93
95
 
94
96
  it "should not generate the management parent menu" do
95
- html.should_not have_tag("a", "Management", :attributes => { :href => '#' })
97
+ expect(html).to_not have_selector("a[href='#']", text: "Management")
98
+ end
99
+
100
+ context "when url is nil" do
101
+ it "should generate a span" do
102
+ selector = "li#current_user > span"
103
+ expect(html).to have_selector(selector, text: "Charles Smith")
104
+ end
96
105
  end
97
106
 
98
107
  describe "marking current item" do
99
108
 
100
109
  it "should add the 'current' class to the li" do
101
110
  assigns[:current_tab] = menu["Blog Posts"]
102
- html.should have_tag("li", :attributes => { :class => "current" })
111
+ expect(html).to have_selector("li.current")
103
112
  end
104
113
 
105
114
  it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
106
115
  assigns[:current_tab] = menu["Reports"]["A Sub Reports"]
107
- html.should have_tag("li", :attributes => { :id => "reports", :class => /current/ })
108
- html.should have_tag("li", :attributes => { :id => "reports", :class => /has_nested/ })
109
- html.should have_tag("li", :attributes => { :id => "a_sub_reports", :class => "current" })
116
+ expect(html).to have_selector("li#reports.current")
117
+ expect(html).to have_selector("li#reports.has_nested")
118
+ expect(html).to have_selector("li#a_sub_reports.current")
110
119
  end
111
120
 
112
121
  end
@@ -116,33 +125,33 @@ describe ActiveAdmin::Views::TabbedNavigation do
116
125
  describe "returning the menu items to display" do
117
126
 
118
127
  it "should return one item with no if block" do
119
- menu.add :label => "Hello World", :url => "/"
120
- tabbed_navigation.menu_items.should == menu.items
128
+ menu.add label: "Hello World", url: "/"
129
+ expect(tabbed_navigation.menu_items).to eq menu.items
121
130
  end
122
131
 
123
132
  it "should not include menu items with an if block that returns false" do
124
- menu.add :label => "Don't Show", :url => "/", :priority => 10, :if => proc{ false }
125
- tabbed_navigation.menu_items.should be_empty
133
+ menu.add label: "Don't Show", url: "/", priority: 10, if: proc{ false }
134
+ expect(tabbed_navigation.menu_items).to be_empty
126
135
  end
127
136
 
128
137
  it "should not include menu items with an if block that calls a method that returns false" do
129
- menu.add :label => "Don't Show", :url => "/", :priority => 10, :if => :admin_logged_in?
130
- tabbed_navigation.menu_items.should be_empty
138
+ menu.add label: "Don't Show", url: "/", priority: 10, if: :admin_logged_in?
139
+ expect(tabbed_navigation.menu_items).to be_empty
131
140
  end
132
141
 
133
142
  it "should not display any items that have no children to display" do
134
- menu.add :label => "Parent", :url => "#" do |p|
135
- p.add :label => "Child", :url => "/", :priority => 10, :if => proc{ false }
143
+ menu.add label: "Parent", url: "#" do |p|
144
+ p.add label: "Child", url: "/", priority: 10, if: proc{ false }
136
145
  end
137
- tabbed_navigation.menu_items.should be_empty
146
+ expect(tabbed_navigation.menu_items).to be_empty
138
147
  end
139
148
 
140
149
  it "should display a parent that has a child to display" do
141
- menu.add :label => "Parent", :url => "#" do |p|
142
- p.add :label => "Hidden Child", :url => "/", :priority => 10, :if => proc{ false }
143
- p.add :label => "Child", :url => "/"
150
+ menu.add label: "Parent", url: "#" do |p|
151
+ p.add label: "Hidden Child", url: "/", priority: 10, if: proc{ false }
152
+ p.add label: "Child", url: "/"
144
153
  end
145
- tabbed_navigation.should have(1).menu_items
154
+ expect(tabbed_navigation.menu_items.size).to eq(1)
146
155
  end
147
156
 
148
157
  end