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,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Panel do
4
+
5
+ let(:the_panel) do
6
+ render_arbre_component do
7
+ panel "My Title" do
8
+ span("Hello World")
9
+ end
10
+ end
11
+ end
12
+
13
+ it "should have a title h3" do
14
+ the_panel.find_by_tag("h3").first.content.should == "My Title"
15
+ end
16
+
17
+ it "should have a contents div" do
18
+ the_panel.find_by_tag("div").first.class_list.should include("panel_contents")
19
+ end
20
+
21
+ it "should add children to the contents div" do
22
+ the_panel.find_by_tag("span").first.parent.should == the_panel.find_by_tag("div").first
23
+ end
24
+
25
+ it "should set the icon" do
26
+ the_panel = render_arbre_component do
27
+ panel("Title", :icon => :arrow_down)
28
+ end
29
+ the_panel.find_by_tag("h3").first.content.should include("span class=\"icon")
30
+ end
31
+
32
+ it "should allow a html_safe title (without icon)" do
33
+ title_with_html = %q[Title with <abbr>HTML</abbr>].html_safe
34
+ the_panel = render_arbre_component do
35
+ panel(title_with_html)
36
+ end
37
+ the_panel.find_by_tag("h3").first.content.should eq(title_with_html)
38
+ end
39
+
40
+ describe "#children?" do
41
+
42
+ it "returns false if no children have been added to the panel" do
43
+ the_panel = render_arbre_component do
44
+ panel("A Panel")
45
+ end
46
+ the_panel.children?.should == false
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Popover do
4
+
5
+ let(:the_popover) do
6
+ render_arbre_component do
7
+ popover :id => "my_awesome_popover" do
8
+ para "Hello World, this is popover content baby."
9
+ end
10
+ end
11
+ end
12
+
13
+ it "should have the class of 'sidebar_section'" do
14
+ the_popover.class_list.should include("popover")
15
+ end
16
+
17
+ it "should have an inner content element class of 'popover_contents'" do
18
+ the_popover.find_by_tag("div").first.class_list.should include("popover_contents")
19
+ end
20
+
21
+ it "should have the popover content in the inner content element" do
22
+ the_popover.find_by_class("popover_contents").first.content.should include("Hello World, this is popover content baby.")
23
+ end
24
+
25
+ it "should have an id" do
26
+ the_popover.id.should == "my_awesome_popover"
27
+ end
28
+
29
+ it "should be hidden" do
30
+ the_popover.attributes.should include(:style => "display: none");
31
+ end
32
+
33
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::SidebarSection do
4
+
5
+ let(:section) do
6
+ ActiveAdmin::SidebarSection.new("Help Section") do
7
+ span "Help Me"
8
+ end
9
+ end
10
+
11
+ let(:html) do
12
+ render_arbre_component :section => section do
13
+ sidebar_section(assigns[:section])
14
+ end
15
+ end
16
+
17
+ it "should have a title h3" do
18
+ html.find_by_tag("h3").first.content.should == "Help Section"
19
+ end
20
+
21
+ it "should have the class of 'sidebar_section'" do
22
+ html.class_list.should include("sidebar_section")
23
+ end
24
+
25
+ it "should have an id based on the title" do
26
+ html.id.should == "help-section_sidebar_section"
27
+ end
28
+
29
+ it "should have a contents div" do
30
+ html.find_by_tag("div").first.class_list.should include("panel_contents")
31
+ end
32
+
33
+ it "should add children to the contents div" do
34
+ html.find_by_tag("span").first.parent.should == html.find_by_tag("div").first
35
+ end
36
+
37
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::SiteTitle do
4
+
5
+ let(:helpers){ mock_action_view }
6
+
7
+ def build_title(namespace)
8
+ render_arbre_component({namespace: namespace}, helpers) do
9
+ insert_tag ActiveAdmin::Views::SiteTitle, assigns[:namespace]
10
+ end
11
+ end
12
+
13
+ context "when a value" do
14
+
15
+ it "renders the string when a string is passed in" do
16
+ namespace = double site_title: "Hello World",
17
+ site_title_image: nil,
18
+ site_title_link: nil
19
+
20
+ site_title = build_title(namespace)
21
+ site_title.content.should eq "Hello World"
22
+ end
23
+
24
+ it "renders the return value of a method when a symbol" do
25
+ helpers.should_receive(:hello_world).and_return("Hello World")
26
+
27
+ namespace = double site_title: :hello_world,
28
+ site_title_image: nil,
29
+ site_title_link: nil
30
+
31
+ site_title = build_title(namespace)
32
+ site_title.content.should eq "Hello World"
33
+ end
34
+
35
+ it "renders the return value of a proc" do
36
+ namespace = double site_title: proc{ "Hello World" },
37
+ site_title_image: nil,
38
+ site_title_link: nil
39
+
40
+ site_title = build_title(namespace)
41
+ site_title.content.should eq "Hello World"
42
+ end
43
+
44
+ end
45
+
46
+ context "when an image" do
47
+
48
+ it "renders the string when a string is passed in" do
49
+ helpers.should_receive(:image_tag).
50
+ with("an/image.png", alt: nil, id: "site_title_image").
51
+ and_return '<img src="/assets/an/image.png" />'.html_safe
52
+
53
+ namespace = double site_title: nil,
54
+ site_title_image: "an/image.png",
55
+ site_title_link: nil
56
+
57
+ site_title = build_title(namespace)
58
+ site_title.content.strip.should eq '<img src="/assets/an/image.png" />'
59
+ end
60
+
61
+ end
62
+
63
+ context "when a link is present" do
64
+
65
+ it "renders the string when a string is passed in" do
66
+ namespace = double site_title: "Hello World",
67
+ site_title_image: nil,
68
+ site_title_link: "/"
69
+
70
+ site_title = build_title(namespace)
71
+ site_title.content.should eq '<a href="/">Hello World</a>'
72
+ end
73
+
74
+ end
75
+
76
+
77
+
78
+ end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::StatusTag do
4
+
5
+ describe "#status_tag" do
6
+
7
+ # Helper method to build StatusTag objects in an Arbre context
8
+ def status_tag(*args)
9
+ render_arbre_component(:status_tag_args => args) do
10
+ status_tag(*assigns[:status_tag_args])
11
+ end
12
+ end
13
+
14
+ subject { status_tag(nil) }
15
+
16
+
17
+ its(:tag_name) { should == 'span' }
18
+ its(:class_list) { should include('status_tag') }
19
+
20
+ context "when status is 'completed'" do
21
+ subject { status_tag('completed') }
22
+
23
+ its(:tag_name) { should == 'span' }
24
+ its(:class_list) { should include('status_tag') }
25
+ its(:class_list) { should include('completed') }
26
+ its(:content) { should == 'Completed' }
27
+ end
28
+
29
+ context "when status is 'in_progress'" do
30
+ subject { status_tag('in_progress') }
31
+
32
+ its(:class_list) { should include('in_progress') }
33
+ its(:content) { should == 'In Progress' }
34
+ end
35
+
36
+ context "when status is 'In progress'" do
37
+ subject { status_tag('In progress') }
38
+
39
+ its(:class_list) { should include('in_progress') }
40
+ its(:content) { should == 'In Progress' }
41
+ end
42
+
43
+ context "when status is an empty string" do
44
+ subject { status_tag('') }
45
+
46
+ its(:class_list) { should include('status_tag') }
47
+ its(:content) { should == '' }
48
+ end
49
+
50
+ context "when status is nil" do
51
+ subject { status_tag(nil) }
52
+
53
+ its(:class_list) { should include('status_tag') }
54
+ its(:content) { should == '' }
55
+ end
56
+
57
+ context "when status is 'Active' and type is :ok" do
58
+ subject { status_tag('Active', :ok) }
59
+
60
+ its(:class_list) { should include('status_tag') }
61
+ its(:class_list) { should include('active') }
62
+ its(:class_list) { should include('ok') }
63
+ end
64
+
65
+ context "when status is 'Active' and class is 'ok'" do
66
+ subject { status_tag('Active', :class => 'ok') }
67
+
68
+ its(:class_list) { should include('status_tag') }
69
+ its(:class_list) { should include('active') }
70
+ its(:class_list) { should include('ok') }
71
+ end
72
+
73
+ context "when status is 'Active' and label is 'on'" do
74
+ subject { status_tag('Active', :label => 'on') }
75
+
76
+ its(:content) { should == 'on' }
77
+ its(:class_list) { should include('status_tag') }
78
+ its(:class_list) { should include('active') }
79
+ its(:class_list) { should_not include('on') }
80
+ end
81
+
82
+ context "when status is 'So useless', type is :ok, class is 'woot awesome' and id is 'useless'" do
83
+ subject { status_tag('So useless', :ok, :class => 'woot awesome', :id => 'useless') }
84
+
85
+ its(:content) { should == 'So Useless' }
86
+ its(:class_list) { should include('status_tag') }
87
+ its(:class_list) { should include('ok') }
88
+ its(:class_list) { should include('so_useless') }
89
+ its(:class_list) { should include('woot') }
90
+ its(:class_list) { should include('awesome') }
91
+ its(:id) { should == 'useless' }
92
+ end
93
+
94
+ end # describe "#status_tag"
95
+ end
@@ -0,0 +1,201 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::TableFor do
4
+ describe "creating with the dsl" do
5
+
6
+ let(:collection) do
7
+ [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
8
+ end
9
+
10
+ let(:assigns){ { :collection => collection } }
11
+ let(:helpers){ mock_action_view }
12
+
13
+ context "when creating a column with a symbol" do
14
+ let(:table) do
15
+ render_arbre_component assigns, helpers do
16
+ table_for(collection) do
17
+ column :title
18
+ end
19
+ end
20
+ end
21
+
22
+ it "should create a table header based on the symbol" do
23
+ table.find_by_tag("th").first.content.should == "Title"
24
+ end
25
+
26
+ it "should create a table row for each element in the collection" do
27
+ table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
28
+ end
29
+
30
+ ["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
31
+ it "should create a cell with #{content}" do
32
+ table.find_by_tag("td")[index].content.should == content
33
+ end
34
+ end
35
+ end
36
+
37
+ context "when creating many columns with symbols" do
38
+ let(:table) do
39
+ render_arbre_component assigns, helpers do
40
+ table_for(collection) do
41
+ column :title
42
+ column :created_at
43
+ end
44
+ end
45
+ end
46
+
47
+ it "should create a table header based on the symbol" do
48
+ table.find_by_tag("th").first.content.should == "Title"
49
+ table.find_by_tag("th").last.content.should == "Created At"
50
+ end
51
+
52
+ it "should add a class to each table header based on the col name" do
53
+ table.find_by_tag("th").first
54
+ .class_list.to_a.join(' ').should == "col col-title"
55
+ table.find_by_tag("th").last
56
+ .class_list.to_a.join(' ').should == "col col-created_at"
57
+ end
58
+
59
+ it "should create a table row for each element in the collection" do
60
+ table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
61
+ end
62
+
63
+ it "should create a cell for each column" do
64
+ table.find_by_tag("td").size.should == 6
65
+ end
66
+
67
+ it "should add a class for each cell based on the col name" do
68
+ table.find_by_tag("td").first
69
+ .class_list.to_a.join(' ').should == "col col-title"
70
+ table.find_by_tag("td").last
71
+ .class_list.to_a.join(' ').should == "col col-created_at"
72
+ end
73
+ end
74
+
75
+ context "when creating a column with block content" do
76
+ let(:table) do
77
+ render_arbre_component assigns, helpers do
78
+ table_for(collection) do
79
+ column :title do |post|
80
+ span(post.title)
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ it "should add a class to each table header based on the col name" do
87
+ table.find_by_tag("th").first.class_list.should include("col-title")
88
+ end
89
+
90
+ [ "<span>First Post</span>",
91
+ "<span>Second Post</span>",
92
+ "<span>Third Post</span>" ].each_with_index do |content, index|
93
+ it "should create a cell with #{content}" do
94
+ table.find_by_tag("td")[index].content.strip.should == content
95
+ end
96
+ end
97
+ end
98
+
99
+ context "when creating a column with multiple block content" do
100
+ let(:table) do
101
+ render_arbre_component assigns, helpers do
102
+ table_for(collection) do
103
+ column :title do |post|
104
+ span(post.title)
105
+ span(post.title)
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+ 3.times do |index|
112
+ it "should create a cell with multiple elements in row #{index}" do
113
+ table.find_by_tag("td")[index].find_by_tag("span").size.should == 2
114
+ end
115
+ end
116
+ end
117
+
118
+
119
+ context "when creating many columns with symbols, blocks and strings" do
120
+ let(:table) do
121
+ render_arbre_component assigns, helpers do
122
+ table_for(collection) do
123
+ column "My Custom Title", :title
124
+ column :created_at , :class=>"datetime"
125
+ end
126
+ end
127
+ end
128
+
129
+
130
+ it "should add a class to each table header based on class option or the col name" do
131
+ table.find_by_tag("th").first
132
+ .class_list.to_a.join(' ').should == "col col-my_custom_title"
133
+ table.find_by_tag("th").last
134
+ .class_list.to_a.join(' ').should == "col datetime"
135
+ end
136
+
137
+ it "should add a class to each cell based on class option or the col name" do
138
+ table.find_by_tag("td").first
139
+ .class_list.to_a.join(' ').should == "col col-my_custom_title"
140
+ table.find_by_tag("td").last
141
+ .class_list.to_a.join(' ').should == "col datetime"
142
+ end
143
+ end
144
+
145
+ context "when using a single record instead of a collection" do
146
+ let(:table) do
147
+ render_arbre_component nil, helpers do
148
+ table_for Post.new do
149
+ column :title
150
+ end
151
+ end
152
+ end
153
+ it "should render" do
154
+ table.find_by_tag("th").first.content.should == "Title"
155
+ end
156
+ end
157
+
158
+
159
+ end
160
+
161
+ describe "column sorting" do
162
+
163
+ def build_column(*args, &block)
164
+ ActiveAdmin::Views::TableFor::Column.new(*args, &block)
165
+ end
166
+
167
+ subject { table_column }
168
+
169
+ context "when default" do
170
+ let(:table_column){ build_column(:username) }
171
+ it { should be_sortable }
172
+ its(:sort_key){ should == "username" }
173
+ end
174
+
175
+ context "when a block given with no sort key" do
176
+ let(:table_column){ build_column("Username"){ } }
177
+ it { should_not be_sortable }
178
+ end
179
+
180
+ context "when a block given with a sort key" do
181
+ let(:table_column){ build_column("Username", :sortable => :username){ } }
182
+ it { should be_sortable }
183
+ its(:sort_key){ should == "username" }
184
+ end
185
+
186
+ context "when :sortable => false with a symbol" do
187
+ let(:table_column){ build_column(:username, :sortable => false) }
188
+ it { should_not be_sortable }
189
+ end
190
+
191
+ context "when :sortable => false with a symbol and string" do
192
+ let(:table_column){ build_column("Username", :username, :sortable => false) }
193
+ it { should_not be_sortable }
194
+ end
195
+
196
+ context "when :sortable column is an association" do
197
+ let(:table_column){ build_column("Category", :category, Post) }
198
+ it { should_not be_sortable }
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe ActiveAdmin::Views::Pages::Form do
4
+ describe "#title" do
5
+ let!(:application){ ActiveAdmin::Application.new }
6
+ let(:namespace){ ActiveAdmin::Namespace.new(application, "Admin") }
7
+ let!(:params){ { :controller => "UsersController", :action => "edit" } }
8
+ let(:helpers) do
9
+ helpers = mock_action_view
10
+ helpers.stub :active_admin_config => namespace.register(Post),
11
+ :params => params
12
+
13
+ helpers
14
+ end
15
+
16
+ let(:arbre_context) do
17
+ OpenStruct.new(:params => params, :helpers => helpers, :assigns => {})
18
+ end
19
+
20
+ context "when page_title is assigned" do
21
+ it "should show the set page title" do
22
+ arbre_context.assigns[:page_title] = "My Page Title"
23
+ page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
24
+ page.title.should eq "My Page Title"
25
+ end
26
+ end
27
+
28
+ context "when page_title is not assigned" do
29
+ it "should show the correct I18n text" do
30
+ page = ActiveAdmin::Views::Pages::Form.new(arbre_context)
31
+ page.title.should eq "Edit Post"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Layout do
4
+
5
+ let(:assigns){ {} }
6
+ let(:helpers) do
7
+ helpers = mock_action_view
8
+
9
+ helpers.stub :active_admin_application => active_admin_application,
10
+ :active_admin_config => double('Config', action_items?: nil, breadcrumb: nil, sidebar_sections?: nil),
11
+ :active_admin_namespace => active_admin_namespace,
12
+ :breadcrumb_links => [],
13
+ :content_for => "",
14
+ :csrf_meta_tag => "",
15
+ :current_active_admin_user => nil,
16
+ :current_active_admin_user? => false,
17
+ :current_menu => double('Menu', :items => []),
18
+ :flash => {},
19
+ :javascript_path => "/dummy/",
20
+ :link_to => "",
21
+ :render_or_call_method_or_proc_on => "",
22
+ :stylesheet_link_tag => double(html_safe: ""),
23
+ :view_factory => view_factory,
24
+ :params => {:controller => 'UsersController', :action => 'edit'}
25
+
26
+ helpers
27
+ end
28
+
29
+ let(:active_admin_namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :myspace) }
30
+ let(:active_admin_application){ ActiveAdmin.application }
31
+ let(:view_factory) { ActiveAdmin::ViewFactory.new }
32
+
33
+ let(:layout) do
34
+ render_arbre_component assigns, helpers do
35
+ insert_tag ActiveAdmin::Views::Pages::Layout
36
+ end
37
+ end
38
+
39
+ it "should be the @page_title if assigned in the controller" do
40
+ assigns[:page_title] = "My Page Title"
41
+
42
+ layout.title.should == "My Page Title"
43
+ end
44
+
45
+ it "should be the default translation" do
46
+ helpers.params[:action] = "edit"
47
+
48
+ layout.title.should == "Edit"
49
+ end
50
+
51
+ describe "the body" do
52
+
53
+ it "should have class 'active_admin'" do
54
+ layout.build.class_list.should include 'active_admin'
55
+ end
56
+
57
+ it "should have namespace class" do
58
+ layout.build.class_list.should include "#{active_admin_namespace.name}_namespace"
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Show do
4
+
5
+ describe "the resource" do
6
+ let(:helpers) { double resource: resource }
7
+ let(:arbre_context) { Arbre::Context.new({}, helpers) }
8
+
9
+ context 'when the resource does not respond to #decorator' do
10
+ let(:resource) { 'Test Resource' }
11
+
12
+ it "normally returns the resource" do
13
+ page = ActiveAdmin::Views::Pages::Show.new(arbre_context)
14
+ page.resource.should == 'Test Resource'
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end