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
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'base64'
4
+ require 'digest'
5
+ require 'openssl'
6
+ require 'shellwords'
7
+
8
+ prefix = "ruby_#{RUBY_VERSION}-rails_#{ENV.fetch 'RAILS'}-"
9
+ BUNDLE = prefix + 'bundle'
10
+ APP = prefix + 'app'
11
+
12
+ def download_bundle
13
+ s3 :save, file: "#{BUNDLE}.sha2", as: "remote-#{BUNDLE}.sha2"
14
+ s3 :save, file: "#{BUNDLE}.tgz", as: "remote-#{BUNDLE}.tgz", untar: true
15
+ end
16
+
17
+ def download_app
18
+ # Force test app re-build if dependencies were updated
19
+ unless digest_changed? 'Gemfile.lock', "remote-#{BUNDLE}.sha2", "#{BUNDLE}.sha2"
20
+ s3 :save, file: "#{APP}.sha2", as: "remote-#{APP}.sha2"
21
+ # Force test app re-build if spec/support changed
22
+ unless digest_changed? 'spec/support', "remote-#{APP}.sha2", "#{APP}.sha2"
23
+ s3 :save, file: "#{APP}.tgz", as: "remote-#{APP}.tgz", untar: true
24
+ end
25
+ end
26
+ end
27
+
28
+ def upload
29
+ unless ID && SECRET
30
+ puts "S3 credentials missing"
31
+ return
32
+ end
33
+
34
+ [ ['Gemfile.lock', BUNDLE, 'bundle'],
35
+ ['spec/support', APP, 'spec/rails']
36
+ ].each do |to_check, name, to_save|
37
+ puts "=> Checking #{to_check} for changes"
38
+ if ret = digest_changed?(to_check, "remote-#{name}.sha2", "#{name}.sha2")
39
+ puts " => Changes found: #{ret[:old]} -> #{ret[:new]}"
40
+
41
+ puts " => Creating an archive"
42
+ `tar -cjf #{name}.tgz #{to_save}`
43
+
44
+ puts " => Uploading a new archive"
45
+ s3 :upload, file: "#{name}.tgz"
46
+ s3 :upload, file: "#{name}.sha2"
47
+ else
48
+ puts " => There were no changes, doing nothing"
49
+ end
50
+ end
51
+ end
52
+
53
+ def digest_changed?(to_check, old_digest_file, new_digest_file)
54
+ if File.exists? new_digest_file
55
+ digest = File.read new_digest_file
56
+ else
57
+ # Supports a single file, as well as a folder
58
+ files = Dir[to_check, "#{to_check}/**/*"].reject{ |f| File.directory? f }
59
+ content = files.sort!.map{ |f| File.read f }.join
60
+ digest = Digest::SHA2.hexdigest content
61
+ File.write new_digest_file, digest
62
+ end
63
+
64
+ old_digest = File.read old_digest_file if File.exists? old_digest_file
65
+
66
+ {old: old_digest, new: digest} if digest != old_digest
67
+ end
68
+
69
+ def sign(secret, to_sign)
70
+ Base64.strict_encode64 OpenSSL::HMAC.digest OpenSSL::Digest::SHA1.new, secret, to_sign
71
+ end
72
+
73
+ ID = ENV['AWS_S3_ID']
74
+ SECRET = ENV['AWS_S3_SECRET']
75
+ URL = 'https://s3.amazonaws.com/ActiveAdmin'
76
+
77
+ # s3 :list
78
+ # s3 :upload, file: 'foo'
79
+ # s3 :find, file: 'foo'
80
+ # s3 :save, file: 'foo', as: 'bar'
81
+ # s3 :save, file: 'foo', untar: true
82
+ def s3(action, options = {})
83
+ verb = {list: :get, upload: :put, find: :get, save: :get}.fetch action
84
+ file = options.fetch(:file) unless action == :list
85
+ extra_arg = case action
86
+ when :upload then "-T #{file}"
87
+ when :save then options[:as] ? "-o #{options[:as]}" : '-O'
88
+ end
89
+ do_after = "&& tar -xf #{options[:as] || file}" if options[:untar]
90
+
91
+ if ID && SECRET
92
+ now = Time.now.strftime "%a, %d %b %Y %H:%M:%S %z"
93
+ signature = sign SECRET, "#{verb.upcase}\n\n\n#{now}\n/ActiveAdmin/#{file}"
94
+ headers = ["Authorization: AWS #{ID}:#{signature}", "Date: #{now}"].map do |h|
95
+ "-H #{Shellwords.escape h}"
96
+ end.join ' '
97
+ end
98
+
99
+ output = `curl -f #{headers} #{extra_arg} #{URL}/#{file} #{do_after}`
100
+ [$?.success?, output]
101
+ end
102
+
103
+ if %w[download_bundle download_app upload].include? ARGV[0]
104
+ send ARGV[0]
105
+ else
106
+ raise "unexpected argument(s): #{ARGV}"
107
+ end
@@ -0,0 +1,25 @@
1
+ describe "ActiveAdmin.flash", ->
2
+ beforeEach ->
3
+ loadFixtures('flashes.html')
4
+ @flashes = $(".flashes")
5
+
6
+ describe "abstract", ->
7
+ it "should add a flash box with class and message"
8
+ ActiveAdmin.flash.abstract "a abstract message", "abstract"
9
+ flash = @flashes.find(".flash")
10
+ expect(flash).toHaveClass("abstract")
11
+ expect(flash.text()).toHaveClass("a abstract message")
12
+
13
+ describe "error", ->
14
+ it "should add a flash box with class and message"
15
+ ActiveAdmin.flash.abstract "a error message"
16
+ flash = @flashes.find(".flash")
17
+ expect(flash).toHaveClass("error")
18
+ expect(flash.text()).toHaveClass("a error message")
19
+
20
+ describe "notice", ->
21
+ it "should add a flash box with class and message"
22
+ ActiveAdmin.flash.abstract "a notice message"
23
+ flash = @flashes.find(".flash")
24
+ expect(flash).toHaveClass("notice")
25
+ expect(flash.text()).toHaveClass("a notice message")
@@ -0,0 +1,2 @@
1
+ <div class="flashes">
2
+ </div>
@@ -0,0 +1,154 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdminIntegrationSpecHelper
4
+ extend self
5
+
6
+ def load_defaults!
7
+ ActiveAdmin.unload!
8
+ ActiveAdmin.load!
9
+ ActiveAdmin.register(Category)
10
+ ActiveAdmin.register(User)
11
+ ActiveAdmin.register(Post){ belongs_to :user, optional: true }
12
+ reload_menus!
13
+ end
14
+
15
+ def reload_menus!
16
+ ActiveAdmin.application.namespaces.each{|n| n.reset_menu! }
17
+ end
18
+
19
+ # Sometimes we need to reload the routes within
20
+ # the application to test them out
21
+ def reload_routes!
22
+ Rails.application.reload_routes!
23
+ end
24
+
25
+ # Helper method to load resources and ensure that Active Admin is
26
+ # setup with the new configurations.
27
+ #
28
+ # Eg:
29
+ # load_resources do
30
+ # ActiveAdmin.regiser(Post)
31
+ # end
32
+ #
33
+ def load_resources
34
+ ActiveAdmin.unload!
35
+ yield
36
+ reload_menus!
37
+ reload_routes!
38
+ end
39
+
40
+ # Sets up a describe block where you can render controller
41
+ # actions. Uses the Admin::PostsController as the subject
42
+ # for the describe block
43
+ def describe_with_render(*args, &block)
44
+ describe *args do
45
+ include RSpec::Rails::ControllerExampleGroup
46
+ render_views
47
+ # metadata[:behaviour][:describes] = ActiveAdmin.namespaces[:admin].resources['Post'].controller
48
+ module_eval &block
49
+ end
50
+ end
51
+
52
+ def arbre(assigns = {}, helpers = mock_action_view, &block)
53
+ Arbre::Context.new(assigns, helpers, &block)
54
+ end
55
+
56
+ def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
57
+ arbre(assigns, helpers, &block).children.first
58
+ end
59
+
60
+ # Setup a describe block which uses capybara and rails integration
61
+ # test methods.
62
+ def describe_with_capybara(*args, &block)
63
+ describe *args do
64
+ include RSpec::Rails::IntegrationExampleGroup
65
+ module_eval &block
66
+ end
67
+ end
68
+
69
+ # Returns a fake action view instance to use with our renderers
70
+ def mock_action_view(assigns = {})
71
+ controller = ActionView::TestCase::TestController.new
72
+ ActionView::Base.send :include, ActionView::Helpers
73
+ ActionView::Base.send :include, ActiveAdmin::ViewHelpers
74
+ ActionView::Base.send :include, Rails.application.routes.url_helpers
75
+ ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
76
+ end
77
+ alias_method :action_view, :mock_action_view
78
+
79
+ # A mock resource to register
80
+ class MockResource
81
+ end
82
+
83
+ def with_translation(translation)
84
+ I18n.backend.store_translations :en, translation
85
+ yield
86
+ ensure
87
+ I18n.backend.reload!
88
+ end
89
+
90
+ end
91
+
92
+ ENV['RAILS_ENV'] = 'test'
93
+ ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{ENV['RAILS']}", __FILE__)
94
+
95
+ # Create the test app if it doesn't exists
96
+ unless File.exists?(ENV['RAILS_ROOT'])
97
+ system 'rake setup'
98
+ end
99
+
100
+ require 'rails'
101
+ require 'active_record'
102
+ require 'active_admin'
103
+ require 'devise'
104
+ ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
105
+
106
+ require ENV['RAILS_ROOT'] + '/config/environment'
107
+
108
+ require 'rspec/rails'
109
+
110
+ # Setup Some Admin stuff for us to play with
111
+ include ActiveAdminIntegrationSpecHelper
112
+ load_defaults!
113
+ reload_routes!
114
+
115
+ # Disabling authentication in specs so that we don't have to worry about
116
+ # it allover the place
117
+ ActiveAdmin.application.authentication_method = false
118
+ ActiveAdmin.application.current_user_method = false
119
+
120
+ # Don't add asset cache timestamps. Makes it easy to integration
121
+ # test for the presence of an asset file
122
+ ENV["RAILS_ASSET_ID"] = ''
123
+
124
+ RSpec.configure do |config|
125
+ config.use_transactional_fixtures = true
126
+ config.use_instantiated_fixtures = false
127
+ config.include Devise::TestHelpers, type: :controller
128
+ config.render_views = false
129
+ config.filter_run focus: true
130
+ config.filter_run_excluding skip: true
131
+ config.run_all_when_everything_filtered = true
132
+ end
133
+
134
+ # All RSpec configuration needs to happen before any examples
135
+ # or else it whines.
136
+ require 'integration_example_group'
137
+ RSpec.configure do |c|
138
+ c.include RSpec::Rails::IntegrationExampleGroup, file_path: /\bspec\/requests\//
139
+ c.include Devise::TestHelpers, type: :controller
140
+ end
141
+
142
+ # improve the performance of the specs suite by not logging anything
143
+ # see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
144
+ Rails.logger.level = 4
145
+
146
+
147
+ # Improves performance by forcing the garbage collector to run less often.
148
+ unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
149
+ require 'support/deferred_garbage_collection'
150
+ RSpec.configure do |config|
151
+ config.before(:all) { DeferredGarbageCollection.start }
152
+ config.after(:all) { DeferredGarbageCollection.reconsider }
153
+ end
154
+ end
@@ -1,6 +1,6 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
- describe ActiveAdmin::Application do
3
+ describe ActiveAdmin::Application, :type => :request do
4
4
 
5
5
  include Rails.application.routes.url_helpers
6
6
 
@@ -22,11 +22,11 @@ describe ActiveAdmin::Application do
22
22
  end
23
23
 
24
24
  it "should generate a log out path" do
25
- destroy_admin_user_session_path.should == "/admin_users/logout"
25
+ expect(destroy_admin_user_session_path).to eq "/logout"
26
26
  end
27
27
 
28
28
  it "should generate a log in path" do
29
- new_admin_user_session_path.should == "/admin_users/login"
29
+ expect(new_admin_user_session_path).to eq "/login"
30
30
  end
31
31
 
32
32
  end
@@ -49,11 +49,11 @@ describe ActiveAdmin::Application do
49
49
  end
50
50
 
51
51
  it "should generate a log out path" do
52
- destroy_admin_user_session_path.should == "/test/logout"
52
+ expect(destroy_admin_user_session_path).to eq "/test/logout"
53
53
  end
54
54
 
55
55
  it "should generate a log in path" do
56
- new_admin_user_session_path.should == "/test/login"
56
+ expect(new_admin_user_session_path).to eq "/test/login"
57
57
  end
58
58
 
59
59
  end
@@ -1,14 +1,14 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
  require 'jslint'
3
3
 
4
4
  %x[which java]
5
5
  if $? == 0 # Only run the JS Lint test if Java is installed
6
- describe "Javascript" do
6
+ describe "Javascript", :type => :request do
7
7
  before do
8
8
  @lint = JSLint::Lint.new(
9
- :paths => ['public/javascripts/**/*.js'],
10
- :exclude_paths => ['public/javascripts/vendor/**/*.js'],
11
- :config_path => 'spec/support/jslint.yml'
9
+ paths: ['public/javascripts/**/*.js'],
10
+ exclude_paths: ['public/javascripts/vendor/**/*.js'],
11
+ config_path: 'spec/support/jslint.yml'
12
12
  )
13
13
  end
14
14
 
@@ -0,0 +1,23 @@
1
+ require 'rails_helper'
2
+
3
+ describe "Memory Leak", :type => :request do
4
+
5
+ def count_instances_of(klass)
6
+ ObjectSpace.each_object(klass) { }
7
+ end
8
+
9
+ [ActiveAdmin::Namespace, ActiveAdmin::Resource].each do |klass|
10
+ it "should not leak #{klass}" do
11
+ previously_disabled = GC.enable
12
+ GC.start
13
+ count = count_instances_of(klass)
14
+
15
+ load_defaults!
16
+
17
+ GC.start
18
+ GC.disable if previously_disabled
19
+ expect(count_instances_of klass).to be <= count
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,18 @@
1
+ require 'rails_helper'
2
+
3
+ describe "Stylesheets", :type => :request do
4
+
5
+ require "sprockets"
6
+
7
+ let(:css) do
8
+ assets = Rails.application.assets
9
+ assets.find_asset("active_admin.css")
10
+ end
11
+ it "should successfully render the scss stylesheets using sprockets" do
12
+ expect(css).to_not be_nil
13
+ end
14
+ it "should not have any syntax errors" do
15
+ expect(css.to_s).to_not include("Syntax error:")
16
+ end
17
+
18
+ end
@@ -1,178 +1,17 @@
1
- require 'spec_helper_without_rails'
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH << File.expand_path('../support', __FILE__)
2
3
 
3
- module ActiveAdminIntegrationSpecHelper
4
- extend self
4
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
5
+ require "bundler"
6
+ Bundler.setup
5
7
 
6
- def load_defaults!
7
- ActiveAdmin.unload!
8
- ActiveAdmin.load!
9
- ActiveAdmin.register(Category)
10
- ActiveAdmin.register(User)
11
- ActiveAdmin.register(Post){ belongs_to :user, :optional => true }
12
- reload_menus!
13
- end
8
+ require 'detect_rails_version'
9
+ ENV['RAILS'] = detect_rails_version
14
10
 
15
- def reload_menus!
16
- ActiveAdmin.application.namespaces.values.each{|n| n.reset_menu! }
17
- end
11
+ require 'simplecov'
18
12
 
19
- # Sometimes we need to reload the routes within
20
- # the application to test them out
21
- def reload_routes!
22
- Rails.application.reload_routes!
23
- end
24
-
25
- # Helper method to load resources and ensure that Active Admin is
26
- # setup with the new configurations.
27
- #
28
- # Eg:
29
- # load_resources do
30
- # ActiveAdmin.regiser(Post)
31
- # end
32
- #
33
- def load_resources
34
- ActiveAdmin.unload!
35
- yield
36
- reload_menus!
37
- reload_routes!
38
- end
39
-
40
- # Sets up a describe block where you can render controller
41
- # actions. Uses the Admin::PostsController as the subject
42
- # for the describe block
43
- def describe_with_render(*args, &block)
44
- describe *args do
45
- include RSpec::Rails::ControllerExampleGroup
46
- render_views
47
- # metadata[:behaviour][:describes] = ActiveAdmin.namespaces[:admin].resources['Post'].controller
48
- module_eval &block
49
- end
50
- end
51
-
52
- def arbre(assigns = {}, helpers = mock_action_view, &block)
53
- Arbre::Context.new(assigns, helpers, &block)
54
- end
55
-
56
- def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
57
- arbre(assigns, helpers, &block).children.first
58
- end
59
-
60
- # Setup a describe block which uses capybara and rails integration
61
- # test methods.
62
- def describe_with_capybara(*args, &block)
63
- describe *args do
64
- include RSpec::Rails::IntegrationExampleGroup
65
- module_eval &block
66
- end
67
- end
68
-
69
- # Returns a fake action view instance to use with our renderers
70
- def mock_action_view(assigns = {})
71
- controller = ActionView::TestCase::TestController.new
72
- ActionView::Base.send :include, ActionView::Helpers
73
- ActionView::Base.send :include, ActiveAdmin::ViewHelpers
74
- ActionView::Base.send :include, Rails.application.routes.url_helpers
75
- ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
76
- end
77
- alias_method :action_view, :mock_action_view
78
-
79
- # A mock resource to register
80
- class MockResource
81
- end
82
-
83
- end
84
-
85
- ENV['RAILS_ENV'] = 'test'
86
- ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{ENV['RAILS']}", __FILE__)
87
-
88
- # Create the test app if it doesn't exists
89
- unless File.exists?(ENV['RAILS_ROOT'])
90
- system 'rake setup'
91
- end
92
-
93
- # Ensure the Active Admin load path is happy
94
- require 'rails'
95
- require 'active_admin'
96
- ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
97
-
98
- require ENV['RAILS_ROOT'] + '/config/environment'
99
-
100
- require 'rspec/rails'
101
-
102
- # Setup Some Admin stuff for us to play with
103
- include ActiveAdminIntegrationSpecHelper
104
- load_defaults!
105
- reload_routes!
106
-
107
- # Disabling authentication in specs so that we don't have to worry about
108
- # it allover the place
109
- ActiveAdmin.application.authentication_method = false
110
- ActiveAdmin.application.current_user_method = false
111
-
112
- # Don't add asset cache timestamps. Makes it easy to integration
113
- # test for the presence of an asset file
114
- ENV["RAILS_ASSET_ID"] = ''
115
-
116
- RSpec.configure do |config|
117
- config.use_transactional_fixtures = true
118
- config.use_instantiated_fixtures = false
119
- config.include Devise::TestHelpers, :type => :controller
120
- config.render_views = false
121
- end
122
-
123
- # All RSpec configuration needs to happen before any examples
124
- # or else it whines.
125
- require 'integration_example_group'
126
- RSpec.configure do |c|
127
- c.include RSpec::Rails::IntegrationExampleGroup, :example_group => { :file_path => /\bspec\/integration\// }
128
- c.include Devise::TestHelpers, :type => :controller
129
- end
130
-
131
- # Ensure this is defined for Ruby 1.8
132
- module MiniTest; class Assertion < Exception; end; end
133
-
134
- RSpec::Matchers.define :have_tag do |*args|
135
-
136
- match_unless_raises Test::Unit::AssertionFailedError do |response|
137
- tag = args.shift
138
- content = args.first.is_a?(Hash) ? nil : args.shift
139
-
140
- options = {
141
- :tag => tag.to_s
142
- }.merge(args[0] || {})
143
-
144
- options[:content] = content if content
145
-
146
- begin
147
- begin
148
- assert_tag(options)
149
- rescue NoMethodError
150
- # We are not in a controller, so let's do the checking ourselves
151
- doc = HTML::Document.new(response, false, false)
152
- tag = doc.find(options)
153
- assert tag, "expected tag, but no tag found matching #{options.inspect} in:\n#{response.inspect}"
154
- end
155
- # In Ruby 1.9, MiniTest::Assertion get's raised, so we'll
156
- # handle raising a Test::Unit::AssertionFailedError
157
- rescue MiniTest::Assertion => e
158
- raise Test::Unit::AssertionFailedError, e.message
159
- end
160
- end
161
- end
162
-
163
- # improve the performance of the specs suite by not logging anything
164
- # see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
165
- Rails.logger.level = 4
166
-
167
-
168
- # Improves performance by forcing the garbage collector to run less often.
169
- unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
170
- require 'support/deferred_garbage_collection'
171
- RSpec.configure do |config|
172
- config.before(:all) { DeferredGarbageCollection.start }
173
- config.after(:all) { DeferredGarbageCollection.reconsider }
174
- config.filter_run focus: true
175
- config.filter_run_excluding skip: true
176
- config.run_all_when_everything_filtered = true
177
- end
13
+ SimpleCov.start do
14
+ add_filter 'spec/'
15
+ add_filter 'features/'
16
+ add_filter 'bundle/' # for Travis
178
17
  end