activeadmin 0.6.6 → 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (512) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -8
  3. data/.hound.yml +11 -0
  4. data/.travis.yml +36 -10
  5. data/.yardopts +2 -1
  6. data/CHANGELOG.md +118 -67
  7. data/CONTRIBUTING.md +96 -73
  8. data/Gemfile +35 -35
  9. data/Guardfile +1 -0
  10. data/LICENSE +1 -1
  11. data/README.md +98 -0
  12. data/Rakefile +12 -4
  13. data/activeadmin.gemspec +21 -24
  14. data/app/assets/javascripts/active_admin/application.js.coffee +32 -0
  15. data/app/assets/javascripts/active_admin/base.js.coffee +14 -0
  16. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  17. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  19. data/app/assets/javascripts/active_admin/{components/jquery.aa.checkbox-toggler.js.coffee → lib/checkbox-toggler.js.coffee} +3 -4
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +101 -0
  21. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  22. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  23. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  24. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  25. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +68 -0
  26. data/app/assets/javascripts/active_admin/{components/jquery.aa.table-checkbox-toggler.js.coffee → lib/table-checkbox-toggler.js.coffee} +2 -3
  27. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  28. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +61 -17
  29. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  30. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  32. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  33. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -1
  34. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  36. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -14
  37. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +5 -4
  38. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  39. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  41. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +2 -3
  42. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  43. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  44. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +4 -2
  45. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  46. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -1
  49. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  51. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  52. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  53. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +8 -2
  54. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -7
  55. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -9
  56. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  57. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  58. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +5 -2
  59. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +11 -9
  60. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  61. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  62. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  63. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  64. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  65. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  66. data/app/views/active_admin/devise/sessions/new.html.erb +9 -7
  67. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  68. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  69. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  70. data/config/locales/ar.yml +120 -0
  71. data/config/locales/bg.yml +26 -6
  72. data/config/locales/bs.yml +122 -0
  73. data/config/locales/ca.yml +10 -1
  74. data/config/locales/cs.yml +7 -2
  75. data/config/locales/da.yml +7 -3
  76. data/config/locales/de-CH.yml +14 -31
  77. data/config/locales/de.yml +33 -33
  78. data/config/locales/el.yml +28 -2
  79. data/config/locales/en-GB.yml +12 -4
  80. data/config/locales/en.yml +29 -3
  81. data/config/locales/{es_MX.yml → es-MX.yml} +9 -24
  82. data/config/locales/es.yml +32 -25
  83. data/config/locales/fa.yml +120 -0
  84. data/config/locales/fi.yml +113 -0
  85. data/config/locales/fr.yml +21 -11
  86. data/config/locales/he.yml +7 -3
  87. data/config/locales/hr.yml +42 -11
  88. data/config/locales/hu.yml +10 -3
  89. data/config/locales/it.yml +31 -3
  90. data/config/locales/ja.yml +8 -3
  91. data/config/locales/ko.yml +7 -1
  92. data/config/locales/lt.yml +42 -11
  93. data/config/locales/lv.yml +7 -3
  94. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  95. data/config/locales/nl.yml +36 -5
  96. data/config/locales/pl.yml +13 -8
  97. data/config/locales/pt-BR.yml +37 -5
  98. data/config/locales/pt-PT.yml +8 -4
  99. data/config/locales/ro.yml +7 -3
  100. data/config/locales/ru.yml +26 -5
  101. data/config/locales/sv-SE.yml +9 -5
  102. data/config/locales/tr.yml +10 -3
  103. data/config/locales/uk.yml +36 -12
  104. data/config/locales/vi.yml +7 -3
  105. data/config/locales/zh-CN.yml +26 -10
  106. data/config/locales/zh-TW.yml +19 -13
  107. data/docs/0-installation.md +65 -29
  108. data/docs/1-general-configuration.md +92 -81
  109. data/docs/10-custom-pages.md +68 -68
  110. data/docs/11-decorators.md +48 -59
  111. data/docs/12-arbre-components.md +80 -74
  112. data/docs/13-authorization-adapter.md +128 -107
  113. data/docs/14-gotchas.md +92 -0
  114. data/docs/2-resource-customization.md +293 -178
  115. data/docs/3-index-pages.md +160 -86
  116. data/docs/3-index-pages/custom-index.md +31 -0
  117. data/docs/3-index-pages/index-as-block.md +14 -9
  118. data/docs/3-index-pages/index-as-blog.md +41 -31
  119. data/docs/3-index-pages/index-as-grid.md +16 -8
  120. data/docs/3-index-pages/index-as-table.md +129 -52
  121. data/docs/4-csv-format.md +31 -24
  122. data/docs/5-forms.md +133 -56
  123. data/docs/6-show-pages.md +89 -27
  124. data/docs/7-sidebars.md +48 -27
  125. data/docs/8-custom-actions.md +98 -77
  126. data/docs/9-batch-actions.md +210 -146
  127. data/docs/README.md +24 -0
  128. data/features/action_item.feature +3 -3
  129. data/features/authorization_pundit.feature +37 -0
  130. data/features/breadcrumb.feature +48 -0
  131. data/features/comments/commenting.feature +56 -13
  132. data/features/development_reloading.feature +17 -30
  133. data/features/edit_page.feature +12 -1
  134. data/features/favicon.feature +3 -3
  135. data/features/i18n.feature +5 -4
  136. data/features/index/batch_actions.feature +41 -0
  137. data/features/index/filters.feature +67 -0
  138. data/features/index/format_as_csv.feature +90 -4
  139. data/features/index/formats.feature +27 -0
  140. data/features/index/index_as_blog.feature +4 -4
  141. data/features/index/index_as_table.feature +102 -6
  142. data/features/index/index_blank_slate.feature +22 -0
  143. data/features/index/index_scope_to.feature +16 -16
  144. data/features/index/page_title.feature +11 -0
  145. data/features/index/pagination.feature +1 -1
  146. data/features/index/switch_index_view.feature +14 -14
  147. data/features/new_page.feature +13 -2
  148. data/features/registering_pages.feature +1 -1
  149. data/features/renamed_resource.feature +32 -0
  150. data/features/show/page_title.feature +11 -0
  151. data/features/show/tabs.feature +27 -0
  152. data/features/sidebar_sections.feature +12 -0
  153. data/features/site_title.feature +2 -2
  154. data/features/specifying_actions.feature +3 -3
  155. data/features/step_definitions/action_item_steps.rb +2 -2
  156. data/features/step_definitions/action_link_steps.rb +14 -1
  157. data/features/step_definitions/additional_web_steps.rb +19 -20
  158. data/features/step_definitions/asset_steps.rb +3 -3
  159. data/features/step_definitions/attribute_steps.rb +8 -3
  160. data/features/step_definitions/batch_action_steps.rb +26 -9
  161. data/features/step_definitions/blog_steps.rb +3 -0
  162. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  163. data/features/step_definitions/comment_steps.rb +1 -1
  164. data/features/step_definitions/configuration_steps.rb +9 -2
  165. data/features/step_definitions/dashboard_steps.rb +2 -2
  166. data/features/step_definitions/factory_steps.rb +9 -8
  167. data/features/step_definitions/filter_steps.rb +25 -3
  168. data/features/step_definitions/flash_steps.rb +3 -3
  169. data/features/step_definitions/format_steps.rb +18 -18
  170. data/features/step_definitions/index_scope_steps.rb +5 -5
  171. data/features/step_definitions/layout_steps.rb +1 -1
  172. data/features/step_definitions/member_link_steps.rb +2 -2
  173. data/features/step_definitions/menu_steps.rb +3 -3
  174. data/features/step_definitions/pagination_steps.rb +2 -3
  175. data/features/step_definitions/sidebar_steps.rb +8 -3
  176. data/features/step_definitions/site_title_steps.rb +6 -4
  177. data/features/step_definitions/symbol_leak_steps.rb +3 -0
  178. data/features/step_definitions/tab_steps.rb +5 -0
  179. data/features/step_definitions/table_steps.rb +4 -4
  180. data/features/step_definitions/user_steps.rb +10 -7
  181. data/features/step_definitions/web_steps.rb +14 -11
  182. data/features/sti_resource.feature +6 -2
  183. data/features/strong_parameters.feature +73 -0
  184. data/features/support/env.rb +34 -9
  185. data/features/support/paths.rb +14 -6
  186. data/features/support/selectors.rb +1 -1
  187. data/features/symbol_leak.feature +35 -0
  188. data/features/users/resetting_password.feature +5 -6
  189. data/lib/active_admin.rb +26 -25
  190. data/lib/active_admin/abstract_view_factory.rb +7 -17
  191. data/lib/active_admin/application.rb +72 -59
  192. data/lib/active_admin/asset_registration.rb +2 -2
  193. data/lib/active_admin/authorization_adapter.rb +2 -2
  194. data/lib/active_admin/base_controller.rb +2 -3
  195. data/lib/active_admin/base_controller/authorization.rb +13 -31
  196. data/lib/active_admin/batch_actions.rb +1 -1
  197. data/lib/active_admin/batch_actions/controller.rb +24 -8
  198. data/lib/active_admin/batch_actions/resource_extension.rb +47 -18
  199. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  200. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  201. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  202. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  203. data/lib/active_admin/callbacks.rb +25 -24
  204. data/lib/active_admin/cancan_adapter.rb +7 -11
  205. data/lib/active_admin/csv_builder.rb +92 -15
  206. data/lib/active_admin/dependency.rb +93 -0
  207. data/lib/active_admin/deprecation.rb +6 -7
  208. data/lib/active_admin/devise.rb +28 -18
  209. data/lib/active_admin/dsl.rb +18 -11
  210. data/lib/active_admin/engine.rb +10 -8
  211. data/lib/active_admin/error.rb +62 -0
  212. data/lib/active_admin/filters/dsl.rb +2 -2
  213. data/lib/active_admin/filters/forms.rb +17 -27
  214. data/lib/active_admin/filters/formtastic_addons.rb +49 -15
  215. data/lib/active_admin/filters/resource_extension.rb +43 -34
  216. data/lib/active_admin/form_builder.rb +93 -154
  217. data/lib/active_admin/helpers/collection.rb +7 -13
  218. data/lib/active_admin/helpers/i18n.rb +7 -0
  219. data/lib/active_admin/helpers/optional_display.rb +5 -5
  220. data/lib/active_admin/helpers/routes/url_helpers.rb +15 -0
  221. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  222. data/lib/active_admin/helpers/settings.rb +16 -9
  223. data/lib/active_admin/iconic.rb +17 -15
  224. data/lib/active_admin/iconic/icons.rb +136 -136
  225. data/lib/active_admin/inputs.rb +11 -7
  226. data/lib/active_admin/inputs/datepicker_input.rb +12 -3
  227. data/lib/active_admin/inputs/filters/base.rb +42 -0
  228. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  229. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  230. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  231. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  232. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  233. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  234. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  235. data/lib/active_admin/menu.rb +6 -4
  236. data/lib/active_admin/menu_collection.rb +1 -4
  237. data/lib/active_admin/namespace.rb +55 -29
  238. data/lib/active_admin/order_clause.rb +26 -0
  239. data/lib/active_admin/orm/active_record.rb +5 -0
  240. data/lib/active_admin/orm/active_record/comments.rb +81 -0
  241. data/lib/active_admin/orm/active_record/comments/comment.rb +45 -0
  242. data/lib/active_admin/{comments → orm/active_record/comments}/namespace_helper.rb +2 -2
  243. data/lib/active_admin/{comments → orm/active_record/comments}/resource_helper.rb +1 -1
  244. data/lib/active_admin/{comments → orm/active_record/comments}/show_page_helper.rb +0 -0
  245. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  246. data/lib/active_admin/{comments → orm/active_record/comments}/views/active_admin_comments.rb +16 -14
  247. data/lib/active_admin/orm/mongoid.rb +1 -0
  248. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  249. data/lib/active_admin/page.rb +7 -3
  250. data/lib/active_admin/page_dsl.rb +1 -1
  251. data/lib/active_admin/page_presenter.rb +2 -2
  252. data/lib/active_admin/pundit_adapter.rb +68 -0
  253. data/lib/active_admin/resource.rb +16 -17
  254. data/lib/active_admin/resource/action_items.rb +23 -18
  255. data/lib/active_admin/resource/belongs_to.rb +7 -3
  256. data/lib/active_admin/resource/controllers.rb +1 -0
  257. data/lib/active_admin/resource/includes.rb +12 -0
  258. data/lib/active_admin/resource/menu.rb +5 -5
  259. data/lib/active_admin/resource/naming.rb +27 -43
  260. data/lib/active_admin/resource/page_presenters.rb +1 -1
  261. data/lib/active_admin/resource/routes.rb +27 -11
  262. data/lib/active_admin/resource/scope_to.rb +7 -7
  263. data/lib/active_admin/resource/sidebars.rb +1 -0
  264. data/lib/active_admin/resource_controller.rb +6 -7
  265. data/lib/active_admin/resource_controller/data_access.rb +101 -93
  266. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  267. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  268. data/lib/active_admin/resource_dsl.rb +53 -10
  269. data/lib/active_admin/router.rb +7 -7
  270. data/lib/active_admin/scope.rb +6 -6
  271. data/lib/active_admin/sidebar_section.rb +10 -2
  272. data/lib/active_admin/version.rb +1 -1
  273. data/lib/active_admin/view_factory.rb +17 -17
  274. data/lib/active_admin/view_helpers.rb +0 -1
  275. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  276. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
  277. data/lib/active_admin/view_helpers/display_helper.rb +30 -15
  278. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -25
  279. data/lib/active_admin/view_helpers/fields_for.rb +4 -4
  280. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  281. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  282. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  283. data/lib/active_admin/views/action_items.rb +2 -2
  284. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  285. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  286. data/lib/active_admin/views/components/attributes_table.rb +63 -21
  287. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  288. data/lib/active_admin/views/components/columns.rb +13 -7
  289. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  290. data/lib/active_admin/views/components/index_list.rb +7 -7
  291. data/lib/active_admin/views/components/paginated_collection.rb +38 -20
  292. data/lib/active_admin/views/components/panel.rb +8 -2
  293. data/lib/active_admin/views/components/popover.rb +1 -1
  294. data/lib/active_admin/views/components/scopes.rb +5 -4
  295. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  296. data/lib/active_admin/views/components/site_title.rb +2 -2
  297. data/lib/active_admin/views/components/status_tag.rb +34 -11
  298. data/lib/active_admin/views/components/table_for.rb +90 -45
  299. data/lib/active_admin/views/components/tabs.rb +28 -0
  300. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  301. data/lib/active_admin/views/footer.rb +3 -3
  302. data/lib/active_admin/views/header.rb +3 -3
  303. data/lib/active_admin/views/index_as_block.rb +10 -10
  304. data/lib/active_admin/views/index_as_blog.rb +45 -39
  305. data/lib/active_admin/views/index_as_grid.rb +14 -10
  306. data/lib/active_admin/views/index_as_table.rb +242 -129
  307. data/lib/active_admin/views/pages/base.rb +22 -18
  308. data/lib/active_admin/views/pages/form.rb +21 -11
  309. data/lib/active_admin/views/pages/index.rb +40 -35
  310. data/lib/active_admin/views/pages/layout.rb +1 -1
  311. data/lib/active_admin/views/pages/show.rb +4 -4
  312. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  313. data/lib/active_admin/views/title_bar.rb +10 -8
  314. data/lib/generators/active_admin/assets/assets_generator.rb +3 -28
  315. data/lib/generators/active_admin/assets/templates/{3.1/active_admin.css.scss → active_admin.css.scss} +0 -0
  316. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  317. data/lib/generators/active_admin/devise/devise_generator.rb +24 -26
  318. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  319. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +28 -26
  320. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -2
  321. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  322. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  323. data/lib/generators/active_admin/page/USAGE +8 -0
  324. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  325. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  326. data/lib/generators/active_admin/resource/resource_generator.rb +3 -5
  327. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  328. data/lib/ransack_ext.rb +12 -0
  329. data/script/local +2 -2
  330. data/script/travis_cache +107 -0
  331. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  332. data/spec/javascripts/fixtures/flashes.html +2 -0
  333. data/spec/rails_helper.rb +154 -0
  334. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  335. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  336. data/spec/requests/memory_spec.rb +23 -0
  337. data/spec/requests/stylesheets_spec.rb +18 -0
  338. data/spec/spec_helper.rb +12 -173
  339. data/spec/support/detect_rails_version.rb +9 -17
  340. data/spec/support/rails_template.rb +64 -35
  341. data/spec/support/rails_template_with_data.rb +14 -14
  342. data/spec/support/templates/admin/stores.rb +5 -1
  343. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  344. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  345. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  346. data/spec/support/templates/policies/application_policy.rb +45 -0
  347. data/spec/support/templates/policies/category_policy.rb +7 -0
  348. data/spec/support/templates/policies/post_policy.rb +15 -0
  349. data/spec/support/templates/policies/store_policy.rb +11 -0
  350. data/spec/support/templates/policies/user_policy.rb +11 -0
  351. data/spec/support/templates/post_decorator.rb +4 -46
  352. data/spec/unit/abstract_view_factory_spec.rb +16 -16
  353. data/spec/unit/action_builder_spec.rb +24 -18
  354. data/spec/unit/active_admin_spec.rb +2 -2
  355. data/spec/unit/application_spec.rb +33 -34
  356. data/spec/unit/asset_registration_spec.rb +25 -29
  357. data/spec/unit/authorization/authorization_adapter_spec.rb +10 -10
  358. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  359. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  360. data/spec/unit/auto_link_spec.rb +43 -13
  361. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  362. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  363. data/spec/unit/belongs_to_spec.rb +28 -19
  364. data/spec/unit/cancan_adapter_spec.rb +8 -8
  365. data/spec/unit/comments_spec.rb +99 -39
  366. data/spec/unit/component_spec.rb +3 -3
  367. data/spec/unit/config_shared_examples.rb +10 -10
  368. data/spec/unit/controller_filters_spec.rb +23 -16
  369. data/spec/unit/csv_builder_spec.rb +165 -24
  370. data/spec/unit/dependency_spec.rb +135 -0
  371. data/spec/unit/devise_spec.rb +17 -37
  372. data/spec/unit/dsl_spec.rb +70 -9
  373. data/spec/unit/event_spec.rb +11 -11
  374. data/spec/unit/filters/filter_form_builder_spec.rb +207 -148
  375. data/spec/unit/filters/resource_spec.rb +60 -26
  376. data/spec/unit/form_builder_spec.rb +419 -145
  377. data/spec/unit/generators/install_spec.rb +23 -0
  378. data/spec/unit/helpers/collection_spec.rb +18 -18
  379. data/spec/unit/helpers/scope_chain_spec.rb +6 -6
  380. data/spec/unit/helpers/settings_spec.rb +4 -4
  381. data/spec/unit/i18n_spec.rb +12 -0
  382. data/spec/unit/menu_collection_spec.rb +14 -14
  383. data/spec/unit/menu_item_spec.rb +42 -42
  384. data/spec/unit/menu_spec.rb +20 -20
  385. data/spec/unit/namespace/authorization_spec.rb +8 -8
  386. data/spec/unit/namespace/register_page_spec.rb +11 -11
  387. data/spec/unit/namespace/register_resource_spec.rb +28 -30
  388. data/spec/unit/namespace_spec.rb +20 -20
  389. data/spec/unit/order_clause_spec.rb +81 -0
  390. data/spec/unit/page_controller_spec.rb +1 -1
  391. data/spec/unit/page_spec.rb +18 -12
  392. data/spec/unit/pretty_format_spec.rb +42 -14
  393. data/spec/unit/pundit_adapter_spec.rb +98 -0
  394. data/spec/unit/resource/action_items_spec.rb +15 -12
  395. data/spec/unit/resource/includes_spec.rb +21 -0
  396. data/spec/unit/resource/menu_spec.rb +1 -1
  397. data/spec/unit/resource/naming_spec.rb +35 -21
  398. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  399. data/spec/unit/resource/pagination_spec.rb +6 -6
  400. data/spec/unit/resource/routes_spec.rb +10 -10
  401. data/spec/unit/resource/scopes_spec.rb +14 -7
  402. data/spec/unit/resource/sidebars_spec.rb +6 -6
  403. data/spec/unit/resource_collection_spec.rb +31 -38
  404. data/spec/unit/resource_controller/data_access_spec.rb +96 -30
  405. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  406. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  407. data/spec/unit/resource_controller_spec.rb +73 -70
  408. data/spec/unit/resource_registration_spec.rb +12 -12
  409. data/spec/unit/resource_spec.rb +77 -42
  410. data/spec/unit/routing_spec.rb +39 -31
  411. data/spec/unit/scope_spec.rb +112 -30
  412. data/spec/unit/settings_spec.rb +51 -21
  413. data/spec/unit/view_factory_spec.rb +2 -3
  414. data/spec/unit/view_helpers/breadcrumbs_spec.rb +71 -60
  415. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  416. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  417. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  418. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  419. data/spec/unit/view_helpers/form_helper_spec.rb +10 -23
  420. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +64 -22
  421. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  422. data/spec/unit/views/components/attributes_table_spec.rb +171 -30
  423. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  424. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  425. data/spec/unit/views/components/columns_spec.rb +52 -22
  426. data/spec/unit/views/components/index_list_spec.rb +11 -8
  427. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  428. data/spec/unit/views/components/paginated_collection_spec.rb +79 -90
  429. data/spec/unit/views/components/panel_spec.rb +32 -21
  430. data/spec/unit/views/components/popover_spec.rb +7 -7
  431. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  432. data/spec/unit/views/components/site_title_spec.rb +26 -26
  433. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  434. data/spec/unit/views/components/table_for_spec.rb +237 -35
  435. data/spec/unit/views/components/tabs_spec.rb +39 -0
  436. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  437. data/spec/unit/views/pages/form_spec.rb +17 -10
  438. data/spec/unit/views/pages/index_spec.rb +60 -0
  439. data/spec/unit/views/pages/layout_spec.rb +17 -21
  440. data/spec/unit/views/pages/show_spec.rb +18 -6
  441. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  442. data/tasks/docs.rake +9 -11
  443. data/tasks/parallel_tests.rake +8 -2
  444. data/tasks/test.rake +13 -9
  445. data/tasks/yard.rake +7 -4
  446. metadata +219 -163
  447. data/.document +0 -5
  448. data/README.rdoc +0 -88
  449. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  450. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  451. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  452. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  453. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  454. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  455. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  456. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  457. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  458. data/app/assets/images/active_admin/loading.gif +0 -0
  459. data/app/assets/javascripts/active_admin/application.js +0 -3
  460. data/app/assets/javascripts/active_admin/base.js +0 -5
  461. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +0 -105
  462. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +0 -97
  463. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +0 -4
  464. data/app/assets/javascripts/active_admin/pages/application.js.coffee +0 -21
  465. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +0 -26
  466. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  467. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -41
  468. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  469. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +0 -38
  470. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +0 -43
  471. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  472. data/app/views/active_admin/resource/index.csv.erb +0 -23
  473. data/docs/3-index-pages/create-an-index.md +0 -29
  474. data/lib/active_admin/comments.rb +0 -83
  475. data/lib/active_admin/comments/comment.rb +0 -42
  476. data/lib/active_admin/comments/views.rb +0 -2
  477. data/lib/active_admin/dependency_checker.rb +0 -46
  478. data/lib/active_admin/inputs/filter_base.rb +0 -33
  479. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  480. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -36
  481. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -40
  482. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  483. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  484. data/lib/active_admin/inputs/filter_select_input.rb +0 -49
  485. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  486. data/lib/active_admin/reloader.rb +0 -130
  487. data/lib/active_admin/resource_controller/actions.rb +0 -81
  488. data/lib/active_admin/sass/active_admin.scss +0 -3
  489. data/lib/active_admin/sass/css_loader.rb +0 -16
  490. data/lib/active_admin/sass/helpers.rb +0 -45
  491. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  492. data/lib/active_admin/views/dashboard_section_renderer.rb +0 -19
  493. data/lib/active_admin/views/pages/dashboard.rb +0 -62
  494. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +0 -1
  495. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +0 -1
  496. data/lib/meta_search_ext.rb +0 -10
  497. data/spec/integration/memory_spec.rb +0 -29
  498. data/spec/integration/stylesheets_spec.rb +0 -41
  499. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  500. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  501. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  502. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  503. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  504. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  505. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  506. data/spec/javascripts/support/jquery.min.js +0 -4
  507. data/spec/spec_helper_without_rails.rb +0 -11
  508. data/spec/unit/generators/install_rails_3_1_spec.rb +0 -16
  509. data/spec/unit/rails_spec.rb +0 -43
  510. data/spec/unit/reloader_spec.rb +0 -124
  511. data/spec/unit/sass/helpers_spec.rb +0 -47
  512. data/tasks/js.rake +0 -32
@@ -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 => mock('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 => mock('Menu', :items => []),
18
- :flash => {},
19
- :javascript_path => "/dummy/",
20
- :link_to => "",
21
- :render_or_call_method_or_proc_on => "",
22
- :stylesheet_link_tag => mock(: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,18 +1,30 @@
1
- require 'spec_helper'
2
-
1
+ require 'rails_helper'
3
2
 
4
3
  describe ActiveAdmin::Views::Pages::Show do
5
4
 
6
5
  describe "the resource" do
7
- let(:helpers) { mock(:resource => resource) }
8
- let(:arbre_context) { OpenStruct.new(:helpers => helpers) }
6
+ let(:helpers) { double resource: resource }
7
+ let(:arbre_context) { Arbre::Context.new({}, helpers) }
8
+ subject(:page) { ActiveAdmin::Views::Pages::Show.new(arbre_context) }
9
9
 
10
10
  context 'when the resource does not respond to #decorator' do
11
11
  let(:resource) { 'Test Resource' }
12
12
 
13
13
  it "normally returns the resource" do
14
- page = ActiveAdmin::Views::Pages::Show.new(arbre_context)
15
- 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)
16
28
  end
17
29
  end
18
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
@@ -1,24 +1,22 @@
1
1
  namespace :docs do
2
2
 
3
- def rdoc_to_markdown(content)
4
- content.gsub(/^ ?(=+) /) do |m|
5
- m.gsub('=', '#')
6
- end
7
- end
3
+ AUTOGEN_WARNING = <<-EOD
4
+ <!--
5
+ WARNING: Please DO NOT edit this file! Update
6
+ source documentation in lib/active_admin/views
7
+ and execute rake yard to regenerate it.
8
+ -->
8
9
 
9
- def prepare_docstring(content)
10
- content = rdoc_to_markdown(content)
11
- "<!-- Please don't edit this file. It will be clobbered. -->\n\n#{content}"
12
- end
10
+ EOD
13
11
 
14
12
  def filename_from_module(mod)
15
- mod.name.to_s.underscore.gsub('_', '-')
13
+ mod.name.to_s.underscore.tr('_', '-')
16
14
  end
17
15
 
18
16
  def write_docstrings_to(path, mods)
19
17
  mods.each do |mod|
20
18
  File.open("#{path}/#{filename_from_module(mod)}.md", 'w+') do |f|
21
- f << prepare_docstring(mod.docstring)
19
+ f << AUTOGEN_WARNING + mod.docstring + "\n"
22
20
  end
23
21
  end
24
22
  end