aa-rails4 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +43 -0
  4. data/.travis.yml +8 -0
  5. data/.yardopts +7 -0
  6. data/CHANGELOG.md +894 -0
  7. data/CONTRIBUTING.md +121 -0
  8. data/Gemfile +40 -0
  9. data/Guardfile +7 -0
  10. data/LICENSE +25 -0
  11. data/README.rdoc +118 -0
  12. data/Rakefile +26 -0
  13. data/activeadmin.gemspec +33 -0
  14. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  18. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  19. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  20. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
  21. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
  22. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
  23. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
  24. data/app/assets/images/active_admin/loading.gif +0 -0
  25. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  26. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  27. data/app/assets/images/active_admin/orderable.png +0 -0
  28. data/app/assets/javascripts/active_admin/application.js +3 -0
  29. data/app/assets/javascripts/active_admin/base.js +5 -0
  30. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +37 -0
  31. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +105 -0
  32. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +97 -0
  33. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +25 -0
  34. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
  35. data/app/assets/javascripts/active_admin/pages/application.js.coffee +21 -0
  36. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
  37. data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
  38. data/app/assets/stylesheets/active_admin/_forms.css.scss +281 -0
  39. data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
  40. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  41. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  42. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  43. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  44. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  45. data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
  46. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  47. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
  48. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  49. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  50. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  51. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  52. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  53. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  54. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  55. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  56. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  57. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  58. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  59. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
  60. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +108 -0
  61. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
  62. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
  71. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +24 -0
  72. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  73. data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
  74. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  75. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +26 -0
  76. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +44 -0
  77. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  78. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  79. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  80. data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
  81. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  82. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  83. data/app/views/active_admin/devise/shared/_links.erb +27 -0
  84. data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
  85. data/app/views/active_admin/page/index.html.arb +1 -0
  86. data/app/views/active_admin/resource/edit.html.arb +1 -0
  87. data/app/views/active_admin/resource/index.csv.erb +17 -0
  88. data/app/views/active_admin/resource/index.html.arb +1 -0
  89. data/app/views/active_admin/resource/new.html.arb +1 -0
  90. data/app/views/active_admin/resource/show.html.arb +1 -0
  91. data/app/views/layouts/active_admin.html.arb +1 -0
  92. data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
  93. data/config/locales/bg.yml +101 -0
  94. data/config/locales/ca.yml +98 -0
  95. data/config/locales/cs.yml +92 -0
  96. data/config/locales/da.yml +102 -0
  97. data/config/locales/de-CH.yml +117 -0
  98. data/config/locales/de.yml +119 -0
  99. data/config/locales/en-GB.yml +90 -0
  100. data/config/locales/en.yml +101 -0
  101. data/config/locales/es.yml +106 -0
  102. data/config/locales/es_MX.yml +104 -0
  103. data/config/locales/fr.yml +89 -0
  104. data/config/locales/he.yml +91 -0
  105. data/config/locales/hr.yml +93 -0
  106. data/config/locales/hu.yml +92 -0
  107. data/config/locales/it.yml +89 -0
  108. data/config/locales/ja.yml +87 -0
  109. data/config/locales/ko.yml +84 -0
  110. data/config/locales/lt.yml +90 -0
  111. data/config/locales/lv.yml +89 -0
  112. data/config/locales/nl.yml +90 -0
  113. data/config/locales/no-NB.yml +85 -0
  114. data/config/locales/pl.yml +93 -0
  115. data/config/locales/pt-BR.yml +89 -0
  116. data/config/locales/pt-PT.yml +89 -0
  117. data/config/locales/ro.yml +93 -0
  118. data/config/locales/ru.yml +103 -0
  119. data/config/locales/sv-SE.yml +89 -0
  120. data/config/locales/tr.yml +90 -0
  121. data/config/locales/uk.yml +100 -0
  122. data/config/locales/vi.yml +90 -0
  123. data/config/locales/zh-CN.yml +90 -0
  124. data/config/locales/zh-TW.yml +90 -0
  125. data/cucumber.yml +3 -0
  126. data/docs/0-installation.md +56 -0
  127. data/docs/1-general-configuration.md +129 -0
  128. data/docs/10-custom-pages.md +96 -0
  129. data/docs/11-decorators.md +66 -0
  130. data/docs/12-arbre-components.md +144 -0
  131. data/docs/13-authorization-adapter.md +206 -0
  132. data/docs/2-resource-customization.md +292 -0
  133. data/docs/3-index-pages.md +191 -0
  134. data/docs/3-index-pages/create-an-index.md +29 -0
  135. data/docs/3-index-pages/index-as-block.md +16 -0
  136. data/docs/3-index-pages/index-as-blog.md +61 -0
  137. data/docs/3-index-pages/index-as-grid.md +21 -0
  138. data/docs/3-index-pages/index-as-table.md +120 -0
  139. data/docs/4-csv-format.md +32 -0
  140. data/docs/5-forms.md +72 -0
  141. data/docs/6-show-pages.md +43 -0
  142. data/docs/7-sidebars.md +42 -0
  143. data/docs/8-custom-actions.md +139 -0
  144. data/docs/9-batch-actions.md +161 -0
  145. data/features/action_item.feature +73 -0
  146. data/features/authorization.feature +64 -0
  147. data/features/authorization_cancan.feature +52 -0
  148. data/features/belongs_to.feature +63 -0
  149. data/features/breadcrumb.feature +27 -0
  150. data/features/comments/commenting.feature +128 -0
  151. data/features/comments/viewing_index.feature +19 -0
  152. data/features/dashboard.feature +16 -0
  153. data/features/decorators.feature +41 -0
  154. data/features/development_reloading.feature +31 -0
  155. data/features/edit_page.feature +127 -0
  156. data/features/favicon.feature +20 -0
  157. data/features/first_boot.feature +16 -0
  158. data/features/global_navigation.feature +29 -0
  159. data/features/i18n.feature +38 -0
  160. data/features/index/batch_actions.feature +123 -0
  161. data/features/index/filters.feature +94 -0
  162. data/features/index/format_as_csv.feature +117 -0
  163. data/features/index/formats.feature +39 -0
  164. data/features/index/index_as_block.feature +15 -0
  165. data/features/index/index_as_blog.feature +69 -0
  166. data/features/index/index_as_grid.feature +45 -0
  167. data/features/index/index_as_table.feature +195 -0
  168. data/features/index/index_blank_slate.feature +61 -0
  169. data/features/index/index_parameters.feature +75 -0
  170. data/features/index/index_scope_to.feature +56 -0
  171. data/features/index/index_scopes.feature +251 -0
  172. data/features/index/page_title.feature +30 -0
  173. data/features/index/pagination.feature +59 -0
  174. data/features/index/switch_index_view.feature +73 -0
  175. data/features/menu.feature +53 -0
  176. data/features/new_page.feature +119 -0
  177. data/features/registering_assets.feature +35 -0
  178. data/features/registering_pages.feature +148 -0
  179. data/features/registering_resources.feature +33 -0
  180. data/features/root_to.feature +17 -0
  181. data/features/show/default_content.feature +43 -0
  182. data/features/show/page_title.feature +47 -0
  183. data/features/sidebar_sections.feature +198 -0
  184. data/features/site_title.feature +47 -0
  185. data/features/specifying_actions.feature +93 -0
  186. data/features/step_definitions/action_item_steps.rb +7 -0
  187. data/features/step_definitions/action_link_steps.rb +7 -0
  188. data/features/step_definitions/additional_web_steps.rb +82 -0
  189. data/features/step_definitions/asset_steps.rb +15 -0
  190. data/features/step_definitions/attribute_steps.rb +13 -0
  191. data/features/step_definitions/batch_action_steps.rb +55 -0
  192. data/features/step_definitions/breadcrumb_steps.rb +3 -0
  193. data/features/step_definitions/comment_steps.rb +12 -0
  194. data/features/step_definitions/configuration_steps.rb +93 -0
  195. data/features/step_definitions/dashboard_steps.rb +15 -0
  196. data/features/step_definitions/factory_steps.rb +33 -0
  197. data/features/step_definitions/filter_steps.rb +17 -0
  198. data/features/step_definitions/flash_steps.rb +11 -0
  199. data/features/step_definitions/format_steps.rb +46 -0
  200. data/features/step_definitions/i18n_steps.rb +3 -0
  201. data/features/step_definitions/index_scope_steps.rb +21 -0
  202. data/features/step_definitions/index_views_steps.rb +3 -0
  203. data/features/step_definitions/layout_steps.rb +3 -0
  204. data/features/step_definitions/member_link_steps.rb +7 -0
  205. data/features/step_definitions/menu_steps.rb +11 -0
  206. data/features/step_definitions/pagination_steps.rb +8 -0
  207. data/features/step_definitions/sidebar_steps.rb +8 -0
  208. data/features/step_definitions/site_title_steps.rb +15 -0
  209. data/features/step_definitions/tab_steps.rb +3 -0
  210. data/features/step_definitions/table_steps.rb +119 -0
  211. data/features/step_definitions/user_steps.rb +39 -0
  212. data/features/step_definitions/web_steps.rb +82 -0
  213. data/features/sti_resource.feature +73 -0
  214. data/features/support/env.rb +118 -0
  215. data/features/support/paths.rb +63 -0
  216. data/features/support/selectors.rb +45 -0
  217. data/features/users/logging_in.feature +34 -0
  218. data/features/users/logging_out.feature +13 -0
  219. data/features/users/resetting_password.feature +34 -0
  220. data/lib/active_admin.rb +120 -0
  221. data/lib/active_admin/abstract_view_factory.rb +95 -0
  222. data/lib/active_admin/application.rb +245 -0
  223. data/lib/active_admin/asset_registration.rb +29 -0
  224. data/lib/active_admin/authorization_adapter.rb +132 -0
  225. data/lib/active_admin/base_controller.rb +78 -0
  226. data/lib/active_admin/base_controller/authorization.rb +153 -0
  227. data/lib/active_admin/base_controller/menu.rb +34 -0
  228. data/lib/active_admin/batch_actions.rb +17 -0
  229. data/lib/active_admin/batch_actions/controller.rb +25 -0
  230. data/lib/active_admin/batch_actions/resource_extension.rb +127 -0
  231. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  232. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  233. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +66 -0
  234. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  235. data/lib/active_admin/callbacks.rb +87 -0
  236. data/lib/active_admin/cancan_adapter.rb +40 -0
  237. data/lib/active_admin/comments.rb +83 -0
  238. data/lib/active_admin/comments/comment.rb +49 -0
  239. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  240. data/lib/active_admin/comments/resource_helper.rb +17 -0
  241. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  242. data/lib/active_admin/comments/views.rb +2 -0
  243. data/lib/active_admin/comments/views/active_admin_comments.rb +75 -0
  244. data/lib/active_admin/component.rb +5 -0
  245. data/lib/active_admin/controller_action.rb +12 -0
  246. data/lib/active_admin/csv_builder.rb +49 -0
  247. data/lib/active_admin/deprecation.rb +36 -0
  248. data/lib/active_admin/devise.rb +70 -0
  249. data/lib/active_admin/dsl.rb +166 -0
  250. data/lib/active_admin/engine.rb +7 -0
  251. data/lib/active_admin/event.rb +33 -0
  252. data/lib/active_admin/filters.rb +9 -0
  253. data/lib/active_admin/filters/dsl.rb +21 -0
  254. data/lib/active_admin/filters/forms.rb +89 -0
  255. data/lib/active_admin/filters/formtastic_addons.rb +50 -0
  256. data/lib/active_admin/filters/resource_extension.rb +129 -0
  257. data/lib/active_admin/form_builder.rb +189 -0
  258. data/lib/active_admin/helpers/collection.rb +23 -0
  259. data/lib/active_admin/helpers/optional_display.rb +38 -0
  260. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  261. data/lib/active_admin/helpers/settings.rb +108 -0
  262. data/lib/active_admin/iconic.rb +51 -0
  263. data/lib/active_admin/iconic/icons.rb +142 -0
  264. data/lib/active_admin/inputs.rb +15 -0
  265. data/lib/active_admin/inputs/datepicker_input.rb +11 -0
  266. data/lib/active_admin/inputs/filter_base.rb +33 -0
  267. data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
  268. data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
  269. data/lib/active_admin/inputs/filter_check_boxes_input.rb +40 -0
  270. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  271. data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
  272. data/lib/active_admin/inputs/filter_select_input.rb +45 -0
  273. data/lib/active_admin/inputs/filter_string_input.rb +24 -0
  274. data/lib/active_admin/menu.rb +107 -0
  275. data/lib/active_admin/menu_collection.rb +96 -0
  276. data/lib/active_admin/menu_item.rb +97 -0
  277. data/lib/active_admin/namespace.rb +221 -0
  278. data/lib/active_admin/page.rb +88 -0
  279. data/lib/active_admin/page_controller.rb +29 -0
  280. data/lib/active_admin/page_dsl.rb +28 -0
  281. data/lib/active_admin/page_presenter.rb +32 -0
  282. data/lib/active_admin/resource.rb +160 -0
  283. data/lib/active_admin/resource/action_items.rb +93 -0
  284. data/lib/active_admin/resource/belongs_to.rb +36 -0
  285. data/lib/active_admin/resource/controllers.rb +18 -0
  286. data/lib/active_admin/resource/menu.rb +64 -0
  287. data/lib/active_admin/resource/naming.rb +78 -0
  288. data/lib/active_admin/resource/page_presenters.rb +82 -0
  289. data/lib/active_admin/resource/pagination.rb +19 -0
  290. data/lib/active_admin/resource/routes.rb +99 -0
  291. data/lib/active_admin/resource/scope_to.rb +74 -0
  292. data/lib/active_admin/resource/scopes.rb +50 -0
  293. data/lib/active_admin/resource/sidebars.rb +27 -0
  294. data/lib/active_admin/resource_collection.rb +42 -0
  295. data/lib/active_admin/resource_controller.rb +51 -0
  296. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  297. data/lib/active_admin/resource_controller/actions.rb +81 -0
  298. data/lib/active_admin/resource_controller/data_access.rb +303 -0
  299. data/lib/active_admin/resource_controller/decorators.rb +20 -0
  300. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  301. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  302. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  303. data/lib/active_admin/resource_dsl.rb +134 -0
  304. data/lib/active_admin/router.rb +106 -0
  305. data/lib/active_admin/scope.rb +57 -0
  306. data/lib/active_admin/sidebar_section.rb +37 -0
  307. data/lib/active_admin/version.rb +3 -0
  308. data/lib/active_admin/view_factory.rb +28 -0
  309. data/lib/active_admin/view_helpers.rb +21 -0
  310. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  311. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  312. data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
  313. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
  314. data/lib/active_admin/view_helpers/display_helper.rb +47 -0
  315. data/lib/active_admin/view_helpers/download_format_links_helper.rb +50 -0
  316. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  317. data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
  318. data/lib/active_admin/view_helpers/form_helper.rb +24 -0
  319. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  320. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
  321. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  322. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  323. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  324. data/lib/active_admin/views.rb +8 -0
  325. data/lib/active_admin/views/action_items.rb +17 -0
  326. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  327. data/lib/active_admin/views/components/attributes_table.rb +70 -0
  328. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  329. data/lib/active_admin/views/components/columns.rb +150 -0
  330. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  331. data/lib/active_admin/views/components/index_list.rb +68 -0
  332. data/lib/active_admin/views/components/paginated_collection.rb +123 -0
  333. data/lib/active_admin/views/components/panel.rb +34 -0
  334. data/lib/active_admin/views/components/popover.rb +27 -0
  335. data/lib/active_admin/views/components/scopes.rb +65 -0
  336. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  337. data/lib/active_admin/views/components/site_title.rb +55 -0
  338. data/lib/active_admin/views/components/status_tag.rb +56 -0
  339. data/lib/active_admin/views/components/table_for.rb +191 -0
  340. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  341. data/lib/active_admin/views/footer.rb +20 -0
  342. data/lib/active_admin/views/header.rb +32 -0
  343. data/lib/active_admin/views/index_as_block.rb +36 -0
  344. data/lib/active_admin/views/index_as_blog.rb +150 -0
  345. data/lib/active_admin/views/index_as_grid.rb +76 -0
  346. data/lib/active_admin/views/index_as_table.rb +238 -0
  347. data/lib/active_admin/views/pages/base.rb +139 -0
  348. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  349. data/lib/active_admin/views/pages/form.rb +51 -0
  350. data/lib/active_admin/views/pages/index.rb +158 -0
  351. data/lib/active_admin/views/pages/layout.rb +26 -0
  352. data/lib/active_admin/views/pages/page.rb +30 -0
  353. data/lib/active_admin/views/pages/show.rb +59 -0
  354. data/lib/active_admin/views/tabbed_navigation.rb +62 -0
  355. data/lib/active_admin/views/title_bar.rb +53 -0
  356. data/lib/activeadmin.rb +1 -0
  357. data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
  358. data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
  359. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  360. data/lib/generators/active_admin/devise/devise_generator.rb +78 -0
  361. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  362. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +214 -0
  363. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
  364. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  365. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  366. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  367. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  368. data/lib/ransack_ext.rb +12 -0
  369. data/script/local +44 -0
  370. data/script/use_rails +53 -0
  371. data/spec/integration/default_namespace_spec.rb +61 -0
  372. data/spec/integration/javascript_spec.rb +20 -0
  373. data/spec/integration/memory_spec.rb +29 -0
  374. data/spec/integration/stylesheets_spec.rb +41 -0
  375. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  376. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  377. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  378. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  379. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  380. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  381. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  382. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  383. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  384. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  385. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  386. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  387. data/spec/javascripts/support/jasmine.yml +74 -0
  388. data/spec/javascripts/support/jasmine_config.rb +23 -0
  389. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  390. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  391. data/spec/javascripts/support/jquery.min.js +4 -0
  392. data/spec/spec_helper.rb +175 -0
  393. data/spec/spec_helper_without_rails.rb +11 -0
  394. data/spec/support/deferred_garbage_collection.rb +19 -0
  395. data/spec/support/detect_rails_version.rb +42 -0
  396. data/spec/support/integration_example_group.rb +31 -0
  397. data/spec/support/jslint.yml +80 -0
  398. data/spec/support/rails_template.rb +104 -0
  399. data/spec/support/rails_template_with_data.rb +59 -0
  400. data/spec/support/templates/admin/stores.rb +11 -0
  401. data/spec/support/templates/cucumber.rb +24 -0
  402. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  403. data/spec/support/templates/en.yml +8 -0
  404. data/spec/support/templates/post_decorator.rb +53 -0
  405. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  406. data/spec/unit/action_builder_spec.rb +126 -0
  407. data/spec/unit/active_admin_spec.rb +11 -0
  408. data/spec/unit/application_spec.rb +141 -0
  409. data/spec/unit/asset_registration_spec.rb +56 -0
  410. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  411. data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
  412. data/spec/unit/auto_link_spec.rb +39 -0
  413. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  414. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  415. data/spec/unit/belongs_to_spec.rb +42 -0
  416. data/spec/unit/cancan_adapter_spec.rb +43 -0
  417. data/spec/unit/comments_spec.rb +106 -0
  418. data/spec/unit/component_spec.rb +18 -0
  419. data/spec/unit/config_shared_examples.rb +59 -0
  420. data/spec/unit/controller_filters_spec.rb +27 -0
  421. data/spec/unit/csv_builder_spec.rb +103 -0
  422. data/spec/unit/devise_spec.rb +116 -0
  423. data/spec/unit/dsl_spec.rb +61 -0
  424. data/spec/unit/event_spec.rb +47 -0
  425. data/spec/unit/filters/filter_form_builder_spec.rb +338 -0
  426. data/spec/unit/filters/resource_spec.rb +87 -0
  427. data/spec/unit/form_builder_spec.rb +478 -0
  428. data/spec/unit/generators/install_spec.rb +23 -0
  429. data/spec/unit/helpers/collection_spec.rb +65 -0
  430. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  431. data/spec/unit/helpers/settings_spec.rb +30 -0
  432. data/spec/unit/menu_collection_spec.rb +62 -0
  433. data/spec/unit/menu_item_spec.rb +143 -0
  434. data/spec/unit/menu_spec.rb +71 -0
  435. data/spec/unit/namespace/authorization_spec.rb +27 -0
  436. data/spec/unit/namespace/register_page_spec.rb +74 -0
  437. data/spec/unit/namespace/register_resource_spec.rb +163 -0
  438. data/spec/unit/namespace_spec.rb +103 -0
  439. data/spec/unit/page_controller_spec.rb +5 -0
  440. data/spec/unit/page_spec.rb +72 -0
  441. data/spec/unit/pretty_format_spec.rb +35 -0
  442. data/spec/unit/resource/action_items_spec.rb +62 -0
  443. data/spec/unit/resource/menu_spec.rb +18 -0
  444. data/spec/unit/resource/naming_spec.rb +108 -0
  445. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  446. data/spec/unit/resource/pagination_spec.rb +38 -0
  447. data/spec/unit/resource/routes_spec.rb +73 -0
  448. data/spec/unit/resource/scopes_spec.rb +43 -0
  449. data/spec/unit/resource/sidebars_spec.rb +43 -0
  450. data/spec/unit/resource_collection_spec.rb +79 -0
  451. data/spec/unit/resource_controller/data_access_spec.rb +73 -0
  452. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  453. data/spec/unit/resource_controller_spec.rb +265 -0
  454. data/spec/unit/resource_registration_spec.rb +56 -0
  455. data/spec/unit/resource_spec.rb +243 -0
  456. data/spec/unit/routing_spec.rb +172 -0
  457. data/spec/unit/scope_spec.rb +108 -0
  458. data/spec/unit/settings_spec.rb +88 -0
  459. data/spec/unit/view_factory_spec.rb +22 -0
  460. data/spec/unit/view_helpers/breadcrumbs_spec.rb +152 -0
  461. data/spec/unit/view_helpers/display_name_spec.rb +41 -0
  462. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  463. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  464. data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
  465. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +97 -0
  466. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  467. data/spec/unit/views/components/attributes_table_spec.rb +131 -0
  468. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  469. data/spec/unit/views/components/blank_slate_spec.rb +17 -0
  470. data/spec/unit/views/components/columns_spec.rb +142 -0
  471. data/spec/unit/views/components/index_list_spec.rb +32 -0
  472. data/spec/unit/views/components/paginated_collection_spec.rb +247 -0
  473. data/spec/unit/views/components/panel_spec.rb +51 -0
  474. data/spec/unit/views/components/popover_spec.rb +33 -0
  475. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  476. data/spec/unit/views/components/site_title_spec.rb +78 -0
  477. data/spec/unit/views/components/status_tag_spec.rb +95 -0
  478. data/spec/unit/views/components/table_for_spec.rb +182 -0
  479. data/spec/unit/views/pages/layout_spec.rb +63 -0
  480. data/spec/unit/views/pages/show_spec.rb +20 -0
  481. data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
  482. data/tasks/docs.rake +39 -0
  483. data/tasks/js.rake +32 -0
  484. data/tasks/parallel_tests.rake +60 -0
  485. data/tasks/test.rake +79 -0
  486. data/tasks/yard.rake +6 -0
  487. metadata +883 -0
@@ -0,0 +1,3 @@
1
+ When /^I click "(.*?)"$/ do |link|
2
+ click_link(link)
3
+ end
@@ -0,0 +1,3 @@
1
+ Then /^I should see the Active Admin layout$/ do
2
+ page.should have_css("#active_admin_content #main_content_wrapper")
3
+ end
@@ -0,0 +1,7 @@
1
+ Then /^I should see an action item button "([^"]*)"$/ do |content|
2
+ page.should have_css(".action_items a", :text => content)
3
+ end
4
+
5
+ Then /^I should not see an action item button "([^"]*)"$/ do |content|
6
+ page.should_not have_css(".action_items", :text => content)
7
+ end
@@ -0,0 +1,11 @@
1
+ Then /^I should see a menu item for "([^"]*)"$/ do |name|
2
+ page.should have_css('#tabs li a', :text => name)
3
+ end
4
+
5
+ Then /^I should not see a menu item for "([^"]*)"$/ do |name|
6
+ page.should_not have_css('#tabs li a', :text => name)
7
+ end
8
+
9
+ Then /^I should see a nested menu item for "([^"]*)"$/ do |name|
10
+ page.should have_css('#tabs > li > ul > li > a', :text => name)
11
+ end
@@ -0,0 +1,8 @@
1
+ Then /^I should not see pagination$/ do
2
+ page.should_not have_css(".pagination")
3
+ end
4
+
5
+ Then /^I should see pagination with (\d+) pages$/ do |count|
6
+ step %{I should see "#{count}" within ".pagination a"}
7
+ step %{I should not see "#{count.to_i + 1}" within ".pagination a"}
8
+ end
@@ -0,0 +1,8 @@
1
+ Then /^I should see a sidebar titled "([^"]*)"$/ do |title|
2
+ page.should have_css(".sidebar_section h3", :text => title)
3
+ end
4
+
5
+ Then /^I should not see a sidebar titled "([^"]*)"$/ do |title|
6
+ title = title.gsub(' ', '').underscore
7
+ page.all(:css, "##{title}_sidebar_section").count.should == 0
8
+ end
@@ -0,0 +1,15 @@
1
+ Then /^I should see the site title "([^"]*)"$/ do |title|
2
+ page.should have_css('h1#site_title', :text => title)
3
+ end
4
+
5
+ Then /^I should not see the site title "([^"]*)"$/ do |title|
6
+ page.should_not have_css('h1#site_title', :text => title)
7
+ end
8
+
9
+ Then /^I should see the site title image "([^"]*)"$/ do |image|
10
+ page.should have_css('h1#site_title img', :src => image)
11
+ end
12
+
13
+ Then /^I should see the site title image linked to "([^"]*)"$/ do |url|
14
+ page.should have_css('h1#site_title a', :href => url)
15
+ end
@@ -0,0 +1,3 @@
1
+ Then /^the "([^"]*)" tab should be selected$/ do |name|
2
+ step %{I should see "#{name}" within "ul#tabs li.current"}
3
+ end
@@ -0,0 +1,119 @@
1
+ Then /^I should see (\d+) ([\w]*) in the table$/ do |count, resource_type|
2
+ all("table.index_table tr > td:first").count.should eq count.to_i
3
+ end
4
+
5
+ # TODO: simplify this, if possible?
6
+ class HtmlTableToTextHelper
7
+ def initialize(html, table_css_selector = "table")
8
+ @html = html
9
+ @selector = table_css_selector
10
+ end
11
+
12
+ def to_array
13
+ rows = Nokogiri::HTML(@html).css("#{@selector} tr")
14
+ rows.map do |row|
15
+ row.css('th, td').map do |td|
16
+ cell_to_string(td)
17
+ end
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def cell_to_string(td)
24
+ str = ""
25
+ input = td.css('input').last
26
+
27
+ if input
28
+ str << input_to_string(input)
29
+ end
30
+
31
+ str << td.content.strip.gsub("\n", ' ')
32
+ end
33
+
34
+ def input_to_string(input)
35
+ case input.attribute("type").value
36
+ when "checkbox"
37
+ if input.attribute("disabled")
38
+ "_"
39
+ else
40
+ if input.attribute("checked")
41
+ "[X]"
42
+ else
43
+ "[ ]"
44
+ end
45
+ end
46
+ when "text"
47
+ if input.attribute("value").present?
48
+ "[#{input.attribute("value")}]"
49
+ else
50
+ "[ ]"
51
+ end
52
+ when "submit"
53
+ input.attribute("value")
54
+ else
55
+ raise "I don't know what to do with #{input}"
56
+ end
57
+ end
58
+ end
59
+
60
+ module TableMatchHelper
61
+
62
+
63
+ # @param table [Array[Array]]
64
+ # @param expected_table [Array[Array[String]]]
65
+ # The expected_table values are String. They are converted to
66
+ # Regexp when they start and end with a '/'
67
+ # Example:
68
+ #
69
+ # assert_table_match(
70
+ # [["Name", "Date"], ["Philippe", "Feb 08"]],
71
+ # [["Name", "Date"], ["Philippe", "/\w{3} \d{2}/"]]
72
+ # )
73
+ def assert_tables_match(table, expected_table)
74
+ expected_table.each_index do |row_index|
75
+ expected_table[row_index].each_index do |column_index|
76
+ expected_cell = expected_table[row_index][column_index]
77
+ cell = table.try(:[], row_index).try(:[], column_index)
78
+ begin
79
+ assert_cells_match(cell, expected_cell)
80
+ rescue
81
+ puts "Cell at line #{row_index} and column #{column_index}: #{cell.inspect} does not match #{expected_cell.inspect}"
82
+ puts "Expecting:"
83
+ table.each { |row| puts row.inspect }
84
+ puts "to match:"
85
+ expected_table.each { |row| puts row.inspect }
86
+ raise $!
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ def assert_cells_match(cell, expected_cell)
93
+ if expected_cell =~ /^\/.*\/$/
94
+ cell.should match(Regexp.new(expected_cell[1..-2]))
95
+ else
96
+ (cell || "").strip.should == expected_cell
97
+ end
98
+ end
99
+
100
+ end # module TableMatchHelper
101
+
102
+ World(TableMatchHelper)
103
+
104
+
105
+ # Usage:
106
+ #
107
+ # I should see the "invoices" table:
108
+ # | Invoice # | Date | Total Amount |
109
+ # | /\d+/ | 27/01/12 | $30.00 |
110
+ # | /\d+/ | 12/02/12 | $25.00 |
111
+ #
112
+ Then /^I should see the "([^"]*)" table:$/ do |table_id, expected_table|
113
+ page.should have_css("table##{table_id}")
114
+
115
+ assert_tables_match(
116
+ HtmlTableToTextHelper.new(page.body, "table##{table_id}").to_array,
117
+ expected_table.raw
118
+ )
119
+ end
@@ -0,0 +1,39 @@
1
+ def ensure_user_created(email)
2
+ user = AdminUser.where(:email => email).first_or_create(:password => 'password', :password_confirmation => 'password')
3
+
4
+ unless user.persisted?
5
+ raise "Could not create user #{email}: #{user.errors.full_messages}"
6
+ end
7
+ user
8
+ end
9
+
10
+ Given /^(?:I am logged|log) out$/ do
11
+ click_link 'Logout' if page.all(:css, "a", :text => 'Logout').any?
12
+ end
13
+
14
+ Given /^I am logged in$/ do
15
+ step 'log out'
16
+ login_as ensure_user_created 'admin@example.com'
17
+ end
18
+
19
+ # only for @requires-reloading scenario
20
+ Given /^I am logged in with capybara$/ do
21
+ ensure_user_created 'admin@example.com'
22
+ step 'log out'
23
+
24
+ visit new_admin_user_session_path
25
+ fill_in 'Email', :with => 'admin@example.com'
26
+ fill_in 'Password', :with => 'password'
27
+ click_button 'Login'
28
+ end
29
+
30
+ Given /^an admin user "([^"]*)" exists$/ do |email|
31
+ ensure_user_created(email)
32
+ end
33
+
34
+ Given /^an admin user "([^"]*)" exists with( expired)? reset password token "(.*?)"$/ do |email, expired, token|
35
+ user = ensure_user_created(email)
36
+ user.reset_password_token = token
37
+ user.reset_password_sent_at = 1.minute.ago unless expired
38
+ user.save
39
+ end
@@ -0,0 +1,82 @@
1
+ require 'uri'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
3
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
4
+
5
+ module WithinHelpers
6
+ def with_scope(locator)
7
+ locator ? within(*selector_for(locator)) { yield } : yield
8
+ end
9
+ end
10
+ World(WithinHelpers)
11
+
12
+ # Single-line step scoper
13
+ When /^(.*) within (.*[^:])$/ do |step_name, parent|
14
+ with_scope(parent) { step step_name }
15
+ end
16
+
17
+ # Multi-line step scoper
18
+ When /^(.*) within (.*[^:]):$/ do |step_name, parent, table_or_string|
19
+ with_scope(parent) { step "#{step_name}:", table_or_string }
20
+ end
21
+
22
+ Given /^(?:I )am on (.+)$/ do |page_name|
23
+ visit path_to(page_name)
24
+ end
25
+
26
+ When /^(?:I )go to (.+)$/ do |page_name|
27
+ visit path_to(page_name)
28
+ end
29
+
30
+ When /^(?:I )press "([^"]*)"$/ do |button|
31
+ click_button(button)
32
+ end
33
+
34
+ When /^(?:I )follow "([^"]*)"$/ do |link|
35
+ click_link(link)
36
+ end
37
+
38
+ When /^(?:I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value|
39
+ fill_in(field, :with => value)
40
+ end
41
+
42
+ When /^(?:I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
43
+ select(value, :from => field)
44
+ end
45
+
46
+ When /^(?:I )(check|uncheck|choose) "([^"]*)"$/ do |action, field|
47
+ send action, field
48
+ end
49
+
50
+ When /^(?:I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
51
+ attach_file(field, File.expand_path(path))
52
+ end
53
+
54
+ Then /^(?:I )should( not)? see( the element)? "([^"]*)"$/ do |negate, is_css, text|
55
+ should = negate ? :should_not : :should
56
+ have = is_css ? have_css(text) : have_content(text)
57
+ page.send should, have
58
+ end
59
+
60
+ Then /^the "([^"]*)" field(?: within (.*))? should( not)? contain "([^"]*)"$/ do |field, parent, negate, value|
61
+ with_scope(parent) do
62
+ field = find_field(field)
63
+ field_value = (field.tag_name == 'textarea') ? field.text : field.value
64
+ negate ? field_value.should_not =~ /#{value}/ : field_value.should =~ /#{value}/
65
+ end
66
+ end
67
+
68
+ Then /^the "([^"]*)" checkbox(?: within (.*))? should( not)? be checked$/ do |label, parent, negate|
69
+ with_scope(parent) do
70
+ field_checked = find_field(label)['checked']
71
+ field_checked.should negate ? be_false : be_true
72
+ end
73
+ end
74
+
75
+ Then /^(?:|I )should be on (.+)$/ do |page_name|
76
+ current_path = URI.parse(current_url).path
77
+ current_path.should == path_to(page_name)
78
+ end
79
+
80
+ Then /^show me the page$/ do
81
+ save_and_open_page
82
+ end
@@ -0,0 +1,73 @@
1
+ Feature: STI Resource
2
+
3
+ Ensure that standard CRUD works with STI models
4
+
5
+ Background:
6
+ Given I am logged in
7
+ And a configuration of:
8
+ """
9
+ ActiveAdmin.register Publisher do
10
+ controller do
11
+ def permitted_params
12
+ params.permit publisher: [:first_name, :last_name, :username, :age]
13
+ end if Rails::VERSION::MAJOR == 4
14
+ end
15
+ end
16
+ ActiveAdmin.register User do
17
+ controller do
18
+ def permitted_params
19
+ params.permit user: [:first_name, :last_name, :username, :age]
20
+ end if Rails::VERSION::MAJOR == 4
21
+ end
22
+ end
23
+ """
24
+
25
+ Scenario: Create, update and delete a child STI resource
26
+ Given I am on the index page for publishers
27
+ When I follow "New Publisher"
28
+ And I fill in "First name" with "Terry"
29
+ And I fill in "Last name" with "Fox"
30
+ And I fill in "Username" with "terry_fox"
31
+ And I press "Create Publisher"
32
+ Then I should see "Publisher was successfully created"
33
+ And I should see "Terry"
34
+
35
+ When I follow "Edit Publisher"
36
+ And I fill in "First name" with "Joe"
37
+ And I press "Update Publisher"
38
+ Then I should see "Publisher was successfully updated"
39
+ And I should see "Joe"
40
+
41
+ When I follow "Delete Publisher"
42
+ Then I should see "Publisher was successfully destroyed"
43
+
44
+ Scenario: Create, update and delete a parent STI resource
45
+ Given I am on the index page for users
46
+ When I follow "New User"
47
+ And I fill in "First name" with "Terry"
48
+ And I fill in "Last name" with "Fox"
49
+ And I fill in "Username" with "terry_fox"
50
+ And I press "Create User"
51
+ Then I should see "User was successfully created"
52
+ And I should see "Terry"
53
+
54
+ When I follow "Edit User"
55
+ And I fill in "First name" with "Joe"
56
+ And I press "Update User"
57
+ Then I should see "User was successfully updated"
58
+ And I should see "Joe"
59
+
60
+ When I follow "Delete User"
61
+ Then I should see "User was successfully destroyed"
62
+
63
+ Scenario: Update and delete a child STI when the parent is registered
64
+ Given a publisher named "Terry Fox" exists
65
+ And I am on the index page for users
66
+ When I follow "Edit"
67
+ And I fill in "First name" with "Joe"
68
+ And I press "Update Publisher"
69
+ Then I should see "Publisher was successfully updated"
70
+ And I should see "Joe"
71
+
72
+ When I follow "Delete User"
73
+ Then I should see "Publisher was successfully destroyed"
@@ -0,0 +1,118 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+ ENV["RAILS_ENV"] ||= "cucumber"
8
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../Gemfile', __FILE__)
9
+ require "rubygems"
10
+ require "bundler"
11
+ Bundler.setup
12
+
13
+ require File.expand_path('../../../spec/support/detect_rails_version', __FILE__)
14
+ ENV["RAILS"] = detect_rails_version
15
+
16
+ ENV['RAILS_ROOT'] = File.expand_path("../../../spec/rails/rails-#{ENV["RAILS"]}", __FILE__)
17
+
18
+
19
+ # Create the test app if it doesn't exists
20
+ unless File.exists?(ENV['RAILS_ROOT'])
21
+ system 'rake setup'
22
+ end
23
+
24
+ # Ensure the Active Admin load path is happy
25
+ require 'rails'
26
+ require 'active_admin'
27
+ ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"]
28
+
29
+ require ENV['RAILS_ROOT'] + '/config/environment'
30
+
31
+ # Setup autoloading of ActiveAdmin and the load path
32
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
33
+ autoload :ActiveAdmin, 'active_admin'
34
+
35
+ require 'cucumber/rails'
36
+
37
+ require 'capybara/rails'
38
+ require 'capybara/cucumber'
39
+ require 'capybara/session'
40
+ # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
41
+ # order to ease the transition to Capybara we set the default here. If you'd
42
+ # prefer to use XPath just remove this line and adjust any selectors in your
43
+ # steps to use the XPath syntax.
44
+ Capybara.default_selector = :css
45
+
46
+ # If you set this to false, any error raised from within your app will bubble
47
+ # up to your step definition and out to cucumber unless you catch it somewhere
48
+ # on the way. You can make Rails rescue errors and render error pages on a
49
+ # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
50
+ #
51
+ # If you set this to true, Rails will rescue all errors and render error
52
+ # pages, more or less in the same way your application would behave in the
53
+ # default production environment. It's not recommended to do this for all
54
+ # of your scenarios, as this makes it hard to discover errors in your application.
55
+ ActionController::Base.allow_rescue = false
56
+
57
+ # If you set this to true, each scenario will run in a database transaction.
58
+ # You can still turn off transactions on a per-scenario basis, simply tagging
59
+ # a feature or scenario with the @no-txn tag. If you are using Capybara,
60
+ # tagging with @culerity or @javascript will also turn transactions off.
61
+ #
62
+ # If you set this to false, transactions will be off for all scenarios,
63
+ # regardless of whether you use @no-txn or not.
64
+ #
65
+ # Beware that turning transactions off will leave data in your database
66
+ # after each scenario, which can lead to hard-to-debug failures in
67
+ # subsequent scenarios. If you do this, we recommend you create a Before
68
+ # block that will explicitly put your database in a known state.
69
+ Cucumber::Rails::World.use_transactional_fixtures = false
70
+ # How to clean your database when transactions are turned off. See
71
+ # http://github.com/bmabey/database_cleaner for more info.
72
+ if defined?(ActiveRecord::Base)
73
+ begin
74
+ require 'database_cleaner'
75
+ require 'database_cleaner/cucumber'
76
+ DatabaseCleaner.strategy = :truncation
77
+ rescue LoadError => ignore_if_database_cleaner_not_present
78
+ end
79
+ end
80
+
81
+ # Warden helpers to speed up login
82
+ # See https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
83
+ include Warden::Test::Helpers
84
+
85
+ After do
86
+ Warden.test_reset!
87
+
88
+ # Reset back to the default auth adapter
89
+ ActiveAdmin.application.namespace(:admin).
90
+ authorization_adapter = ActiveAdmin::AuthorizationAdapter
91
+ end
92
+
93
+ Before do
94
+
95
+ begin
96
+ # We are caching classes, but need to manually clear references to
97
+ # the controllers. If they aren't clear, the router stores references
98
+ ActiveSupport::Dependencies.clear
99
+
100
+ # Reload Active Admin
101
+ ActiveAdmin.unload!
102
+ ActiveAdmin.load!
103
+ rescue
104
+ p $!
105
+ raise $!
106
+ end
107
+ end
108
+
109
+ # improve the performance of the specs suite by not logging anything
110
+ # see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
111
+ Rails.logger.level = 4
112
+
113
+ # Improves performance by forcing the garbage collector to run less often.
114
+ unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
115
+ require File.expand_path('../../../spec/support/deferred_garbage_collection', __FILE__)
116
+ Before { DeferredGarbageCollection.start }
117
+ After { DeferredGarbageCollection.reconsider }
118
+ end