andrewroth_activeadmin 0.3.4

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 (338) hide show
  1. data/.document +5 -0
  2. data/.gitignore +35 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.md +301 -0
  6. data/Gemfile +40 -0
  7. data/Guardfile +8 -0
  8. data/LICENSE +25 -0
  9. data/README.rdoc +113 -0
  10. data/Rakefile +18 -0
  11. data/activeadmin.gemspec +28 -0
  12. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  17. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  18. data/app/assets/images/active_admin/loading.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  20. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  21. data/app/assets/images/active_admin/orderable.png +0 -0
  22. data/app/assets/javascripts/active_admin/base.js +12 -0
  23. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  24. data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
  25. data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
  26. data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
  27. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  28. data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
  29. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
  30. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
  31. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
  32. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  40. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  41. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  42. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  43. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  44. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  45. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  46. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  47. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  48. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  49. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  50. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  51. data/app/views/active_admin/resource/edit.html.arb +1 -0
  52. data/app/views/active_admin/resource/index.csv.erb +20 -0
  53. data/app/views/active_admin/resource/index.html.arb +1 -0
  54. data/app/views/active_admin/resource/new.html.arb +1 -0
  55. data/app/views/active_admin/resource/show.html.arb +1 -0
  56. data/app/views/layouts/active_admin.html.arb +1 -0
  57. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  58. data/cucumber.yml +2 -0
  59. data/docs/0-installation.md +50 -0
  60. data/docs/1-general-configuration.md +43 -0
  61. data/docs/2-resource-customization.md +114 -0
  62. data/docs/3-index-pages.md +55 -0
  63. data/docs/3-index-pages/index-as-block.md +16 -0
  64. data/docs/3-index-pages/index-as-blog.md +61 -0
  65. data/docs/3-index-pages/index-as-grid.md +21 -0
  66. data/docs/3-index-pages/index-as-table.md +90 -0
  67. data/docs/4-csv-format.md +14 -0
  68. data/docs/5-forms.md +39 -0
  69. data/docs/6-show-screens.md +36 -0
  70. data/docs/7-sidebars.md +35 -0
  71. data/docs/8-custom-actions.md +123 -0
  72. data/features/comments/commenting.feature +112 -0
  73. data/features/comments/viewing_index.feature +19 -0
  74. data/features/dashboard.feature +26 -0
  75. data/features/edit_page.feature +106 -0
  76. data/features/first_boot.feature +16 -0
  77. data/features/global_navigation.feature +30 -0
  78. data/features/index/filters.feature +35 -0
  79. data/features/index/format_as_csv.feature +46 -0
  80. data/features/index/formats.feature +12 -0
  81. data/features/index/index_as_block.feature +15 -0
  82. data/features/index/index_as_blog.feature +50 -0
  83. data/features/index/index_as_grid.feature +45 -0
  84. data/features/index/index_as_table.feature +81 -0
  85. data/features/index/index_blank_slate.feature +56 -0
  86. data/features/index/index_scopes.feature +52 -0
  87. data/features/index/pagination.feature +17 -0
  88. data/features/menu.feature +37 -0
  89. data/features/new_page.feature +75 -0
  90. data/features/registering_assets.feature +35 -0
  91. data/features/registering_resources.feature +33 -0
  92. data/features/show/default_content.feature +43 -0
  93. data/features/show/page_title.feature +33 -0
  94. data/features/sidebar_sections.feature +127 -0
  95. data/features/specifying_actions.feature +87 -0
  96. data/features/step_definitions/action_item_steps.rb +7 -0
  97. data/features/step_definitions/additional_web_steps.rb +77 -0
  98. data/features/step_definitions/asset_steps.rb +7 -0
  99. data/features/step_definitions/attribute_steps.rb +13 -0
  100. data/features/step_definitions/comment_steps.rb +8 -0
  101. data/features/step_definitions/configuration_steps.rb +31 -0
  102. data/features/step_definitions/dashboard_steps.rb +11 -0
  103. data/features/step_definitions/factory_steps.rb +29 -0
  104. data/features/step_definitions/flash_steps.rb +3 -0
  105. data/features/step_definitions/format_steps.rb +35 -0
  106. data/features/step_definitions/index_scope_steps.rb +20 -0
  107. data/features/step_definitions/layout_steps.rb +3 -0
  108. data/features/step_definitions/menu_steps.rb +7 -0
  109. data/features/step_definitions/pagination_steps.rb +8 -0
  110. data/features/step_definitions/sidebar_steps.rb +7 -0
  111. data/features/step_definitions/tab_steps.rb +3 -0
  112. data/features/step_definitions/user_steps.rb +26 -0
  113. data/features/step_definitions/web_steps.rb +211 -0
  114. data/features/sti_resource.feature +61 -0
  115. data/features/support/env.rb +96 -0
  116. data/features/support/paths.rb +50 -0
  117. data/features/support/selectors.rb +45 -0
  118. data/features/users/logging_in.feature +34 -0
  119. data/features/users/logging_out.feature +13 -0
  120. data/lib/active_admin.rb +82 -0
  121. data/lib/active_admin/abstract_view_factory.rb +95 -0
  122. data/lib/active_admin/application.rb +231 -0
  123. data/lib/active_admin/arbre.rb +23 -0
  124. data/lib/active_admin/arbre/builder.rb +111 -0
  125. data/lib/active_admin/arbre/context.rb +45 -0
  126. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  127. data/lib/active_admin/arbre/html/attributes.rb +20 -0
  128. data/lib/active_admin/arbre/html/class_list.rb +28 -0
  129. data/lib/active_admin/arbre/html/collection.rb +27 -0
  130. data/lib/active_admin/arbre/html/document.rb +42 -0
  131. data/lib/active_admin/arbre/html/element.rb +151 -0
  132. data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
  133. data/lib/active_admin/arbre/html/tag.rb +137 -0
  134. data/lib/active_admin/arbre/html/text_node.rb +35 -0
  135. data/lib/active_admin/asset_registration.rb +34 -0
  136. data/lib/active_admin/callbacks.rb +89 -0
  137. data/lib/active_admin/comments.rb +88 -0
  138. data/lib/active_admin/comments/comment.rb +21 -0
  139. data/lib/active_admin/comments/configuration.rb +18 -0
  140. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  141. data/lib/active_admin/comments/resource_helper.rb +17 -0
  142. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  143. data/lib/active_admin/comments/views.rb +3 -0
  144. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  145. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  146. data/lib/active_admin/component.rb +22 -0
  147. data/lib/active_admin/controller_action.rb +12 -0
  148. data/lib/active_admin/csv_builder.rb +45 -0
  149. data/lib/active_admin/dashboards.rb +48 -0
  150. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  151. data/lib/active_admin/dashboards/section.rb +34 -0
  152. data/lib/active_admin/dependency_checker.rb +30 -0
  153. data/lib/active_admin/deprecation.rb +36 -0
  154. data/lib/active_admin/devise.rb +54 -0
  155. data/lib/active_admin/dsl.rb +224 -0
  156. data/lib/active_admin/engine.rb +4 -0
  157. data/lib/active_admin/event.rb +31 -0
  158. data/lib/active_admin/form_builder.rb +118 -0
  159. data/lib/active_admin/helpers/optional_display.rb +34 -0
  160. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  161. data/lib/active_admin/helpers/settings.rb +70 -0
  162. data/lib/active_admin/iconic.rb +51 -0
  163. data/lib/active_admin/iconic/icons.rb +142 -0
  164. data/lib/active_admin/locales/bg.yml +40 -0
  165. data/lib/active_admin/locales/cs.yml +34 -0
  166. data/lib/active_admin/locales/da.yml +28 -0
  167. data/lib/active_admin/locales/en.yml +40 -0
  168. data/lib/active_admin/locales/es.yml +40 -0
  169. data/lib/active_admin/locales/fr.yml +40 -0
  170. data/lib/active_admin/locales/it.yml +40 -0
  171. data/lib/active_admin/locales/ja.yml +40 -0
  172. data/lib/active_admin/locales/pl.yml +34 -0
  173. data/lib/active_admin/locales/pt-BR.yml +41 -0
  174. data/lib/active_admin/locales/ru.yml +40 -0
  175. data/lib/active_admin/locales/sv-SE.yml +40 -0
  176. data/lib/active_admin/locales/zh_cn.yml +40 -0
  177. data/lib/active_admin/menu.rb +42 -0
  178. data/lib/active_admin/menu_item.rb +73 -0
  179. data/lib/active_admin/namespace.rb +206 -0
  180. data/lib/active_admin/page_config.rb +15 -0
  181. data/lib/active_admin/reloader.rb +64 -0
  182. data/lib/active_admin/renderer.rb +87 -0
  183. data/lib/active_admin/resource.rb +159 -0
  184. data/lib/active_admin/resource/action_items.rb +88 -0
  185. data/lib/active_admin/resource/belongs_to.rb +31 -0
  186. data/lib/active_admin/resource/menu.rb +45 -0
  187. data/lib/active_admin/resource/naming.rb +50 -0
  188. data/lib/active_admin/resource/scopes.rb +33 -0
  189. data/lib/active_admin/resource/sidebars.rb +36 -0
  190. data/lib/active_admin/resource_controller.rb +105 -0
  191. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  192. data/lib/active_admin/resource_controller/actions.rb +79 -0
  193. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  194. data/lib/active_admin/resource_controller/collection.rb +138 -0
  195. data/lib/active_admin/resource_controller/filters.rb +58 -0
  196. data/lib/active_admin/resource_controller/form.rb +42 -0
  197. data/lib/active_admin/resource_controller/menu.rb +29 -0
  198. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  199. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  200. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  201. data/lib/active_admin/router.rb +85 -0
  202. data/lib/active_admin/sass/active_admin.scss +3 -0
  203. data/lib/active_admin/sass/css_loader.rb +16 -0
  204. data/lib/active_admin/sass/helpers.rb +45 -0
  205. data/lib/active_admin/scope.rb +31 -0
  206. data/lib/active_admin/sidebar_section.rb +41 -0
  207. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  208. data/lib/active_admin/version.rb +3 -0
  209. data/lib/active_admin/view_factory.rb +23 -0
  210. data/lib/active_admin/view_helpers.rb +22 -0
  211. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  212. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  213. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  214. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  215. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  216. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  217. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  218. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  219. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  220. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  221. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  222. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  223. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  224. data/lib/active_admin/views.rb +8 -0
  225. data/lib/active_admin/views/action_items.rb +17 -0
  226. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  227. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  228. data/lib/active_admin/views/components/columns.rb +47 -0
  229. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  230. data/lib/active_admin/views/components/panel.rb +26 -0
  231. data/lib/active_admin/views/components/scopes.rb +69 -0
  232. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  233. data/lib/active_admin/views/components/status_tag.rb +55 -0
  234. data/lib/active_admin/views/components/table_for.rb +193 -0
  235. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  236. data/lib/active_admin/views/header_renderer.rb +57 -0
  237. data/lib/active_admin/views/index_as_block.rb +29 -0
  238. data/lib/active_admin/views/index_as_blog.rb +129 -0
  239. data/lib/active_admin/views/index_as_grid.rb +70 -0
  240. data/lib/active_admin/views/index_as_table.rb +164 -0
  241. data/lib/active_admin/views/pages/base.rb +167 -0
  242. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  243. data/lib/active_admin/views/pages/edit.rb +28 -0
  244. data/lib/active_admin/views/pages/index.rb +91 -0
  245. data/lib/active_admin/views/pages/layout.rb +26 -0
  246. data/lib/active_admin/views/pages/new.rb +28 -0
  247. data/lib/active_admin/views/pages/show.rb +56 -0
  248. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  249. data/lib/activeadmin.rb +1 -0
  250. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  251. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  252. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  253. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  254. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  255. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  256. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  257. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
  258. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  259. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  260. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  261. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  262. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  263. data/script/local +44 -0
  264. data/script/use_rails +46 -0
  265. data/spec/integration/belongs_to_spec.rb +42 -0
  266. data/spec/integration/default_namespace.rb +77 -0
  267. data/spec/integration/javascript_spec.rb +20 -0
  268. data/spec/integration/memory_spec.rb +38 -0
  269. data/spec/integration/stylesheets_spec.rb +41 -0
  270. data/spec/spec_helper.rb +167 -0
  271. data/spec/support/detect_rails_version.rb +10 -0
  272. data/spec/support/integration_example_group.rb +33 -0
  273. data/spec/support/jslint.yml +80 -0
  274. data/spec/support/rails_template.rb +32 -0
  275. data/spec/support/rails_template_with_data.rb +33 -0
  276. data/spec/support/templates/cucumber.rb +24 -0
  277. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  278. data/spec/unit/action_builder_spec.rb +88 -0
  279. data/spec/unit/active_admin_spec.rb +17 -0
  280. data/spec/unit/application_spec.rb +87 -0
  281. data/spec/unit/arbre/context_spec.rb +35 -0
  282. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  283. data/spec/unit/arbre/html/element_spec.rb +223 -0
  284. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  285. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  286. data/spec/unit/arbre/html_spec.rb +209 -0
  287. data/spec/unit/asset_registration_spec.rb +37 -0
  288. data/spec/unit/auto_link_spec.rb +39 -0
  289. data/spec/unit/belongs_to_spec.rb +45 -0
  290. data/spec/unit/breadcrumbs_spec.rb +110 -0
  291. data/spec/unit/comments_spec.rb +57 -0
  292. data/spec/unit/component_spec.rb +18 -0
  293. data/spec/unit/controller_filters_spec.rb +34 -0
  294. data/spec/unit/csv_builder_spec.rb +83 -0
  295. data/spec/unit/dashboard_controller_spec.rb +26 -0
  296. data/spec/unit/dashboard_section_spec.rb +56 -0
  297. data/spec/unit/dashboards_spec.rb +59 -0
  298. data/spec/unit/devise_spec.rb +66 -0
  299. data/spec/unit/display_name_spec.rb +29 -0
  300. data/spec/unit/event_spec.rb +41 -0
  301. data/spec/unit/filter_form_builder_spec.rb +182 -0
  302. data/spec/unit/form_builder_spec.rb +256 -0
  303. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  304. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  305. data/spec/unit/helpers/settings_spec.rb +30 -0
  306. data/spec/unit/menu_item_spec.rb +143 -0
  307. data/spec/unit/menu_spec.rb +53 -0
  308. data/spec/unit/namespace_spec.rb +214 -0
  309. data/spec/unit/pretty_format_spec.rb +35 -0
  310. data/spec/unit/rails_spec.rb +43 -0
  311. data/spec/unit/registration_spec.rb +76 -0
  312. data/spec/unit/reloader_spec.rb +80 -0
  313. data/spec/unit/renderer_spec.rb +108 -0
  314. data/spec/unit/resource/action_items_spec.rb +62 -0
  315. data/spec/unit/resource/menu_spec.rb +80 -0
  316. data/spec/unit/resource/naming_spec.rb +75 -0
  317. data/spec/unit/resource/scopes_spec.rb +30 -0
  318. data/spec/unit/resource/sidebars_spec.rb +50 -0
  319. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  320. data/spec/unit/resource_controller_spec.rb +152 -0
  321. data/spec/unit/resource_spec.rb +269 -0
  322. data/spec/unit/routing_spec.rb +88 -0
  323. data/spec/unit/sass/helpers_spec.rb +47 -0
  324. data/spec/unit/scope_spec.rb +41 -0
  325. data/spec/unit/view_factory_spec.rb +19 -0
  326. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  327. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  328. data/spec/unit/views/components/columns_spec.rb +75 -0
  329. data/spec/unit/views/components/panel_spec.rb +29 -0
  330. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  331. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  332. data/spec/unit/views/components/table_for_spec.rb +131 -0
  333. data/spec/unit/views/pages/layout_spec.rb +22 -0
  334. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  335. data/tasks/docs.rake +39 -0
  336. data/tasks/test.rake +57 -0
  337. data/tasks/yard.rake +6 -0
  338. metadata +646 -0
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin, "Routing" do
4
+
5
+ before :each do
6
+ load_defaults!
7
+ reload_routes!
8
+ end
9
+
10
+ include Rails.application.routes.url_helpers
11
+
12
+ describe "dashboard" do
13
+ context "when in admin namespace" do
14
+ it "should route the admin dashboard" do
15
+ admin_dashboard_path.should == "/admin"
16
+ end
17
+ end
18
+ context "when in root namespace" do
19
+ before(:each) do
20
+ load_resources { ActiveAdmin.register(Post, :namespace => false) }
21
+ end
22
+ it "should route the root dashboard" do
23
+ dashboard_path.should == "/"
24
+ end
25
+ end
26
+ end
27
+
28
+ describe "standard resources" do
29
+ context "when in admin namespace" do
30
+ it "should route the index path" do
31
+ admin_posts_path.should == "/admin/posts"
32
+ end
33
+
34
+ it "should route the show path" do
35
+ admin_post_path(1).should == "/admin/posts/1"
36
+ end
37
+
38
+ it "should route the new path" do
39
+ new_admin_post_path.should == "/admin/posts/new"
40
+ end
41
+
42
+ it "should route the edit path" do
43
+ edit_admin_post_path(1).should == "/admin/posts/1/edit"
44
+ end
45
+ end
46
+
47
+ context "when in root namespace" do
48
+ before(:each) do
49
+ load_resources { ActiveAdmin.register(Post, :namespace => false) }
50
+ end
51
+
52
+ it "should route the index path" do
53
+ posts_path.should == "/posts"
54
+ end
55
+
56
+ it "should route the show path" do
57
+ post_path(1).should == "/posts/1"
58
+ end
59
+
60
+ it "should route the new path" do
61
+ new_post_path.should == "/posts/new"
62
+ end
63
+
64
+ it "should route the edit path" do
65
+ edit_post_path(1).should == "/posts/1/edit"
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "belongs to resource" do
71
+ it "should route the nested index path" do
72
+ admin_user_posts_path(1).should == "/admin/users/1/posts"
73
+ end
74
+
75
+ it "should route the nested show path" do
76
+ admin_user_post_path(1,2).should == "/admin/users/1/posts/2"
77
+ end
78
+
79
+ it "should route the nested new path" do
80
+ new_admin_user_post_path(1).should == "/admin/users/1/posts/new"
81
+ end
82
+
83
+ it "should route the nested edit path" do
84
+ edit_admin_user_post_path(1,2).should == "/admin/users/1/posts/2/edit"
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Sass::Helpers do
4
+
5
+ include ActiveAdmin::Sass::Helpers
6
+
7
+ context "when not using the asset pipeline" do
8
+
9
+ before(:all)do
10
+ @actual_rails_version = Rails::VERSION::MINOR
11
+ silence_warnings { Rails::VERSION::MINOR = 0 }
12
+ end
13
+
14
+ after(:all) do
15
+ silence_warnings { Rails::VERSION::MINOR = @actual_rails_version }
16
+ end
17
+
18
+ it "should generate an image asset path to /images/active_admin" do
19
+ active_admin_image_path(Sass::Script::String.new('test.jpg')).should ==
20
+ Sass::Script::String.new("/images/active_admin/test.jpg", true)
21
+ end
22
+
23
+ end
24
+
25
+ context "when using the asset pipeline" do
26
+ before(:all)do
27
+ @actual_rails_version = Rails::VERSION::MINOR
28
+ silence_warnings { Rails::VERSION::MINOR = 1 }
29
+ end
30
+
31
+ after(:all) do
32
+ silence_warnings { Rails::VERSION::MINOR = @actual_rails_version }
33
+ end
34
+
35
+ before do
36
+ assets = mock(:enabled => true)
37
+ Rails.application.config.stub!(:assets => assets)
38
+ end
39
+
40
+ it "should call the sass-rails asset helper" do
41
+ self.should_receive(:asset_path).with(Sass::Script::String.new("active_admin/test.jpg"), Sass::Script::String.new('image'))
42
+ active_admin_image_path(::Sass::Script::String.new('test.jpg'))
43
+ end
44
+
45
+ end
46
+
47
+ end
@@ -0,0 +1,41 @@
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" do
26
+ let(:scope) { ActiveAdmin::Scope.new "My Scope", :scope_method }
27
+ its(:name) { should == "My Scope"}
28
+ its(:id) { should == "my_scope"}
29
+ its(:scope_method) { should == :scope_method }
30
+ end
31
+
32
+ context "when a name and scope block" do
33
+ let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
34
+ its(:name) { should == "My Scope"}
35
+ its(:id) { should == "my_scope"}
36
+ its(:scope_method) { should == nil }
37
+ its(:scope_block) { should be_a(Proc)}
38
+ end
39
+ end # describe "creating a scope"
40
+
41
+ end
@@ -0,0 +1,19 @@
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 :action_items, ActiveAdmin::Views::ActionItems
13
+ it_should_have_view :header, ActiveAdmin::Views::HeaderRenderer
14
+ it_should_have_view :blank_slate, ActiveAdmin::Views::BlankSlate
15
+
16
+ it_should_have_view :dashboard_page, ActiveAdmin::Views::Pages::Dashboard
17
+ it_should_have_view :layout, ActiveAdmin::Views::Pages::Layout
18
+
19
+ end
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::AttributesTable do
4
+
5
+ setup_arbre_context!
6
+
7
+ describe "creating with the dsl" do
8
+ let(:helpers) { action_view }
9
+
10
+ let(:post) do
11
+ post = Post.new :title => "Hello World", :body => nil
12
+ post.stub!(:id){ 1 }
13
+ post.stub!(:new_record?){ false }
14
+ post
15
+ end
16
+
17
+
18
+ # Loop through a few different ways to make the same table
19
+ # and ensure that they produce the same results
20
+ {
21
+ "when attributes are passed in to the builder methods" => proc {
22
+ attributes_table_for post, :id, :title, :body
23
+ },
24
+ "when attributes are built using the block" => proc {
25
+ attributes_table_for post do
26
+ rows :id, :title, :body
27
+ end
28
+ },
29
+ "when each attribute is passed in by itself" => proc {
30
+ attributes_table_for post do
31
+ row :id
32
+ row :title
33
+ row :body
34
+ end
35
+ },
36
+ "when you create each row with a custom block" => proc {
37
+ attributes_table_for post do
38
+ row("Id") { post.id }
39
+ row("Title"){ post.title }
40
+ row("Body") { post.body }
41
+ end
42
+ }
43
+
44
+ }.each do |context_title, table_decleration|
45
+ context context_title do
46
+ let(:table) { instance_eval &table_decleration }
47
+
48
+ it "should render a div wrapper with the class '.attributes_table'" do
49
+ table.tag_name.should == 'div'
50
+ table.attr(:class).should include('attributes_table')
51
+ end
52
+ it "should add id and type class" do
53
+ table.class_names.should include("post")
54
+ table.id.should == "attributes_table_post_1"
55
+ end
56
+
57
+ it "should render 3 rows" do
58
+ table.find_by_tag("tr").size.should == 3
59
+ end
60
+
61
+ describe "rendering the rows" do
62
+ [
63
+ ["Id" , "2"],
64
+ ["Title" , "Hello World"],
65
+ ["Body" , "<span class=\"empty\">Empty</span>"]
66
+ ].each_with_index do |set, i|
67
+ let(:title){ set[0] }
68
+ let(:content){ set[1] }
69
+ let(:current_row){ table.find_by_tag("tr")[i] }
70
+
71
+ describe "for #{set[0]}" do
72
+ it "should have the title '#{set[0]}'" do
73
+ current_row.find_by_tag("th").first.content.should == title
74
+ end
75
+ it "should have the content '#{set[1]}'" do
76
+ current_row.find_by_tag("td").first.content.chomp.strip.should == content
77
+ end
78
+ end
79
+ end
80
+ end # describe rendering rows
81
+
82
+ end
83
+ end # describe dsl styles
84
+
85
+ it "should allow html content inside the attributes table" do
86
+ table = attributes_table_for(post) do
87
+ row("ID"){ span(post.id, :class => 'id') }
88
+ end
89
+ table.find_by_tag("td").first.content.chomp.strip.should == "<span class=\"id\">1</span>"
90
+ end
91
+
92
+ it "should check if an association exists when an attribute has id in it" do
93
+ post.author = User.new(:username => "john_doe")
94
+ table = attributes_table_for post, :author_id
95
+ table.find_by_tag("td").first.content.should == "john_doe"
96
+ end
97
+
98
+ end
99
+
100
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::BlankSlate do
4
+
5
+ setup_arbre_context!
6
+
7
+ describe "#blank_slate" do
8
+ subject { blank_slate("There are no Posts yet. <a href=\"/posts/new\">Create one</a></span>") }
9
+
10
+ its(:tag_name) { should eql 'div' }
11
+ its(:class_list) { should include('blank_slate_container') }
12
+
13
+ its(:content) { should include '<span class="blank_slate">There are no Posts yet. <a href="/posts/new">Create one</a></span>' }
14
+ end
15
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Columns do
4
+
5
+ setup_arbre_context!
6
+
7
+ describe "Rendering one column" do
8
+ let(:cols) do
9
+ columns do
10
+ column { span "Hello World" }
11
+ end
12
+ end
13
+
14
+ it "should have the class .columns" do
15
+ cols.class_list.should include("columns")
16
+ end
17
+
18
+ it "should have one column" do
19
+ cols.children.size.should == 1
20
+ cols.children.first.class_list.should include("column")
21
+ end
22
+
23
+ it "should have one column with the width 100%" do
24
+ cols.children.first.attr(:style).should include("width: 100%")
25
+ end
26
+ end
27
+
28
+ describe "Rendering two columns" do
29
+ let(:cols) do
30
+ columns do
31
+ column { span "Hello World" }
32
+ column { span "Hello World" }
33
+ end
34
+ end
35
+
36
+ it "should have two columns" do
37
+ cols.children.size.should == 2
38
+ end
39
+
40
+ it "should have a first column with width 49% and margin 2%" do
41
+ cols.children.first.attr(:style).should == "width: 49%; margin-right: 2%;"
42
+ end
43
+
44
+ it "should have a second column with width 49% and no right margin" do
45
+ cols.children.last.attr(:style).should == "width: 49%;"
46
+ end
47
+ end
48
+
49
+ describe "Rendering four columns" do
50
+ let(:cols) do
51
+ columns do
52
+ column { span "Hello World" }
53
+ column { span "Hello World" }
54
+ column { span "Hello World" }
55
+ column { span "Hello World" }
56
+ end
57
+ end
58
+
59
+ it "should have four columns" do
60
+ cols.children.size.should == 4
61
+ end
62
+
63
+
64
+ (0..2).to_a.each do |index|
65
+ it "should have column #{index + 1} with width 49% and margin 2%" do
66
+ cols.children[index].attr(:style).should == "width: 23.5%; margin-right: 2%;"
67
+ end
68
+ end
69
+
70
+ it "should have column 4 with width 49% and no margin" do
71
+ cols.children[3].attr(:style).should == "width: 23.5%;"
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Panel do
4
+
5
+ setup_arbre_context!
6
+
7
+ let(:the_panel) do
8
+ panel "My Title" do
9
+ span("Hello World")
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
+ panel("Title", :icon => :arrow_down).find_by_tag("h3").first.content.should include("span class=\"icon")
27
+ end
28
+
29
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::SidebarSection do
4
+
5
+ setup_arbre_context!
6
+
7
+ let(:section) do
8
+ ActiveAdmin::SidebarSection.new(:help) do
9
+ span "Help Me"
10
+ end
11
+ end
12
+
13
+ let(:html) do
14
+ sidebar_section(section)
15
+ end
16
+
17
+ it "should have a title h3" do
18
+ html.find_by_tag("h3").first.content.should == "Help"
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_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