yousty-activeadmin 1.0.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +43 -0
  3. data/.travis.yml +8 -0
  4. data/.yardopts +9 -0
  5. data/CHANGELOG.md +1056 -0
  6. data/CONTRIBUTING.md +110 -0
  7. data/Gemfile +41 -0
  8. data/Guardfile +7 -0
  9. data/LICENSE +25 -0
  10. data/README.md +67 -0
  11. data/Rakefile +25 -0
  12. data/activeadmin.gemspec +33 -0
  13. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  18. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  19. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +10 -0
  20. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +4 -0
  21. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +13 -0
  22. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +3 -0
  23. data/app/assets/images/active_admin/loading.gif +0 -0
  24. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  25. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  26. data/app/assets/images/active_admin/orderable.png +0 -0
  27. data/app/assets/javascripts/active_admin/application.js.coffee +6 -0
  28. data/app/assets/javascripts/active_admin/base.js.coffee +5 -0
  29. data/app/assets/javascripts/active_admin/components/application.js.coffee +23 -0
  30. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +26 -0
  31. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +41 -0
  32. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +37 -0
  33. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +105 -0
  34. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +97 -0
  35. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +25 -0
  36. data/app/assets/stylesheets/active_admin/_base.css.scss +41 -0
  37. data/app/assets/stylesheets/active_admin/_forms.css.scss +293 -0
  38. data/app/assets/stylesheets/active_admin/_header.css.scss +152 -0
  39. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  40. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  41. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  42. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +31 -0
  43. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  44. data/app/assets/stylesheets/active_admin/components/_buttons.scss +11 -0
  45. data/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  46. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +41 -0
  47. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  48. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  49. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  50. data/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  51. data/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  52. data/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  53. data/app/assets/stylesheets/active_admin/components/_pagination.scss +34 -0
  54. data/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  55. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  56. data/app/assets/stylesheets/active_admin/components/_scopes.scss +10 -0
  57. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  58. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +95 -0
  59. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +110 -0
  60. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +11 -0
  61. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +66 -0
  62. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +38 -0
  63. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +21 -0
  64. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  65. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  66. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +36 -0
  67. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +22 -0
  68. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  69. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +26 -0
  70. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +32 -0
  71. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  72. data/app/assets/stylesheets/active_admin/print.css.scss +284 -0
  73. data/app/assets/stylesheets/active_admin/structure/_footer.scss +14 -0
  74. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  75. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
  76. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  77. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  78. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  79. data/app/views/active_admin/devise/passwords/edit.html.erb +19 -0
  80. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  81. data/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  82. data/app/views/active_admin/devise/shared/_links.erb +27 -0
  83. data/app/views/active_admin/devise/unlocks/new.html.erb +14 -0
  84. data/app/views/active_admin/page/index.html.arb +1 -0
  85. data/app/views/active_admin/resource/edit.html.arb +1 -0
  86. data/app/views/active_admin/resource/index.csv.erb +17 -0
  87. data/app/views/active_admin/resource/index.html.arb +1 -0
  88. data/app/views/active_admin/resource/new.html.arb +1 -0
  89. data/app/views/active_admin/resource/show.html.arb +1 -0
  90. data/app/views/layouts/active_admin.html.arb +1 -0
  91. data/app/views/layouts/active_admin_logged_out.html.erb +37 -0
  92. data/config/locales/bg.yml +101 -0
  93. data/config/locales/ca.yml +98 -0
  94. data/config/locales/cs.yml +105 -0
  95. data/config/locales/da.yml +102 -0
  96. data/config/locales/de-CH.yml +117 -0
  97. data/config/locales/de.yml +119 -0
  98. data/config/locales/en-GB.yml +91 -0
  99. data/config/locales/en.yml +110 -0
  100. data/config/locales/es.yml +106 -0
  101. data/config/locales/es_MX.yml +104 -0
  102. data/config/locales/fi.yml +109 -0
  103. data/config/locales/fr.yml +97 -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 +104 -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 +90 -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 +84 -0
  127. data/docs/1-general-configuration.md +137 -0
  128. data/docs/10-custom-pages.md +98 -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 +227 -0
  132. data/docs/2-resource-customization.md +340 -0
  133. data/docs/3-index-pages/create-an-index.md +29 -0
  134. data/docs/3-index-pages/index-as-block.md +21 -0
  135. data/docs/3-index-pages/index-as-blog.md +71 -0
  136. data/docs/3-index-pages/index-as-grid.md +29 -0
  137. data/docs/3-index-pages/index-as-table.md +154 -0
  138. data/docs/3-index-pages.md +206 -0
  139. data/docs/4-csv-format.md +39 -0
  140. data/docs/5-forms.md +110 -0
  141. data/docs/6-show-pages.md +77 -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 +155 -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 +140 -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 +138 -0
  162. data/features/index/format_as_csv.feature +117 -0
  163. data/features/index/formats.feature +66 -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 +100 -0
  195. data/features/step_definitions/dashboard_steps.rb +15 -0
  196. data/features/step_definitions/factory_steps.rb +34 -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 +45 -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/symbol_leak_steps.rb +3 -0
  210. data/features/step_definitions/tab_steps.rb +3 -0
  211. data/features/step_definitions/table_steps.rb +119 -0
  212. data/features/step_definitions/user_steps.rb +39 -0
  213. data/features/step_definitions/web_steps.rb +86 -0
  214. data/features/sti_resource.feature +73 -0
  215. data/features/support/env.rb +112 -0
  216. data/features/support/paths.rb +71 -0
  217. data/features/support/selectors.rb +45 -0
  218. data/features/symbol_leak.feature +35 -0
  219. data/features/users/logging_in.feature +34 -0
  220. data/features/users/logging_out.feature +13 -0
  221. data/features/users/resetting_password.feature +34 -0
  222. data/lib/active_admin/abstract_view_factory.rb +95 -0
  223. data/lib/active_admin/application.rb +242 -0
  224. data/lib/active_admin/asset_registration.rb +29 -0
  225. data/lib/active_admin/authorization_adapter.rb +132 -0
  226. data/lib/active_admin/base_controller/authorization.rb +151 -0
  227. data/lib/active_admin/base_controller/menu.rb +34 -0
  228. data/lib/active_admin/base_controller.rb +78 -0
  229. data/lib/active_admin/batch_actions/controller.rb +24 -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/batch_actions.rb +17 -0
  236. data/lib/active_admin/callbacks.rb +87 -0
  237. data/lib/active_admin/cancan_adapter.rb +40 -0
  238. data/lib/active_admin/component.rb +5 -0
  239. data/lib/active_admin/controller_action.rb +12 -0
  240. data/lib/active_admin/csv_builder.rb +49 -0
  241. data/lib/active_admin/deprecation.rb +36 -0
  242. data/lib/active_admin/devise.rb +70 -0
  243. data/lib/active_admin/dsl.rb +166 -0
  244. data/lib/active_admin/engine.rb +7 -0
  245. data/lib/active_admin/event.rb +33 -0
  246. data/lib/active_admin/filters/dsl.rb +21 -0
  247. data/lib/active_admin/filters/forms.rb +89 -0
  248. data/lib/active_admin/filters/formtastic_addons.rb +70 -0
  249. data/lib/active_admin/filters/resource_extension.rb +136 -0
  250. data/lib/active_admin/filters.rb +9 -0
  251. data/lib/active_admin/form_builder.rb +152 -0
  252. data/lib/active_admin/helpers/collection.rb +23 -0
  253. data/lib/active_admin/helpers/optional_display.rb +38 -0
  254. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  255. data/lib/active_admin/helpers/settings.rb +108 -0
  256. data/lib/active_admin/iconic/icons.rb +142 -0
  257. data/lib/active_admin/iconic.rb +51 -0
  258. data/lib/active_admin/inputs/datepicker_input.rb +20 -0
  259. data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
  260. data/lib/active_admin/inputs/filter_base.rb +33 -0
  261. data/lib/active_admin/inputs/filter_boolean_input.rb +32 -0
  262. data/lib/active_admin/inputs/filter_check_boxes_input.rb +51 -0
  263. data/lib/active_admin/inputs/filter_date_range_input.rb +34 -0
  264. data/lib/active_admin/inputs/filter_numeric_input.rb +10 -0
  265. data/lib/active_admin/inputs/filter_select_input.rb +61 -0
  266. data/lib/active_admin/inputs/filter_string_input.rb +24 -0
  267. data/lib/active_admin/inputs.rb +15 -0
  268. data/lib/active_admin/menu.rb +107 -0
  269. data/lib/active_admin/menu_collection.rb +96 -0
  270. data/lib/active_admin/menu_item.rb +97 -0
  271. data/lib/active_admin/namespace.rb +224 -0
  272. data/lib/active_admin/orm/active_record/comments/comment.rb +39 -0
  273. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +14 -0
  274. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +17 -0
  275. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +23 -0
  276. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +75 -0
  277. data/lib/active_admin/orm/active_record/comments/views.rb +2 -0
  278. data/lib/active_admin/orm/active_record/comments.rb +84 -0
  279. data/lib/active_admin/orm/active_record.rb +3 -0
  280. data/lib/active_admin/orm/mongoid/.gitkeep +0 -0
  281. data/lib/active_admin/orm/mongoid.rb +1 -0
  282. data/lib/active_admin/page.rb +88 -0
  283. data/lib/active_admin/page_controller.rb +29 -0
  284. data/lib/active_admin/page_dsl.rb +28 -0
  285. data/lib/active_admin/page_presenter.rb +32 -0
  286. data/lib/active_admin/resource/action_items.rb +91 -0
  287. data/lib/active_admin/resource/belongs_to.rb +36 -0
  288. data/lib/active_admin/resource/controllers.rb +18 -0
  289. data/lib/active_admin/resource/menu.rb +64 -0
  290. data/lib/active_admin/resource/naming.rb +84 -0
  291. data/lib/active_admin/resource/page_presenters.rb +82 -0
  292. data/lib/active_admin/resource/pagination.rb +19 -0
  293. data/lib/active_admin/resource/routes.rb +99 -0
  294. data/lib/active_admin/resource/scope_to.rb +74 -0
  295. data/lib/active_admin/resource/scopes.rb +50 -0
  296. data/lib/active_admin/resource/sidebars.rb +27 -0
  297. data/lib/active_admin/resource.rb +153 -0
  298. data/lib/active_admin/resource_collection.rb +42 -0
  299. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  300. data/lib/active_admin/resource_controller/data_access.rb +298 -0
  301. data/lib/active_admin/resource_controller/decorators.rb +20 -0
  302. data/lib/active_admin/resource_controller/resource_class_methods.rb +24 -0
  303. data/lib/active_admin/resource_controller/scoping.rb +31 -0
  304. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  305. data/lib/active_admin/resource_controller.rb +50 -0
  306. data/lib/active_admin/resource_dsl.rb +134 -0
  307. data/lib/active_admin/router.rb +106 -0
  308. data/lib/active_admin/scope.rb +57 -0
  309. data/lib/active_admin/sidebar_section.rb +37 -0
  310. data/lib/active_admin/version.rb +3 -0
  311. data/lib/active_admin/view_factory.rb +27 -0
  312. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  313. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  314. data/lib/active_admin/view_helpers/auto_link_helper.rb +34 -0
  315. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +26 -0
  316. data/lib/active_admin/view_helpers/display_helper.rb +49 -0
  317. data/lib/active_admin/view_helpers/download_format_links_helper.rb +49 -0
  318. data/lib/active_admin/view_helpers/fields_for.rb +50 -0
  319. data/lib/active_admin/view_helpers/flash_helper.rb +13 -0
  320. data/lib/active_admin/view_helpers/form_helper.rb +24 -0
  321. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  322. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +93 -0
  323. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  324. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  325. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  326. data/lib/active_admin/view_helpers.rb +21 -0
  327. data/lib/active_admin/views/action_items.rb +17 -0
  328. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  329. data/lib/active_admin/views/components/attributes_table.rb +103 -0
  330. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  331. data/lib/active_admin/views/components/columns.rb +150 -0
  332. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  333. data/lib/active_admin/views/components/index_list.rb +68 -0
  334. data/lib/active_admin/views/components/paginated_collection.rb +125 -0
  335. data/lib/active_admin/views/components/panel.rb +34 -0
  336. data/lib/active_admin/views/components/popover.rb +27 -0
  337. data/lib/active_admin/views/components/scopes.rb +66 -0
  338. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  339. data/lib/active_admin/views/components/site_title.rb +55 -0
  340. data/lib/active_admin/views/components/status_tag.rb +56 -0
  341. data/lib/active_admin/views/components/table_for.rb +191 -0
  342. data/lib/active_admin/views/footer.rb +20 -0
  343. data/lib/active_admin/views/header.rb +32 -0
  344. data/lib/active_admin/views/index_as_block.rb +36 -0
  345. data/lib/active_admin/views/index_as_blog.rb +156 -0
  346. data/lib/active_admin/views/index_as_grid.rb +80 -0
  347. data/lib/active_admin/views/index_as_table.rb +264 -0
  348. data/lib/active_admin/views/pages/base.rb +139 -0
  349. data/lib/active_admin/views/pages/form.rb +51 -0
  350. data/lib/active_admin/views/pages/index.rb +147 -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/active_admin/views.rb +8 -0
  357. data/lib/active_admin.rb +125 -0
  358. data/lib/activeadmin.rb +1 -0
  359. data/lib/generators/active_admin/assets/assets_generator.rb +16 -0
  360. data/lib/generators/active_admin/assets/templates/active_admin.css.scss +17 -0
  361. data/lib/generators/active_admin/assets/templates/active_admin.js.coffee +1 -0
  362. data/lib/generators/active_admin/devise/devise_generator.rb +86 -0
  363. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  364. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +235 -0
  365. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +27 -0
  366. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  367. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  368. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  369. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  370. data/lib/ransack_ext.rb +12 -0
  371. data/script/local +44 -0
  372. data/script/use_rails +53 -0
  373. data/spec/integration/default_namespace_spec.rb +61 -0
  374. data/spec/integration/javascript_spec.rb +20 -0
  375. data/spec/integration/memory_spec.rb +29 -0
  376. data/spec/integration/stylesheets_spec.rb +41 -0
  377. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  378. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  379. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  380. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  381. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  382. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  383. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  384. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  385. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  386. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  387. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  388. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  389. data/spec/javascripts/support/jasmine.yml +74 -0
  390. data/spec/javascripts/support/jasmine_config.rb +23 -0
  391. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  392. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  393. data/spec/javascripts/support/jquery.min.js +4 -0
  394. data/spec/spec_helper.rb +175 -0
  395. data/spec/spec_helper_without_rails.rb +16 -0
  396. data/spec/support/deferred_garbage_collection.rb +19 -0
  397. data/spec/support/detect_rails_version.rb +42 -0
  398. data/spec/support/integration_example_group.rb +31 -0
  399. data/spec/support/jslint.yml +80 -0
  400. data/spec/support/rails_template.rb +111 -0
  401. data/spec/support/rails_template_with_data.rb +59 -0
  402. data/spec/support/templates/admin/stores.rb +11 -0
  403. data/spec/support/templates/cucumber.rb +24 -0
  404. data/spec/support/templates/cucumber_with_reloading.rb +5 -0
  405. data/spec/support/templates/en.yml +8 -0
  406. data/spec/support/templates/post_decorator.rb +53 -0
  407. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  408. data/spec/unit/action_builder_spec.rb +126 -0
  409. data/spec/unit/active_admin_spec.rb +11 -0
  410. data/spec/unit/application_spec.rb +141 -0
  411. data/spec/unit/asset_registration_spec.rb +52 -0
  412. data/spec/unit/authorization/authorization_adapter_spec.rb +61 -0
  413. data/spec/unit/authorization/controller_authorization_spec.rb +39 -0
  414. data/spec/unit/auto_link_spec.rb +32 -0
  415. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  416. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  417. data/spec/unit/belongs_to_spec.rb +42 -0
  418. data/spec/unit/cancan_adapter_spec.rb +43 -0
  419. data/spec/unit/comments_spec.rb +106 -0
  420. data/spec/unit/component_spec.rb +18 -0
  421. data/spec/unit/config_shared_examples.rb +59 -0
  422. data/spec/unit/controller_filters_spec.rb +32 -0
  423. data/spec/unit/csv_builder_spec.rb +103 -0
  424. data/spec/unit/devise_spec.rb +116 -0
  425. data/spec/unit/dsl_spec.rb +61 -0
  426. data/spec/unit/event_spec.rb +47 -0
  427. data/spec/unit/filters/filter_form_builder_spec.rb +423 -0
  428. data/spec/unit/filters/resource_spec.rb +119 -0
  429. data/spec/unit/form_builder_spec.rb +514 -0
  430. data/spec/unit/generators/install_spec.rb +23 -0
  431. data/spec/unit/helpers/collection_spec.rb +65 -0
  432. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  433. data/spec/unit/helpers/settings_spec.rb +30 -0
  434. data/spec/unit/menu_collection_spec.rb +62 -0
  435. data/spec/unit/menu_item_spec.rb +143 -0
  436. data/spec/unit/menu_spec.rb +71 -0
  437. data/spec/unit/namespace/authorization_spec.rb +27 -0
  438. data/spec/unit/namespace/register_page_spec.rb +74 -0
  439. data/spec/unit/namespace/register_resource_spec.rb +163 -0
  440. data/spec/unit/namespace_spec.rb +103 -0
  441. data/spec/unit/page_controller_spec.rb +5 -0
  442. data/spec/unit/page_spec.rb +72 -0
  443. data/spec/unit/pretty_format_spec.rb +35 -0
  444. data/spec/unit/resource/action_items_spec.rb +62 -0
  445. data/spec/unit/resource/menu_spec.rb +18 -0
  446. data/spec/unit/resource/naming_spec.rb +122 -0
  447. data/spec/unit/resource/page_presenters_spec.rb +44 -0
  448. data/spec/unit/resource/pagination_spec.rb +38 -0
  449. data/spec/unit/resource/routes_spec.rb +73 -0
  450. data/spec/unit/resource/scopes_spec.rb +43 -0
  451. data/spec/unit/resource/sidebars_spec.rb +43 -0
  452. data/spec/unit/resource_collection_spec.rb +160 -0
  453. data/spec/unit/resource_controller/data_access_spec.rb +73 -0
  454. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  455. data/spec/unit/resource_controller_spec.rb +265 -0
  456. data/spec/unit/resource_registration_spec.rb +56 -0
  457. data/spec/unit/resource_spec.rb +243 -0
  458. data/spec/unit/routing_spec.rb +172 -0
  459. data/spec/unit/scope_spec.rb +108 -0
  460. data/spec/unit/settings_spec.rb +88 -0
  461. data/spec/unit/view_factory_spec.rb +21 -0
  462. data/spec/unit/view_helpers/breadcrumbs_spec.rb +149 -0
  463. data/spec/unit/view_helpers/display_name_spec.rb +41 -0
  464. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +39 -0
  465. data/spec/unit/view_helpers/fields_for_spec.rb +50 -0
  466. data/spec/unit/view_helpers/form_helper_spec.rb +56 -0
  467. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +101 -0
  468. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  469. data/spec/unit/views/components/attributes_table_spec.rb +230 -0
  470. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  471. data/spec/unit/views/components/blank_slate_spec.rb +17 -0
  472. data/spec/unit/views/components/columns_spec.rb +142 -0
  473. data/spec/unit/views/components/index_list_spec.rb +32 -0
  474. data/spec/unit/views/components/paginated_collection_spec.rb +227 -0
  475. data/spec/unit/views/components/panel_spec.rb +51 -0
  476. data/spec/unit/views/components/popover_spec.rb +33 -0
  477. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  478. data/spec/unit/views/components/site_title_spec.rb +78 -0
  479. data/spec/unit/views/components/status_tag_spec.rb +95 -0
  480. data/spec/unit/views/components/table_for_spec.rb +201 -0
  481. data/spec/unit/views/pages/form_spec.rb +35 -0
  482. data/spec/unit/views/pages/layout_spec.rb +63 -0
  483. data/spec/unit/views/pages/show_spec.rb +20 -0
  484. data/spec/unit/views/tabbed_navigation_spec.rb +149 -0
  485. data/tasks/docs.rake +37 -0
  486. data/tasks/js.rake +32 -0
  487. data/tasks/parallel_tests.rake +60 -0
  488. data/tasks/test.rake +79 -0
  489. data/tasks/yard.rake +7 -0
  490. metadata +896 -0
@@ -0,0 +1,138 @@
1
+ Feature: Index Filtering
2
+
3
+ Scenario: Default Resources Filters
4
+ Given 3 posts exist
5
+ And an index configuration of:
6
+ """
7
+ ActiveAdmin.register Post
8
+ """
9
+ When I am on the index page for posts
10
+ Then I should see "Displaying all 3 Posts"
11
+ And I should see the following filters:
12
+ | Author | select |
13
+ | Category | select |
14
+ | Title | string |
15
+ | Body | string |
16
+ | Published at | date range |
17
+ | Created at | date range |
18
+ | Updated at | date range |
19
+
20
+ When I fill in "Title" with "Hello World 2"
21
+ And I press "Filter"
22
+ And I should see 1 posts in the table
23
+ And I should see "Hello World 2" within ".index_table"
24
+
25
+ Scenario: Filtering posts with no results
26
+ Given 3 posts exist
27
+ And an index configuration of:
28
+ """
29
+ ActiveAdmin.register Post
30
+ """
31
+ When I am on the index page for posts
32
+ Then I should see "Displaying all 3 Posts"
33
+
34
+ When I fill in "Title" with "THIS IS NOT AN EXISTING TITLE!!"
35
+ And I press "Filter"
36
+ Then I should not see ".index_table"
37
+ And I should not see a sortable table header
38
+ And I should not see pagination
39
+ And I should see "No Posts found"
40
+
41
+ Scenario: Filtering posts while not on the first page
42
+ Given 9 posts exist
43
+ And an index configuration of:
44
+ """
45
+ ActiveAdmin.register Post do
46
+ config.per_page = 5
47
+ end
48
+ """
49
+ When I follow "2"
50
+ Then I should see "Displaying Posts 6 - 9 of 9 in total"
51
+
52
+ When I fill in "Title" with "Hello World 2"
53
+ And I press "Filter"
54
+ And I should see 1 posts in the table
55
+ And I should see "Hello World 2" within ".index_table"
56
+
57
+ Scenario: Checkboxes - Filtering posts written by anyone
58
+ Given 1 post exists
59
+ And a post with the title "Hello World" written by "Jane Doe" exists
60
+ And an index configuration of:
61
+ """
62
+ ActiveAdmin.register Post do
63
+ filter :author, :as => :check_boxes
64
+ end
65
+ """
66
+ When I press "Filter"
67
+ Then I should see 2 posts in the table
68
+ And I should see "Hello World" within ".index_table"
69
+ And the "Jane Doe" checkbox should not be checked
70
+
71
+ Scenario: Checkboxes - Filtering posts written by Jane Doe
72
+ Given 1 post exists
73
+ And a post with the title "Hello World" written by "Jane Doe" exists
74
+ And an index configuration of:
75
+ """
76
+ ActiveAdmin.register Post do
77
+ filter :author, :as => :check_boxes
78
+ end
79
+ """
80
+ When I check "Jane Doe"
81
+ And I press "Filter"
82
+ Then I should see 1 posts in the table
83
+ And I should see "Hello World" within ".index_table"
84
+ And the "Jane Doe" checkbox should be checked
85
+
86
+ Scenario: Disabling filters
87
+ Given an index configuration of:
88
+ """
89
+ ActiveAdmin.register Post do
90
+ config.filters = false
91
+ end
92
+ """
93
+ Then I should not see a sidebar titled "Filters"
94
+
95
+ Scenario: Select - Filtering categories with posts written by Jane Doe
96
+ Given a category named "Mystery" exists
97
+ And 1 post with the title "Hello World" written by "Jane Doe" in category "Non-Fiction" exists
98
+ And an index configuration of:
99
+ """
100
+ ActiveAdmin.register Category
101
+ """
102
+ When I select "Jane Doe" from "Authors"
103
+ And I press "Filter"
104
+ Then I should see 1 categories in the table
105
+ And I should see "Non-Fiction" within ".index_table"
106
+ And I should not see "Mystery" within ".index_table"
107
+
108
+ Scenario: Checkboxes - Filtering categories via posts written by anyone
109
+ Given a category named "Mystery" exists
110
+ And a post with the title "Hello World" written by "Jane Doe" in category "Non-Fiction" exists
111
+ And an index configuration of:
112
+ """
113
+ ActiveAdmin.register Category do
114
+ filter :authors, :as => :check_boxes
115
+ end
116
+ """
117
+ When I press "Filter"
118
+ Then I should see 2 posts in the table
119
+ And I should see "Mystery" within ".index_table"
120
+ And I should see "Non-Fiction" within ".index_table"
121
+ And the "Jane Doe" checkbox should not be checked
122
+
123
+ Scenario: Checkboxes - Filtering categories via posts written by Jane Doe
124
+ Given a category named "Mystery" exists
125
+ And a post with the title "Hello World" written by "Jane Doe" in category "Non-Fiction" exists
126
+ And an index configuration of:
127
+ """
128
+ ActiveAdmin.register Category do
129
+ filter :authors, :as => :check_boxes
130
+ end
131
+ """
132
+ When I check "Jane Doe"
133
+ And I press "Filter"
134
+ Then I should see 1 categories in the table
135
+ And I should see "Non-Fiction" within ".index_table"
136
+ And the "Jane Doe" checkbox should be checked
137
+
138
+
@@ -0,0 +1,117 @@
1
+ Feature: Format as CSV
2
+
3
+ Background:
4
+ Given I am logged in
5
+
6
+ Scenario: Default
7
+ Given a configuration of:
8
+ """
9
+ ActiveAdmin.register Post
10
+ """
11
+ And a post with the title "Hello World" exists
12
+ When I am on the index page for posts
13
+ And I follow "CSV"
14
+ And I should download a CSV file for "posts" containing:
15
+ | Id | Title | Body | Published At | Starred | Created At | Updated At |
16
+ | \d+ | Hello World | | | | (.*) | (.*) |
17
+
18
+ Scenario: Default with alias
19
+ Given a configuration of:
20
+ """
21
+ ActiveAdmin.register Post, :as => "MyArticle"
22
+ """
23
+ And 1 post exists
24
+ When I am on the index page for my_articles
25
+ And I follow "CSV"
26
+ And I should download a CSV file for "my-articles" containing:
27
+ | Id | Title | Body | Published At | Starred | Created At | Updated At |
28
+
29
+ Scenario: With CSV format customization
30
+ Given a configuration of:
31
+ """
32
+ ActiveAdmin.register Post do
33
+ csv do
34
+ column :title
35
+ column("Last update") { |post| post.updated_at }
36
+ column("Copyright") { "Greg Bell" }
37
+ end
38
+ end
39
+ """
40
+ And a post with the title "Hello, World" exists
41
+ When I am on the index page for posts
42
+ And I follow "CSV"
43
+ And I should download a CSV file for "posts" containing:
44
+ | Title | Last update | Copyright |
45
+ | Hello, World | (.*) | Greg Bell |
46
+
47
+ Scenario: With CSV format customization
48
+ Given a configuration of:
49
+ """
50
+ ActiveAdmin.register Post do
51
+ csv :col_sep => ';' do
52
+ column :title
53
+ column :body
54
+ end
55
+ end
56
+ """
57
+ And a post with the title "Hello, World" exists
58
+ When I am on the index page for posts
59
+ And I follow "CSV"
60
+ And I should download a CSV file with ";" separator for "posts" containing:
61
+ | Title | Body |
62
+ | Hello, World | (.*) |
63
+
64
+ Scenario: With CSV option customization
65
+ Given a configuration of:
66
+ """
67
+ ActiveAdmin.register Post do
68
+ csv :force_quotes => true do
69
+ column :title
70
+ column :body
71
+ end
72
+ end
73
+ """
74
+ And a post with the title "012345" exists
75
+ When I am on the index page for posts
76
+ And I follow "CSV"
77
+ And I should download a CSV file with "," separator for "posts" containing:
78
+ | Title | Body |
79
+ | 012345 | (.*) |
80
+ And the CSV file should contain "012345" in quotes
81
+
82
+ Scenario: With default CSV separator option
83
+ Given a configuration of:
84
+ """
85
+ ActiveAdmin.application.csv_options = { :col_sep => ';' }
86
+ ActiveAdmin.register Post do
87
+ csv do
88
+ column :title
89
+ column :body
90
+ end
91
+ end
92
+ """
93
+ And a post with the title "Hello, World" exists
94
+ When I am on the index page for posts
95
+ And I follow "CSV"
96
+ And I should download a CSV file with ";" separator for "posts" containing:
97
+ | Title | Body |
98
+ | Hello, World | (.*) |
99
+
100
+ Scenario: With default CSV options
101
+ Given a configuration of:
102
+ """
103
+ ActiveAdmin.application.csv_options = {:col_sep => ',', :force_quotes => true}
104
+ ActiveAdmin.register Post do
105
+ csv do
106
+ column :title
107
+ column :body
108
+ end
109
+ end
110
+ """
111
+ And a post with the title "012345" exists
112
+ When I am on the index page for posts
113
+ And I follow "CSV"
114
+ And I should download a CSV file with "," separator for "posts" containing:
115
+ | Title | Body |
116
+ | 012345 | (.*) |
117
+ And the CSV file should contain "012345" in quotes
@@ -0,0 +1,66 @@
1
+ Feature: Index Formats
2
+
3
+ Scenario: View index with default formats
4
+ Given an index configuration of:
5
+ """
6
+ ActiveAdmin.register Post
7
+ """
8
+ And 1 post exists
9
+ When I am on the index page for posts
10
+ Then I should see a link to download "CSV"
11
+ And I should see a link to download "XML"
12
+ And I should see a link to download "JSON"
13
+
14
+ Scenario: View index with download_links set to false
15
+ Given an index configuration of:
16
+ """
17
+ ActiveAdmin.register Post do
18
+ index :download_links => false
19
+ end
20
+ """
21
+ And 1 post exists
22
+ When I am on the index page for posts
23
+ Then I should not see a link to download "CSV"
24
+ And I should not see a link to download "XML"
25
+ And I should not see a link to download "JSON"
26
+
27
+ Scenario: View index with pdf download link set
28
+ Given an index configuration of:
29
+ """
30
+ ActiveAdmin.register Post do
31
+ index :download_links => [:pdf]
32
+ end
33
+ """
34
+ And 1 post exists
35
+ When I am on the index page for posts
36
+ Then I should not see a link to download "CSV"
37
+ And I should not see a link to download "XML"
38
+ And I should not see a link to download "JSON"
39
+ And I should see a link to download "PDF"
40
+
41
+ Scenario: View index with download_links block which returns false
42
+ Given an index configuration of:
43
+ """
44
+ ActiveAdmin.register Post do
45
+ index :download_links => proc { false }
46
+ end
47
+ """
48
+ And 1 post exists
49
+ When I am on the index page for posts
50
+ Then I should not see a link to download "CSV"
51
+ And I should not see a link to download "XML"
52
+ And I should not see a link to download "JSON"
53
+
54
+ Scenario: View index with download_links block which returns [:csv]
55
+ Given an index configuration of:
56
+ """
57
+ ActiveAdmin.register Post do
58
+ index :download_links => -> { [:csv] }
59
+ end
60
+ """
61
+ And 1 post exists
62
+ When I am on the index page for posts
63
+ Then I should see a link to download "CSV"
64
+ And I should not see a link to download "XML"
65
+ And I should not see a link to download "JSON"
66
+ And I should not see a link to download "PDF"
@@ -0,0 +1,15 @@
1
+ Feature: Index as Block
2
+
3
+ Viewing the resource as a block which is renderered by the user
4
+
5
+ Scenario: Viewing the index as a block
6
+ Given a post with the title "Hello World from Block" exists
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :block do |post|
11
+ span(link_to(post.title, admin_post_path(post)))
12
+ end
13
+ end
14
+ """
15
+ Then I should see "Hello World from Block" within ".index_as_block"
@@ -0,0 +1,69 @@
1
+ Feature: Index as Blog
2
+
3
+ Viewing resources as a blog on the index page
4
+
5
+ Scenario: Viewing the blog with a resource
6
+ Given a post with the title "Hello World" exists
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :blog
11
+ end
12
+ """
13
+ And I am logged in
14
+ When I am on the index page for posts
15
+ Then I should see "Hello World" within "h3"
16
+ And I should see a link to "Hello World"
17
+
18
+ Scenario: Viewing the blog with a resource as a simple configuration
19
+ Given a post with the title "Hello World" and body "My great post body" exists
20
+ And an index configuration of:
21
+ """
22
+ ActiveAdmin.register Post do
23
+ index :as => :blog do
24
+ title :title
25
+ body :body
26
+ end
27
+ end
28
+ """
29
+ Then I should see "Hello World" within "h3"
30
+ And I should see a link to "Hello World"
31
+ And I should see "My great post body" within ".post"
32
+
33
+ Scenario: Viewing the blog with a resource as a block configuration
34
+ Given a post with the title "Hello World" and body "My great post body" exists
35
+ And an index configuration of:
36
+ """
37
+ ActiveAdmin.register Post do
38
+ index :as => :blog do
39
+ title do |post|
40
+ post.title + " From Block"
41
+ end
42
+ body do |post|
43
+ post.body + " From Block"
44
+ end
45
+ end
46
+ end
47
+ """
48
+ Then I should see "Hello World From Block" within "h3"
49
+ And I should see a link to "Hello World From Block"
50
+ And I should see "My great post body From Block" within ".post"
51
+
52
+ Scenario: Viewing a blog with a resource as a block configuration should render Abre components
53
+ Given a post with the title "Hello World" and body "My great post body" exists
54
+ And an index configuration of:
55
+ """
56
+ ActiveAdmin.register Post do
57
+ index :as => :blog do
58
+ title do |post|
59
+ span(:class => :title_span) { post.title + " From Block " }
60
+ end
61
+ body do |post|
62
+ span(:class => :body_span) { post.body + " From Block" }
63
+ end
64
+ end
65
+ end
66
+ """
67
+ Then I should see "Hello World From Block" within "span.title_span"
68
+ And I should see a link to "Hello World From Block"
69
+ And I should see "My great post body From Block" within ".post span.body_span"
@@ -0,0 +1,45 @@
1
+ Feature: Index as Grid
2
+
3
+ Viewing resources as a grid on the index page
4
+
5
+ Scenario: Viewing index as a grid with a simple block configuration
6
+ Given 9 posts exist
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :grid do |post|
11
+ h2 auto_link(post)
12
+ end
13
+ end
14
+ """
15
+ Then the table ".index_grid" should have 3 rows
16
+ And the table ".index_grid" should have 3 columns
17
+ And there should be 9 "a" tags within index grid
18
+
19
+ Scenario: Viewing index as a grid and set the number of columns
20
+ Given 9 posts exist
21
+ And an index configuration of:
22
+ """
23
+ ActiveAdmin.register Post do
24
+ index :as => :grid, :columns => 1 do |post|
25
+ h2 auto_link(post)
26
+ end
27
+ end
28
+ """
29
+ Then the table ".index_grid" should have 9 rows
30
+ And the table ".index_grid" should have 1 columns
31
+ And there should be 9 "a" tags within "table.index_grid"
32
+
33
+ Scenario: Viewing index as a grid with an odd number of items
34
+ Given 9 posts exist
35
+ And an index configuration of:
36
+ """
37
+ ActiveAdmin.register Post do
38
+ index :as => :grid, :columns => 2 do |post|
39
+ h2 auto_link(post)
40
+ end
41
+ end
42
+ """
43
+ Then the table ".index_grid" should have 5 rows
44
+ And the table ".index_grid" should have 2 columns
45
+ And there should be 9 "a" tags within "table.index_grid"
@@ -0,0 +1,195 @@
1
+ Feature: Index as Table
2
+
3
+ Viewing resources as a table on the index page
4
+
5
+ Scenario: Viewing the default table with one resources
6
+ Given an index configuration of:
7
+ """
8
+ ActiveAdmin.register Post
9
+ """
10
+ And 1 post exists
11
+ When I am on the index page for posts
12
+ Then I should see a sortable table header with "Id"
13
+ And I should see a sortable table header with "Title"
14
+ And I should see a table with id "index_table_posts"
15
+
16
+ Scenario: Viewing the default table with a resource
17
+ Given a post with the title "Hello World" exists
18
+ And an index configuration of:
19
+ """
20
+ ActiveAdmin.register Post
21
+ """
22
+ Then I should see "Hello World"
23
+ Then I should see nicely formatted datetimes
24
+ And I should see a link to "View"
25
+ And I should see a link to "Edit"
26
+ And I should see a link to "Delete"
27
+
28
+ Scenario: Customizing the columns with symbols
29
+ Given a post with the title "Hello World" and body "From the body" exists
30
+ And an index configuration of:
31
+ """
32
+ ActiveAdmin.register Post do
33
+ index do
34
+ column :title
35
+ column :body
36
+ end
37
+ end
38
+ """
39
+ Then I should see a sortable table header with "Title"
40
+ And I should see a sortable table header with "Body"
41
+ And I should see "Hello World"
42
+ And I should see "From the body"
43
+
44
+ Scenario: Customizing the columns with a block
45
+ Given a post with the title "Hello World" and body "From the body" exists
46
+ And an index configuration of:
47
+ """
48
+ ActiveAdmin.register Post do
49
+ index do
50
+ column("My Title") do |post|
51
+ post.title
52
+ end
53
+ column("My Body") do |post|
54
+ post.body
55
+ end
56
+ end
57
+ end
58
+ """
59
+ Then I should see a table header with "My Title"
60
+ And I should see a table header with "My Body"
61
+ And I should see "Hello World"
62
+ And I should see "From the body"
63
+
64
+ Scenario: Showing and Hiding columns
65
+ Given a post with the title "Hello World" and body "From the body" exists
66
+ And an index configuration of:
67
+ """
68
+ ActiveAdmin.register Post do
69
+ index do
70
+ if current_active_admin_user
71
+ column :title
72
+ end
73
+ if current_active_admin_user.nil?
74
+ column :body
75
+ end
76
+ end
77
+ end
78
+ """
79
+ Then I should see a sortable table header with "Title"
80
+ And I should not see a table header with "Body"
81
+ And I should see "Hello World"
82
+ And I should not see "From the body"
83
+
84
+ Scenario: Default Actions
85
+ Given a post with the title "Hello World" and body "From the body" exists
86
+ And an index configuration of:
87
+ """
88
+ ActiveAdmin.register Post do
89
+ actions :index, :show, :edit, :update
90
+ end
91
+ """
92
+ Then I should see a member link to "View"
93
+ And I should see a member link to "Edit"
94
+ And I should not see a member link to "Delete"
95
+
96
+ Scenario: Actions with defaults and custom actions
97
+ Given a post with the title "Hello World" and body "From the body" exists
98
+ And an index configuration of:
99
+ """
100
+ ActiveAdmin.register Post do
101
+ actions :index, :show, :edit, :update
102
+
103
+ index do
104
+ column :category
105
+ actions do |resource|
106
+ link_to 'Custom Action', edit_admin_post_path(resource), :class => 'member_link'
107
+ end
108
+ end
109
+ end
110
+ """
111
+ Then I should see a member link to "View"
112
+ And I should see a member link to "Edit"
113
+ And I should not see a member link to "Delete"
114
+ And I should see a member link to "Custom Action"
115
+
116
+ Scenario: Actions without default actions
117
+ Given a post with the title "Hello World" and body "From the body" exists
118
+ And an index configuration of:
119
+ """
120
+ ActiveAdmin.register Post do
121
+ actions :index, :show, :edit, :update
122
+
123
+ index do
124
+ column :category
125
+ actions :defaults => false do |resource|
126
+ link_to 'Custom Action', edit_admin_post_path(resource), :class => 'member_link'
127
+ end
128
+ end
129
+ end
130
+ """
131
+ Then I should not see a member link to "View"
132
+ And I should not see a member link to "Edit"
133
+ And I should not see a member link to "Delete"
134
+ And I should see a member link to "Custom Action"
135
+
136
+ Scenario: Associations are not sortable
137
+ Given 1 post exists
138
+ And an index configuration of:
139
+ """
140
+ ActiveAdmin.register Post do
141
+ index do
142
+ column :category
143
+ end
144
+ end
145
+ """
146
+ Then I should not see a sortable table header with "Category"
147
+
148
+ Scenario: Sorting
149
+ Given a post with the title "Hello World" and body "From the body" exists
150
+ And a post with the title "Bye bye world" and body "Move your..." exists
151
+ And an index configuration of:
152
+ """
153
+ ActiveAdmin.register Post
154
+ """
155
+ When I am on the index page for posts
156
+ Then I should see the "index_table_posts" table:
157
+ | [ ] | Id | Title | Body | Published At | Starred | Created At | Updated At | |
158
+ | [ ] | 2 | Bye bye world | Move your... | | | /.*/ | /.*/ | ViewEditDelete |
159
+ | [ ] | 1 | Hello World | From the body | | | /.*/ | /.*/ | ViewEditDelete |
160
+ When I follow "Id"
161
+ Then I should see the "index_table_posts" table:
162
+ | [ ] | Id | Title | Body | Published At | Starred | Created At | Updated At | |
163
+ | [ ] | 1 | Hello World | From the body | | | /.*/ | /.*/ | ViewEditDelete |
164
+ | [ ] | 2 | Bye bye world | Move your... | | | /.*/ | /.*/ | ViewEditDelete |
165
+
166
+ Scenario: Sorting by a virtual column
167
+ Given a post with the title "Hello World" exists
168
+ And a post with the title "Bye bye world" exists
169
+ And an index configuration of:
170
+ """
171
+ ActiveAdmin.register Post do
172
+ controller do
173
+ def scoped_collection
174
+ Post.select("id, title, length(title) as title_length")
175
+ end
176
+ end
177
+
178
+ index do
179
+ column :id
180
+ column :title
181
+ column("Title Length", :sortable => :title_length) { |post| post.title_length }
182
+ end
183
+ end
184
+ """
185
+ When I am on the index page for posts
186
+ And I follow "Title Length"
187
+ Then I should see the "index_table_posts" table:
188
+ | Id | Title | Title Length |
189
+ | 2 | Bye bye world | 13 |
190
+ | 1 | Hello World | 11 |
191
+ When I follow "Title Length"
192
+ Then I should see the "index_table_posts" table:
193
+ | Id | Title | Title Length |
194
+ | 1 | Hello World | 11 |
195
+ | 2 | Bye bye world | 13 |