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,72 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require File.expand_path('config_shared_examples', File.dirname(__FILE__))
5
+
6
+ module ActiveAdmin
7
+ describe Page do
8
+
9
+ it_should_behave_like "ActiveAdmin::Config"
10
+ before { load_defaults! }
11
+
12
+ let(:application){ ActiveAdmin::Application.new }
13
+ let(:namespace){ Namespace.new(application, :admin) }
14
+
15
+ def config(options = {})
16
+ @config ||= namespace.register_page("Chocolate I lØve You!", options)
17
+ end
18
+
19
+ describe "controller name" do
20
+ it "should return a namespaced controller name" do
21
+ config.controller_name.should == "Admin::ChocolateILoveYouController"
22
+ end
23
+ context "when non namespaced controller" do
24
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
25
+ it "should return a non namespaced controller name" do
26
+ config.controller_name.should == "ChocolateILoveYouController"
27
+ end
28
+ end
29
+ end
30
+
31
+ describe "#resource_name" do
32
+ it "returns the name" do
33
+ config.resource_name.should == "Chocolate I lØve You!"
34
+ end
35
+
36
+ it "returns the singular, lowercase name" do
37
+ config.resource_name.singular.should == "chocolate i lØve you!"
38
+ end
39
+ end
40
+
41
+ describe "#plural_resource_label" do
42
+ it "returns the singular name" do
43
+ config.plural_resource_label.should == "Chocolate I lØve You!"
44
+ end
45
+ end
46
+
47
+ describe "#underscored_resource_name" do
48
+ it "returns the resource name underscored" do
49
+ config.underscored_resource_name.should == "chocolate_i_love_you"
50
+ end
51
+ end
52
+
53
+ describe "#camelized_resource_name" do
54
+ it "returns the resource name camel case" do
55
+ config.camelized_resource_name.should == "ChocolateILoveYou"
56
+ end
57
+ end
58
+
59
+ it "should not belong_to anything" do
60
+ config.belongs_to?.should == false
61
+ end
62
+
63
+ it "should not have any action_items" do
64
+ config.action_items?.should == false
65
+ end
66
+
67
+ it "should not have any sidebar_sections" do
68
+ config.sidebar_sections?.should == false
69
+ end
70
+
71
+ end
72
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe "#pretty_format" do
4
+ include ActiveAdmin::ViewHelpers::DisplayHelper
5
+
6
+ context "when a String is passed in" do
7
+ it "should return the String passed in" do
8
+ pretty_format("hello").should == "hello"
9
+ end
10
+ end
11
+
12
+ context "when a Date or a Time is passed in" do
13
+ it "should return a localized Date or Time with long format" do
14
+ t = Time.now
15
+ self.should_receive(:localize).with(t, {:format => :long}) { "Just Now!" }
16
+ pretty_format(t).should == "Just Now!"
17
+ end
18
+ end
19
+
20
+ context "when an ActiveRecord object is passed in" do
21
+ it "should delegate to auto_link" do
22
+ post = Post.new
23
+ self.should_receive(:auto_link).with(post) { "model name" }
24
+ pretty_format(post).should == "model name"
25
+ end
26
+ end
27
+
28
+ context "when something else is passed in" do
29
+ it "should delegate to display_name" do
30
+ something = Class.new.new
31
+ self.should_receive(:display_name).with(something) { "I'm not famous" }
32
+ pretty_format(something).should == "I'm not famous"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Resource::ActionItems do
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.register(Post)
8
+ end
9
+
10
+ describe "adding a new action item" do
11
+
12
+ before do
13
+ resource.clear_action_items!
14
+ resource.add_action_item do
15
+ # Empty ...
16
+ end
17
+ end
18
+
19
+ it "should add an action item" do
20
+ resource.action_items.size.should == 1
21
+ end
22
+
23
+ it "should store an instance of ActionItem" do
24
+ resource.action_items.first.should be_an_instance_of(ActiveAdmin::ActionItem)
25
+ end
26
+
27
+ it "should store the block in the action item" do
28
+ resource.action_items.first.block.should_not be_nil
29
+ end
30
+
31
+ end
32
+
33
+ describe "setting an action item to only display on specific controller actions" do
34
+
35
+ before do
36
+ resource.clear_action_items!
37
+ resource.add_action_item :only => :index do
38
+ raise StandardError
39
+ end
40
+ resource.add_action_item :only => :show do
41
+ # Empty ...
42
+ end
43
+ end
44
+
45
+ it "should return only relevant action items" do
46
+ resource.action_items_for(:index).size.should == 1
47
+ expect {
48
+ resource.action_items_for(:index).first.call
49
+ }.to raise_exception(StandardError)
50
+ end
51
+
52
+ end
53
+
54
+ describe "default action items" do
55
+
56
+ it "should have 3 action items" do
57
+ resource.action_items.size.should == 3
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Menu" do
5
+
6
+ before { load_defaults! }
7
+
8
+ let(:application){ ActiveAdmin::Application.new }
9
+ let(:namespace){ Namespace.new(application, :admin) }
10
+
11
+ def config(options = {})
12
+ @config ||= Resource.new(namespace, Category, options)
13
+ end
14
+
15
+ # TODO...
16
+
17
+ end
18
+ end
@@ -0,0 +1,122 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ require 'spec_helper'
4
+
5
+ module ActiveAdmin
6
+ describe Resource, "Naming" do
7
+
8
+ before { load_defaults! }
9
+
10
+ let(:application){ ActiveAdmin::Application.new }
11
+ let(:namespace){ Namespace.new(application, :admin) }
12
+
13
+ def config(options = {})
14
+ @config ||= Resource.new(namespace, Category, options)
15
+ end
16
+
17
+ module ::Mock class Resource < ActiveRecord::Base; end; end
18
+ module NoActiveModel class Resource; end; end
19
+
20
+ describe "singular resource name" do
21
+ context "when class" do
22
+ it "should be the underscored singular resource name" do
23
+ config.resource_name.singular.should == "category"
24
+ end
25
+ end
26
+ context "when a class in a module" do
27
+ it "should underscore the module and the class" do
28
+ Resource.new(namespace, Mock::Resource).resource_name.singular.should == "mock_resource"
29
+ end
30
+ end
31
+ context "when you pass the 'as' option" do
32
+ it "should underscore the passed through string" do
33
+ config(:as => "Blog Category").resource_name.singular.should == "blog_category"
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "resource label" do
39
+ it "should return a pretty name" do
40
+ config.resource_label.should == "Category"
41
+ end
42
+
43
+ it "should return the plural version" do
44
+ config.plural_resource_label.should == "Categories"
45
+ end
46
+
47
+ context "when the :as option is given" do
48
+ it "should return the custom name" do
49
+ config(:as => "My Category").resource_label.should == "My Category"
50
+ end
51
+ end
52
+
53
+ context "when a class in a module" do
54
+ it "should include the module and the class" do
55
+ Resource.new(namespace, Mock::Resource).resource_label.should == "Mock Resource"
56
+ end
57
+
58
+ it "should include the module and the pluralized class" do
59
+ Resource.new(namespace, Mock::Resource).plural_resource_label.should == "Mock Resources"
60
+ end
61
+ end
62
+
63
+ describe "I18n integration" do
64
+ describe "singular label" do
65
+ it "should return the titleized model_name.human" do
66
+ config.resource_name.should_receive(:translate).and_return "Da category"
67
+
68
+ config.resource_label.should == "Da category"
69
+ end
70
+ end
71
+
72
+ describe "plural label" do
73
+ it "should return the titleized plural version defined by i18n if available" do
74
+ config.resource_name.should_receive(:translate).at_least(:once).and_return "Da categories"
75
+ config.plural_resource_label.should == "Da categories"
76
+ end
77
+ end
78
+
79
+ describe "plural label with not default locale" do
80
+ it "should return the titleized plural version defined by i18n with custom :count if available" do
81
+ config.resource_name.should_receive(:translate).at_least(:once).and_return "Категории"
82
+ config.plural_resource_label(:count => 3).should == "Категории"
83
+ end
84
+ end
85
+
86
+ context "when the :as option is given" do
87
+ describe "singular label" do
88
+ it "should translate the custom name" do
89
+ config = config(:as => 'My Category')
90
+ config.resource_name.should_receive(:translate).and_return "Translated category"
91
+ config.resource_label.should == "Translated category"
92
+ end
93
+ end
94
+
95
+ describe "plural label" do
96
+ it "should translate the custom name" do
97
+ config = config(:as => 'My Category')
98
+ config.resource_name.should_receive(:translate).at_least(:once).and_return "Translated categories"
99
+ config.plural_resource_label.should == "Translated categories"
100
+ end
101
+ end
102
+ end
103
+
104
+ end
105
+ end
106
+
107
+ describe "duplicate resource names" do
108
+ let(:resource_name) { config.resource_name }
109
+ let(:duplicate_resource_name) { Resource.new(namespace, Category).resource_name }
110
+
111
+ [:==, :===, :eql?].each do |method|
112
+ it "are equivalent when compared with #{method}" do
113
+ resource_name.public_send(method, duplicate_resource_name).should be_true
114
+ end
115
+ end
116
+
117
+ it "have identical hash values" do
118
+ resource_name.hash.should == duplicate_resource_name.hash
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Resource::PagePresenters do
4
+
5
+ let(:namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin) }
6
+ let(:resource){ namespace.register(Post) }
7
+
8
+ it "should have an empty set of configs on initialize" do
9
+ resource.page_presenters.should == {}
10
+ end
11
+
12
+ it "should add a show page presenter" do
13
+ page_presenter = ActiveAdmin::PagePresenter.new
14
+ resource.set_page_presenter(:show, page_presenter)
15
+ resource.page_presenters[:show].should == page_presenter
16
+ end
17
+
18
+ it "should add an index page presenter" do
19
+ page_presenter = ActiveAdmin::PagePresenter.new({:as => :table})
20
+ resource.set_page_presenter(:index, page_presenter)
21
+ resource.page_presenters[:index].default.should == page_presenter
22
+ end
23
+
24
+ describe "#get_page_presenter" do
25
+
26
+ it "should return a page config when set" do
27
+ page_presenter = ActiveAdmin::PagePresenter.new
28
+ resource.set_page_presenter(:index, page_presenter)
29
+ resource.get_page_presenter(:index).should == page_presenter
30
+ end
31
+
32
+ it "should return a specific index page config when set" do
33
+ page_presenter = ActiveAdmin::PagePresenter.new
34
+ resource.set_page_presenter(:index, page_presenter)
35
+ resource.get_page_presenter(:index, "table").should == page_presenter
36
+ end
37
+
38
+ it "should return nil when no page config set" do
39
+ resource.get_page_presenter(:index).should == nil
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Pagination" do
5
+
6
+ before { load_defaults! }
7
+
8
+ let(:application){ ActiveAdmin::Application.new }
9
+ let(:namespace){ Namespace.new(application, :admin) }
10
+
11
+ def config(options = {})
12
+ @config ||= Resource.new(namespace, Category, options)
13
+ end
14
+
15
+ describe "#paginate" do
16
+ it "should default to true" do
17
+ config.paginate.should == true
18
+ end
19
+
20
+ it "should be settable to false" do
21
+ config.paginate = false
22
+ config.paginate.should == false
23
+ end
24
+ end
25
+
26
+ describe "#per_page" do
27
+ it "should default to namespace.default_per_page" do
28
+ namespace.should_receive(:default_per_page).and_return(5)
29
+ config.per_page.should == 5
30
+ end
31
+
32
+ it "should be settable" do
33
+ config.per_page = 5
34
+ config.per_page.should == 5
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource::Routes do
5
+ before { load_defaults! }
6
+
7
+ describe "route names" do
8
+ context "when in the admin namespace" do
9
+ let!(:config) { ActiveAdmin.register Category }
10
+ let(:category) { Category.new { |c| c.id = 123 } }
11
+
12
+ it "should return the route prefix" do
13
+ config.route_prefix.should eq 'admin'
14
+ end
15
+
16
+ it "should return the route collection path" do
17
+ config.route_collection_path.should eq '/admin/categories'
18
+ end
19
+
20
+ it "should return the route instance path" do
21
+ config.route_instance_path(category).should eq '/admin/categories/123'
22
+ end
23
+ end
24
+
25
+ context "when in the root namespace" do
26
+ let!(:config) { ActiveAdmin.register Category, :namespace => false }
27
+ it "should have a nil route_prefix" do
28
+ config.route_prefix.should be_nil
29
+ end
30
+
31
+ it "should generate a correct route" do
32
+ reload_routes!
33
+ config.route_collection_path.should == "/categories"
34
+ end
35
+ end
36
+
37
+ context "when registering a plural resource" do
38
+ class ::News; def self.has_many(*); end end
39
+ let!(:config) { ActiveAdmin.register News }
40
+ before{ reload_routes! }
41
+
42
+ it "should return the plural route with _index" do
43
+ config.route_collection_path.should == "/admin/news"
44
+ end
45
+ end
46
+
47
+ context "when the resource belongs to another resource" do
48
+ let! :config do
49
+ ActiveAdmin.register Post do
50
+ belongs_to :category
51
+ end
52
+ end
53
+
54
+ let :post do
55
+ Post.new do |p|
56
+ p.id = 3
57
+ p.category = Category.new{ |c| c.id = 1 }
58
+ end
59
+ end
60
+
61
+ before{ reload_routes! }
62
+
63
+ it "should nest the collection path" do
64
+ config.route_collection_path(category_id: 1).should == "/admin/categories/1/posts"
65
+ end
66
+
67
+ it "should nest the instance path" do
68
+ config.route_instance_path(post).should == "/admin/categories/1/posts/3"
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Scopes" do
5
+
6
+ before { load_defaults! }
7
+
8
+ let(:application){ ActiveAdmin::Application.new }
9
+ let(:namespace){ Namespace.new(application, :admin) }
10
+
11
+ def config(options = {})
12
+ @config ||= Resource.new(namespace, Category, options)
13
+ end
14
+
15
+ describe "adding a scope" do
16
+
17
+ it "should add a scope" do
18
+ config.scope :published
19
+ config.scopes.first.should be_a(ActiveAdmin::Scope)
20
+ config.scopes.first.name.should == "Published"
21
+ end
22
+
23
+ it "should retrive a scope by its id" do
24
+ config.scope :published
25
+ config.get_scope_by_id(:published).name.should == "Published"
26
+ end
27
+
28
+ it "should not add a scope with the same name twice" do
29
+ config.scope :published
30
+ config.scope :published
31
+ config.scopes.size.should == 1
32
+ end
33
+
34
+ it "should update a scope with the same id" do
35
+ config.scope :published
36
+ config.scopes.first.scope_block.should be_nil
37
+ config.scope(:published){ }
38
+ config.scopes.first.scope_block.should_not be_nil
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Resource::Sidebars do
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.register(Post)
8
+ end
9
+
10
+ let(:sidebar) { ActiveAdmin::SidebarSection.new(:help) }
11
+
12
+ describe "adding a new sidebar section" do
13
+
14
+ before do
15
+ resource.clear_sidebar_sections!
16
+ resource.sidebar_sections << sidebar
17
+ end
18
+
19
+ it "should add a sidebar section" do
20
+ resource.should have(1).sidebar_sections
21
+ end
22
+
23
+ end
24
+
25
+ describe "retrieving sections for a controller action" do
26
+
27
+ let(:only_index){ ActiveAdmin::SidebarSection.new(:help, :only => :index) }
28
+ let(:only_show){ ActiveAdmin::SidebarSection.new(:help, :only => :show) }
29
+
30
+ before do
31
+ resource.clear_sidebar_sections!
32
+ resource.sidebar_sections << only_index
33
+ resource.sidebar_sections << only_show
34
+ end
35
+
36
+ it "should only return the relevant action items" do
37
+ resource.should have(2).sidebar_sections
38
+ resource.sidebar_sections_for("index").should == [only_index]
39
+ end
40
+
41
+ end
42
+
43
+ end