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,243 @@
1
+ require 'spec_helper'
2
+ require File.expand_path('config_shared_examples', File.dirname(__FILE__))
3
+
4
+ module ActiveAdmin
5
+ describe Resource do
6
+
7
+ it_should_behave_like "ActiveAdmin::Config"
8
+
9
+ before { load_defaults! }
10
+
11
+ let(:application){ ActiveAdmin::Application.new }
12
+ let(:namespace){ Namespace.new(application, :admin) }
13
+
14
+ def config(options = {})
15
+ @config ||= Resource.new(namespace, Category, options)
16
+ end
17
+
18
+ it { respond_to :resource_class }
19
+
20
+ describe "#resource_table_name" do
21
+ it "should return the resource's table name" do
22
+ config.resource_table_name.should == '"categories"'
23
+ end
24
+ context "when the :as option is given" do
25
+ it "should return the resource's table name" do
26
+ config(:as => "My Category").resource_table_name.should == '"categories"'
27
+ end
28
+ end
29
+ end
30
+
31
+ describe "#resource_column_names" do
32
+ it "should return the resource's column names" do
33
+ config.resource_column_names.should == Category.column_names
34
+ end
35
+ end
36
+
37
+ describe '#decorator_class' do
38
+ it 'returns nil by default' do
39
+ config.decorator_class.should be_nil
40
+ end
41
+ context 'when a decorator is defined' do
42
+ let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
43
+ specify '#decorator_class_name should return PostDecorator' do
44
+ resource.decorator_class_name.should == '::PostDecorator'
45
+ end
46
+
47
+ it 'returns the decorator class' do
48
+ resource.decorator_class.should == PostDecorator
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ describe "controller name" do
55
+ it "should return a namespaced controller name" do
56
+ config.controller_name.should == "Admin::CategoriesController"
57
+ end
58
+ context "when non namespaced controller" do
59
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
60
+ it "should return a non namespaced controller name" do
61
+ config.controller_name.should == "CategoriesController"
62
+ end
63
+ end
64
+ end
65
+
66
+ describe "#include_in_menu?" do
67
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
68
+ subject{ resource }
69
+
70
+ context "when regular resource" do
71
+ let(:resource){ namespace.register(Post) }
72
+ it { should be_include_in_menu }
73
+ end
74
+
75
+ context "when menu set to false" do
76
+ let(:resource){ namespace.register(Post){ menu false } }
77
+ it { should_not be_include_in_menu }
78
+ end
79
+ end
80
+
81
+ describe "#belongs_to" do
82
+
83
+ it "should build a belongs to configuration" do
84
+ config.belongs_to_config.should be_nil
85
+ config.belongs_to :posts
86
+ config.belongs_to_config.should_not be_nil
87
+ end
88
+
89
+ it "should set the target menu to the belongs to target" do
90
+ config.navigation_menu_name.should == ActiveAdmin::DEFAULT_MENU
91
+ config.belongs_to :posts
92
+ config.navigation_menu_name.should == :posts
93
+ end
94
+
95
+ end
96
+
97
+ describe "scoping" do
98
+ context "when using a block" do
99
+ before do
100
+ @resource = application.register Category do
101
+ scope_to do
102
+ "scoped"
103
+ end
104
+ end
105
+ end
106
+ it "should call the proc for the begin of association chain" do
107
+ begin_of_association_chain = @resource.controller.new.send(:begin_of_association_chain)
108
+ begin_of_association_chain.should == "scoped"
109
+ end
110
+ end
111
+
112
+ context "when using a symbol" do
113
+ before do
114
+ @resource = application.register Category do
115
+ scope_to :current_user
116
+ end
117
+ end
118
+ it "should call the method for the begin of association chain" do
119
+ controller = @resource.controller.new
120
+ controller.should_receive(:current_user).and_return(true)
121
+ begin_of_association_chain = controller.send(:begin_of_association_chain)
122
+ begin_of_association_chain.should == true
123
+ end
124
+ end
125
+
126
+ describe "getting the method for the association chain" do
127
+ context "when a simple registration" do
128
+ before do
129
+ @resource = application.register Category do
130
+ scope_to :current_user
131
+ end
132
+ end
133
+ it "should return the pluralized collection name" do
134
+ @resource.controller.new.send(:method_for_association_chain).should == :categories
135
+ end
136
+ end
137
+ context "when passing in the method as an option" do
138
+ before do
139
+ @resource = application.register Category do
140
+ scope_to :current_user, :association_method => :blog_categories
141
+ end
142
+ end
143
+ it "should return the method from the option" do
144
+ @resource.controller.new.send(:method_for_association_chain).should == :blog_categories
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+
151
+ describe "sort order" do
152
+
153
+ context "when resource class responds to primary_key" do
154
+ it "should sort by primary key desc by default" do
155
+ MockResource.should_receive(:primary_key).and_return("pk")
156
+ config = Resource.new(namespace, MockResource)
157
+ config.sort_order.should == "pk_desc"
158
+ end
159
+ end
160
+
161
+ context "when resource class does not respond to primary_key" do
162
+ it "should default to id" do
163
+ config = Resource.new(namespace, MockResource)
164
+ config.sort_order.should == "id_desc"
165
+ end
166
+ end
167
+
168
+ it "should be set-able" do
169
+ config.sort_order = "task_id_desc"
170
+ config.sort_order.should == "task_id_desc"
171
+ end
172
+
173
+ end
174
+
175
+ describe "adding a scope" do
176
+
177
+ it "should add a scope" do
178
+ config.scope :published
179
+ config.scopes.first.should be_a(ActiveAdmin::Scope)
180
+ config.scopes.first.name.should == "Published"
181
+ end
182
+
183
+ it "should retrive a scope by its id" do
184
+ config.scope :published
185
+ config.get_scope_by_id(:published).name.should == "Published"
186
+ end
187
+
188
+ it "should retrieve the default scope by proc" do
189
+ config.scope :published, :default => proc{ true }
190
+ config.scope :all
191
+ config.default_scope.name.should == "Published"
192
+ end
193
+
194
+ end
195
+
196
+ describe "#csv_builder" do
197
+ context "when no csv builder set" do
198
+ it "should return a default column builder with id and content columns" do
199
+ config.csv_builder.columns.size.should == Category.content_columns.size + 1
200
+ end
201
+ end
202
+
203
+ context "when csv builder set" do
204
+ it "shuld return the csv_builder we set" do
205
+ csv_builder = CSVBuilder.new
206
+ config.csv_builder = csv_builder
207
+ config.csv_builder.should == csv_builder
208
+ end
209
+ end
210
+ end
211
+
212
+ describe '#find_resource' do
213
+ let(:resource) { namespace.register(Post) }
214
+ let(:post) { double }
215
+ before do
216
+ Post.stub(:where).with('id' => '12345').and_return { [post] }
217
+ end
218
+
219
+ it 'can find the resource' do
220
+ resource.find_resource('12345').should == post
221
+ end
222
+
223
+ context 'with a decorator' do
224
+ let(:resource) { namespace.register(Post) { decorate_with PostDecorator } }
225
+ it 'decorates the resource' do
226
+ resource.find_resource('12345').should == PostDecorator.new(post)
227
+ end
228
+ end
229
+
230
+ context 'when using a nonstandard primary key' do
231
+ let(:different_post) { double }
232
+ before do
233
+ Post.stub(:primary_key).and_return 'something_else'
234
+ Post.stub(:where).with('something_else' => '55555').and_return { [different_post] }
235
+ end
236
+
237
+ it 'can find the post by the custom primary key' do
238
+ resource.find_resource('55555').should == different_post
239
+ end
240
+ end
241
+ end
242
+ end
243
+ end
@@ -0,0 +1,172 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe ActiveAdmin, "Routing", :type => :routing do
6
+
7
+ before do
8
+ load_defaults!
9
+ reload_routes!
10
+ end
11
+
12
+ it "should only have the namespaces necessary for route testing" do
13
+ ActiveAdmin.application.namespaces.keys.should eq [:admin, :root]
14
+ end
15
+
16
+ it "should route to the admin dashboard" do
17
+ get('/admin').should route_to 'admin/dashboard#index'
18
+ end
19
+
20
+ describe "standard resources" do
21
+ context "when in admin namespace" do
22
+ it "should route the index path" do
23
+ admin_posts_path.should == "/admin/posts"
24
+ end
25
+
26
+ it "should route the show path" do
27
+ admin_post_path(1).should == "/admin/posts/1"
28
+ end
29
+
30
+ it "should route the new path" do
31
+ new_admin_post_path.should == "/admin/posts/new"
32
+ end
33
+
34
+ it "should route the edit path" do
35
+ edit_admin_post_path(1).should == "/admin/posts/1/edit"
36
+ end
37
+ end
38
+
39
+ context "when in root namespace" do
40
+ before(:each) do
41
+ load_resources { ActiveAdmin.register(Post, :namespace => false) }
42
+ end
43
+
44
+ it "should route the index path" do
45
+ posts_path.should == "/posts"
46
+ end
47
+
48
+ it "should route the show path" do
49
+ post_path(1).should == "/posts/1"
50
+ end
51
+
52
+ it "should route the new path" do
53
+ new_post_path.should == "/posts/new"
54
+ end
55
+
56
+ it "should route the edit path" do
57
+ edit_post_path(1).should == "/posts/1/edit"
58
+ end
59
+ end
60
+
61
+ context "with member action" do
62
+ context "without an http verb" do
63
+ before do
64
+ load_resources do
65
+ ActiveAdmin.register(Post){ member_action "do_something" }
66
+ end
67
+ end
68
+
69
+ it "should default to GET" do
70
+ {:get => "/admin/posts/1/do_something"}.should be_routable
71
+ {:post => "/admin/posts/1/do_something"}.should_not be_routable
72
+ end
73
+ end
74
+
75
+ context "with one http verb" do
76
+ before do
77
+ load_resources do
78
+ ActiveAdmin.register(Post){ member_action "do_something", :method => :post }
79
+ end
80
+ end
81
+
82
+ it "should properly route" do
83
+ {:post => "/admin/posts/1/do_something"}.should be_routable
84
+ end
85
+ end
86
+
87
+ context "with two http verbs" do
88
+ before do
89
+ load_resources do
90
+ ActiveAdmin.register(Post){ member_action "do_something", :method => [:put, :delete] }
91
+ end
92
+ end
93
+
94
+ it "should properly route the first verb" do
95
+ {:put => "/admin/posts/1/do_something"}.should be_routable
96
+ end
97
+
98
+ it "should properly route the second verb" do
99
+ {:delete => "/admin/posts/1/do_something"}.should be_routable
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ describe "belongs to resource" do
106
+ it "should route the nested index path" do
107
+ admin_user_posts_path(1).should == "/admin/users/1/posts"
108
+ end
109
+
110
+ it "should route the nested show path" do
111
+ admin_user_post_path(1,2).should == "/admin/users/1/posts/2"
112
+ end
113
+
114
+ it "should route the nested new path" do
115
+ new_admin_user_post_path(1).should == "/admin/users/1/posts/new"
116
+ end
117
+
118
+ it "should route the nested edit path" do
119
+ edit_admin_user_post_path(1,2).should == "/admin/users/1/posts/2/edit"
120
+ end
121
+
122
+ context "with collection action" do
123
+ before do
124
+ load_resources do
125
+ ActiveAdmin.register(Post) do
126
+ belongs_to :user, :optional => true
127
+ end
128
+ ActiveAdmin.register(User) do
129
+ collection_action "do_something"
130
+ end
131
+ end
132
+ end
133
+
134
+ it "should properly route the collection action" do
135
+ { :get => "/admin/users/do_something" }.
136
+ should route_to({ :controller => 'admin/users',:action => 'do_something'})
137
+ end
138
+ end
139
+ end
140
+
141
+ describe "page" do
142
+ context "when default namespace" do
143
+ before(:each) do
144
+ load_resources { ActiveAdmin.register_page("Chocolate I lØve You!") }
145
+ end
146
+
147
+ it "should route to the page under /admin" do
148
+ admin_chocolate_i_love_you_path.should == "/admin/chocolate_i_love_you"
149
+ end
150
+
151
+ context "when in the root namespace" do
152
+ before(:each) do
153
+ load_resources { ActiveAdmin.register_page("Chocolate I lØve You!", :namespace => false) }
154
+ end
155
+
156
+ it "should route to page under /" do
157
+ chocolate_i_love_you_path.should == "/chocolate_i_love_you"
158
+ end
159
+ end
160
+
161
+ context "when singular page name" do
162
+ before(:each) do
163
+ load_resources { ActiveAdmin.register_page("Log") }
164
+ end
165
+
166
+ it "should not inject _index_ into the route name" do
167
+ admin_log_path.should == "/admin/log"
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Scope do
4
+
5
+ describe "creating a scope" do
6
+ subject{ scope }
7
+
8
+ context "when just a scope method" do
9
+ let(:scope) { ActiveAdmin::Scope.new :published }
10
+ its(:name) { should == "Published"}
11
+ its(:id) { should == "published"}
12
+ its(:scope_method) { should == :published }
13
+ end
14
+
15
+ context "when scope method is :all" do
16
+ let(:scope) { ActiveAdmin::Scope.new :all }
17
+ its(:name) { should == "All"}
18
+ its(:id) { should == "all"}
19
+ # :all does not return a chain but an array of active record
20
+ # instances. We set the scope_method to nil then.
21
+ its(:scope_method) { should == nil }
22
+ its(:scope_block) { should == nil }
23
+ end
24
+
25
+ context 'when a name and scope method is :all' do
26
+ let(:scope) { ActiveAdmin::Scope.new 'Tous', :all }
27
+ its(:name) { should eq 'Tous' }
28
+ its(:scope_method) { should be_nil }
29
+ its(:scope_block) { should be_nil }
30
+ end
31
+
32
+ context "when a name and scope method" do
33
+ let(:scope) { ActiveAdmin::Scope.new "With API Access", :with_api_access }
34
+ its(:name) { should == "With API Access"}
35
+ its(:id) { should == "with_api_access"}
36
+ its(:scope_method) { should == :with_api_access }
37
+ end
38
+
39
+ context "when a name and scope block" do
40
+ let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
41
+ its(:name) { should == "My Scope"}
42
+ its(:id) { should == "my_scope"}
43
+ its(:scope_method) { should == nil }
44
+ its(:scope_block) { should be_a(Proc)}
45
+ end
46
+
47
+ context "with a proc as the label" do
48
+ it "should raise an exception if a second argument isn't provided" do
49
+ expect{ ActiveAdmin::Scope.new proc{ Date.today.strftime '%A' }
50
+ }.to raise_error
51
+ end
52
+
53
+ it "should properly render the proc" do
54
+ scope = ActiveAdmin::Scope.new proc{ Date.today.strftime '%A' }, :foobar
55
+ scope.name.should eq Date.today.strftime '%A'
56
+ end
57
+ end
58
+
59
+ end # describe "creating a scope"
60
+
61
+ describe "#display_if_block" do
62
+
63
+ it "should return true by default" do
64
+ scope = ActiveAdmin::Scope.new(:default)
65
+ scope.display_if_block.call.should == true
66
+ end
67
+
68
+ it "should return the :if block if set" do
69
+ scope = ActiveAdmin::Scope.new(:with_block, nil, :if => proc{ false })
70
+ scope.display_if_block.call.should == false
71
+ end
72
+
73
+ end
74
+
75
+ describe "#default" do
76
+
77
+ it "should accept a boolean" do
78
+ scope = ActiveAdmin::Scope.new(:method, nil, :default => true)
79
+ scope.default_block.should == true
80
+ end
81
+
82
+ it "should default to a false #default_block" do
83
+ scope = ActiveAdmin::Scope.new(:method, nil)
84
+ scope.default_block.call.should == false
85
+ end
86
+
87
+ it "should store the :default proc" do
88
+ scope = ActiveAdmin::Scope.new(:with_block, nil, :default => proc{ true })
89
+ scope.default_block.call.should == true
90
+ end
91
+
92
+ end
93
+
94
+ describe "show_count" do
95
+
96
+ it "should allow setting of show_count to prevent showing counts" do
97
+ scope = ActiveAdmin::Scope.new(:default, nil, :show_count => false)
98
+ scope.show_count.should == false
99
+ end
100
+
101
+ it "should set show_count to true if not passed in" do
102
+ scope = ActiveAdmin::Scope.new(:default)
103
+ scope.show_count.should == true
104
+ end
105
+
106
+ end
107
+
108
+ end
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Settings do
4
+
5
+ subject{ Class.new{ include ActiveAdmin::Settings } }
6
+
7
+ it{ should respond_to :setting }
8
+ it{ should respond_to :deprecated_setting }
9
+ it{ should respond_to :default_settings }
10
+
11
+ describe "class API" do
12
+ it "should create settings" do
13
+ subject.setting :foo, 'bar'
14
+ subject.default_settings[:foo].should eq 'bar'
15
+ end
16
+
17
+ it "should create deprecated settings" do
18
+ ActiveAdmin::Deprecation.should_receive(:deprecate).twice
19
+ subject.deprecated_setting :baz, 32
20
+ subject.default_settings[:baz].should eq 32
21
+ end
22
+ end
23
+
24
+ describe "instance API" do
25
+
26
+ before do
27
+ subject.setting :foo, 'bar'
28
+ subject.deprecated_setting :baz, 32
29
+ end
30
+ let(:instance) { subject.new }
31
+
32
+ it "should have access to a default value" do
33
+ instance.foo.should eq 'bar'
34
+ instance.foo = 'qqq'
35
+ instance.foo.should eq 'qqq'
36
+ end
37
+
38
+ it "should have access to a deprecated value" do
39
+ ActiveAdmin::Deprecation.should_receive(:warn).exactly(3).times
40
+ instance.baz.should eq 32
41
+ instance.baz = [45]
42
+ instance.baz.should eq [45]
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+
49
+ describe ActiveAdmin::Settings::Inheritance do
50
+
51
+ subject do
52
+ Class.new do
53
+ include ActiveAdmin::Settings
54
+ include ActiveAdmin::Settings::Inheritance
55
+ end
56
+ end
57
+
58
+ it{ should respond_to :settings_inherited_by }
59
+ it{ should respond_to :inheritable_setting }
60
+ it{ should respond_to :deprecated_inheritable_setting }
61
+
62
+ let(:heir) { Class.new }
63
+
64
+ before do
65
+ subject.settings_inherited_by heir
66
+ end
67
+
68
+ describe "class API" do
69
+ it "should add setting to an heir" do
70
+ subject.inheritable_setting :one, 2
71
+ heir.default_settings[:one].should eq 2
72
+ end
73
+
74
+ it "should add deprecated setting to an heir" do
75
+ ActiveAdmin::Deprecation.should_receive(:deprecate).exactly(4).times
76
+ subject.deprecated_inheritable_setting :three, 4
77
+ heir.default_settings[:three].should eq 4
78
+ end
79
+ end
80
+
81
+ describe "instance API" do
82
+ before{ subject.inheritable_setting :left, :right }
83
+ it "should work" do
84
+ heir.new.left.should eq :right
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ def it_should_have_view(key, value)
4
+ it "should have #{value} for view key '#{key}'" do
5
+ subject.send(key).should == value
6
+ end
7
+ end
8
+
9
+ describe ActiveAdmin::ViewFactory do
10
+
11
+ it_should_have_view :global_navigation, ActiveAdmin::Views::TabbedNavigation
12
+ it_should_have_view :utility_navigation, ActiveAdmin::Views::TabbedNavigation
13
+ it_should_have_view :site_title, ActiveAdmin::Views::SiteTitle
14
+ it_should_have_view :action_items, ActiveAdmin::Views::ActionItems
15
+ it_should_have_view :header, ActiveAdmin::Views::Header
16
+ it_should_have_view :blank_slate, ActiveAdmin::Views::BlankSlate
17
+ it_should_have_view :action_list_popover, ActiveAdmin::Views::ActionListPopover
18
+
19
+ it_should_have_view :layout, ActiveAdmin::Views::Pages::Layout
20
+
21
+ end