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,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::StatusTag do
4
+
5
+ setup_arbre_context!
6
+
7
+ describe "#status_tag" do
8
+ subject { status_tag(nil) }
9
+
10
+ its(:tag_name) { should == 'span' }
11
+ its(:class_list) { should include('status') }
12
+
13
+ context "when status is 'completed'" do
14
+ subject { status_tag('completed') }
15
+
16
+ its(:tag_name) { should == 'span' }
17
+ its(:class_list) { should include('status') }
18
+ its(:class_list) { should include('completed') }
19
+ its(:content) { should == 'Completed' }
20
+ end
21
+
22
+ context "when status is 'in_progress'" do
23
+ subject { status_tag('in_progress') }
24
+
25
+ its(:class_list) { should include('in_progress') }
26
+ its(:content) { should == 'In Progress' }
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 an empty string" do
37
+ subject { status_tag('') }
38
+
39
+ its(:class_list) { should include('status') }
40
+ its(:content) { should == '' }
41
+ end
42
+
43
+ context "when status is nil" do
44
+ subject { status_tag(nil) }
45
+
46
+ its(:class_list) { should include('status') }
47
+ its(:content) { should == '' }
48
+ end
49
+
50
+ context "when status is 'Active' and type is :ok" do
51
+ subject { status_tag('Active', :ok) }
52
+
53
+ its(:class_list) { should include('status') }
54
+ its(:class_list) { should include('active') }
55
+ its(:class_list) { should include('ok') }
56
+ end
57
+
58
+ context "when status is 'Active' and class is 'ok'" do
59
+ subject { status_tag('Active', :class => 'ok') }
60
+
61
+ its(:class_list) { should include('status') }
62
+ its(:class_list) { should include('active') }
63
+ its(:class_list) { should include('ok') }
64
+ end
65
+
66
+ context "when status is 'So useless', type is :ok, class is 'woot awesome' and id is 'useless'" do
67
+ subject { status_tag('So useless', :ok, :class => 'woot awesome', :id => 'useless') }
68
+
69
+ its(:content) { should == 'So Useless' }
70
+ its(:class_list) { should include('status') }
71
+ its(:class_list) { should include('ok') }
72
+ its(:class_list) { should include('so_useless') }
73
+ its(:class_list) { should include('woot') }
74
+ its(:class_list) { should include('awesome') }
75
+ its(:id) { should == 'useless' }
76
+ end
77
+
78
+ end # describe "#status_tag"
79
+ end
@@ -0,0 +1,131 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::TableFor do
4
+ describe "creating with the dsl" do
5
+
6
+ setup_arbre_context!
7
+
8
+ let(:assigns){ {} }
9
+ let(:helpers){ mock_action_view }
10
+
11
+ let(:collection) do
12
+ [Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
13
+ end
14
+
15
+ context "when creating a column with a symbol" do
16
+ let(:table) do
17
+ table_for(collection) do
18
+ column :title
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
+ table_for(collection) do
40
+ column :title
41
+ column :created_at
42
+ end
43
+ end
44
+
45
+ it "should create a table header based on the symbol" do
46
+ table.find_by_tag("th").first.content.should == "Title"
47
+ table.find_by_tag("th").last.content.should == "Created At"
48
+ end
49
+
50
+ it "should create a table row for each element in the collection" do
51
+ table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
52
+ end
53
+
54
+ it "should create a cell for each column" do
55
+ table.find_by_tag("td").size.should == 6
56
+ end
57
+ end
58
+
59
+ context "when creating a column with block content" do
60
+ let(:table) do
61
+ table_for(collection) do
62
+ column :title do |post|
63
+ span(post.title)
64
+ end
65
+ end
66
+ end
67
+
68
+ [ "<span>First Post</span>",
69
+ "<span>Second Post</span>",
70
+ "<span>Third Post</span>" ].each_with_index do |content, index|
71
+ it "should create a cell with #{content}" do
72
+ table.find_by_tag("td")[index].content.strip.should == content
73
+ end
74
+ end
75
+ end
76
+
77
+ context "when creating a column with multiple block content" do
78
+ let(:table) do
79
+ table_for(collection) do
80
+ column :title do |post|
81
+ span(post.title)
82
+ span(post.title)
83
+ end
84
+ end
85
+ end
86
+
87
+ 3.times do |index|
88
+ it "should create a cell with multiple elements in row #{index}" do
89
+ table.find_by_tag("td")[index].find_by_tag("span").size.should == 2
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe "column sorting" do
96
+
97
+ def build_column(*args, &block)
98
+ ActiveAdmin::Views::TableFor::Column.new(*args, &block)
99
+ end
100
+
101
+ subject { table_column }
102
+
103
+ context "when default" do
104
+ let(:table_column){ build_column(:username) }
105
+ it { should be_sortable }
106
+ its(:sort_key){ should == "username" }
107
+ end
108
+
109
+ context "when a block given with no sort key" do
110
+ let(:table_column){ build_column("Username"){ } }
111
+ it { should_not be_sortable }
112
+ end
113
+
114
+ context "when a block given with a sort key" do
115
+ let(:table_column){ build_column("Username", :sortable => :username){ } }
116
+ it { should be_sortable }
117
+ its(:sort_key){ should == "username" }
118
+ end
119
+
120
+ context "when :sortable => false with a symbol" do
121
+ let(:table_column){ build_column(:username, :sortable => false) }
122
+ it { should_not be_sortable }
123
+ end
124
+
125
+ context "when :sortable => false with a symbol and string" do
126
+ let(:table_column){ build_column("Username", :username, :sortable => false) }
127
+ it { should_not be_sortable }
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::Pages::Layout do
4
+
5
+ describe "the page title" do
6
+
7
+ it "should be the @page_title if assigned in the controller" do
8
+ assigns = {:page_title => "My Page Title"}
9
+ layout = ActiveAdmin::Views::Pages::Layout.new(assigns, nil)
10
+ layout.title.should == "My Page Title"
11
+ end
12
+
13
+ it "should be the default translation" do
14
+ assigns = {}
15
+ helpers = mock(:params => {:action => 'edit'})
16
+ layout = ActiveAdmin::Views::Pages::Layout.new(assigns, helpers)
17
+ layout.title.should == "Edit"
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Views::TabbedNavigation do
4
+
5
+ setup_arbre_context!
6
+ include ActiveAdmin::ViewHelpers
7
+
8
+ let(:menu){ ActiveAdmin::Menu.new }
9
+ let(:tabbed_navigation){ insert_tag(ActiveAdmin::Views::TabbedNavigation, menu) }
10
+ let(:html) { tabbed_navigation.to_s }
11
+
12
+ before do
13
+ helpers.stub!(:admin_logged_in?).and_return(false)
14
+ end
15
+
16
+ describe "rendering a menu" do
17
+
18
+ before do
19
+ menu.add "Blog Posts", "/admin/blog-posts"
20
+ menu.add "Reports", "/admin/reports"
21
+ reports = menu["Reports"]
22
+ reports.add "A Sub Reports", "/admin/a-sub-reports"
23
+ reports.add "B Sub Reports", "/admin/b-sub-reports"
24
+ menu.add "Administration", "/admin/administration"
25
+ administration = menu["Administration"]
26
+ administration.add "User administration", '/admin/user-administration', 10, :if => proc { false }
27
+ menu.add "Management", "#"
28
+ management = menu["Management"]
29
+ management.add "Order management", '/admin/order-management', 10, :if => proc { false }
30
+ management.add "Bill management", '/admin/bill-management', 10, :if => :admin_logged_in?
31
+ end
32
+
33
+ it "should generate a ul" do
34
+ html.should have_tag("ul")
35
+ end
36
+
37
+ it "should generate an li for each item" do
38
+ html.should have_tag("li", :parent => { :tag => "ul" })
39
+ end
40
+
41
+ it "should generate a link for each item" do
42
+ html.should have_tag("a", "Blog Posts", :attributes => { :href => '/admin/blog-posts' })
43
+ end
44
+
45
+ it "should generate a nested list for children" do
46
+ html.should have_tag("ul", :parent => { :tag => "li" })
47
+ end
48
+
49
+ it "should generate a nested list with li for each child" do
50
+ html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "a_sub_reports"})
51
+ html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "b_sub_reports"})
52
+ end
53
+
54
+ it "should not generate a link for user administration" do
55
+ html.should_not have_tag("a", "User administration", :attributes => { :href => '/admin/user-administration' })
56
+ end
57
+
58
+ it "should generate the administration parent menu" do
59
+ html.should have_tag("a", "Administration", :attributes => { :href => '/admin/administration' })
60
+ end
61
+
62
+ it "should not generate a link for order management" do
63
+ html.should_not have_tag("a", "Order management", :attributes => { :href => '/admin/order-management' })
64
+ end
65
+
66
+ it "should not generate a link for bill management" do
67
+ html.should_not have_tag("a", "Bill management", :attributes => { :href => '/admin/bill-management' })
68
+ end
69
+
70
+ it "should not generate the management parent menu" do
71
+ html.should_not have_tag("a", "Management", :attributes => { :href => '#' })
72
+ end
73
+
74
+ describe "marking current item" do
75
+
76
+ it "should add the 'current' class to the li" do
77
+ assigns[:current_tab] = "Blog Posts"
78
+ html.should have_tag("li", :attributes => { :class => "current" })
79
+ end
80
+
81
+ it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
82
+ assigns[:current_tab] = "Reports/A Sub Reports"
83
+ html.should have_tag("li", :attributes => { :id => "reports", :class => "current has_nested" })
84
+ html.should have_tag("li", :attributes => { :id => "a_sub_reports", :class => "current" })
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+
91
+ describe "returning the menu items to display" do
92
+
93
+ it "should be reture one item with no if block" do
94
+ menu.add "Hello World", "/"
95
+ tabbed_navigation.menu_items.should == menu.items
96
+ end
97
+
98
+ it "should not include a menu items with an if block that returns false" do
99
+ menu.add "Don't Show", "/", 10, :if => proc{ false }
100
+ tabbed_navigation.menu_items.should == []
101
+ end
102
+
103
+ it "should not include menu items with an if block that calls a method that returns false" do
104
+ menu.add "Don't Show", "/", 10, :if => :admin_logged_in?
105
+ tabbed_navigation.menu_items.should == []
106
+ end
107
+
108
+ it "should not display any items that have no children to display" do
109
+ menu.add "Parent", "#" do |p|
110
+ p.add "Child", "/", 10, :if => proc{ false }
111
+ end
112
+ tabbed_navigation.menu_items.should == []
113
+ end
114
+
115
+ it "should display a parent that has a child to display" do
116
+ menu.add "Parent", "#" do |p|
117
+ p.add "Hidden Child", "/", 10, :if => proc{ false }
118
+ p.add "Child", "/"
119
+ end
120
+ tabbed_navigation.should have(1).menu_items
121
+ end
122
+
123
+ end
124
+
125
+ end
data/tasks/docs.rake ADDED
@@ -0,0 +1,39 @@
1
+ namespace :docs do
2
+
3
+ def rdoc_to_markdown(content)
4
+ content.gsub(/^ ?(=+) /) do |m|
5
+ m.gsub('=', '#')
6
+ end
7
+ end
8
+
9
+ def prepare_docstring(content)
10
+ content = rdoc_to_markdown(content)
11
+ "<!-- Please don't edit this file. It will be clobbered. -->\n\n#{content}"
12
+ end
13
+
14
+ def filename_from_module(mod)
15
+ mod.name.to_s.underscore.gsub('_', '-')
16
+ end
17
+
18
+ def write_docstrings_to(path, mods)
19
+ mods.each do |mod|
20
+ File.open("#{path}/#{filename_from_module(mod)}.md", 'w+') do |f|
21
+ f << prepare_docstring(mod.docstring)
22
+ end
23
+ end
24
+ end
25
+
26
+ desc "Update docs in the docs folder"
27
+ task :build do
28
+ require 'yard'
29
+ require 'active_support/all'
30
+
31
+ YARD::Registry.load!
32
+ views = YARD::Registry.at("ActiveAdmin::Views")
33
+
34
+ # Index Types
35
+ index_types = views.children.select{|obj| obj.name.to_s =~ /^IndexAs/ }
36
+ write_docstrings_to "docs/3-index-pages", index_types
37
+ end
38
+
39
+ end
data/tasks/test.rake ADDED
@@ -0,0 +1,57 @@
1
+ desc "Creates a test rails app for the specs to run against"
2
+ task :setup do
3
+ require 'rails/version'
4
+ system("mkdir spec/rails") unless File.exists?("spec/rails")
5
+ system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb"
6
+ end
7
+
8
+ namespace :test do
9
+ desc "Run against the important versions of rails"
10
+ task :major_rails_versions do
11
+ current_version = detect_rails_version if File.exists?("Gemfile.lock")
12
+ ["3.0.10", "3.1.0"].each do |version|
13
+ puts
14
+ puts
15
+ puts "== Using Rails #{version}"
16
+ cmd "./script/use_rails #{version}"
17
+ cmd "bundle exec rspec spec/unit"
18
+ cmd "bundle exec rspec spec/integration"
19
+ cmd "bundle exec cucumber features"
20
+ end
21
+ cmd "./script/use_rails #{current_version}" if current_version
22
+ end
23
+
24
+ end
25
+
26
+ # Run specs and cukes
27
+ task :test do
28
+ cmd "bundle exec rspec spec/unit"
29
+ cmd "bundle exec rspec spec/integration"
30
+ cmd "bundle exec cucumber features"
31
+ end
32
+
33
+ namespace :spec do
34
+ desc "Run specs for all versions of rails"
35
+ task :all do
36
+ (0..6).to_a.each do |v|
37
+ puts "Running for Rails 3.0.#{v}"
38
+ cmd "rm Gemfile.lock" if File.exists?("Gemfile.lock")
39
+ cmd "/usr/bin/env RAILS=3.0.#{v} bundle install"
40
+ cmd "/usr/bin/env RAILS=3.0.#{v} rake spec"
41
+ end
42
+ end
43
+ end
44
+
45
+ require 'cucumber/rake/task'
46
+
47
+ namespace :cucumber do
48
+ Cucumber::Rake::Task.new(:all) do |t|
49
+ t.profile = 'default'
50
+ end
51
+
52
+ Cucumber::Rake::Task.new(:wip) do |t|
53
+ t.profile = 'wip'
54
+ end
55
+ end
56
+
57
+ task :cucumber => "cucumber:all"