nsm-activeadmin 0.2.2

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 (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +34 -0
  3. data/.travis.yml +4 -0
  4. data/.yardopts +8 -0
  5. data/CHANGELOG.rdoc +76 -0
  6. data/Gemfile +39 -0
  7. data/LICENSE +25 -0
  8. data/README.rdoc +487 -0
  9. data/Rakefile +27 -0
  10. data/activeadmin.gemspec +28 -0
  11. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  16. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  17. data/app/assets/images/active_admin/loading.gif +0 -0
  18. data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
  19. data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
  20. data/app/assets/images/active_admin/orderable.png +0 -0
  21. data/app/assets/javascripts/active_admin/base.js +12 -0
  22. data/app/assets/javascripts/active_admin/vendor.js +382 -0
  23. data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
  24. data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
  25. data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
  26. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  27. data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
  28. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
  29. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  31. data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
  35. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
  36. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
  37. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
  38. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
  39. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
  40. data/app/views/active_admin/dashboard/index.html.arb +1 -0
  41. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  42. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  43. data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
  44. data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
  45. data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
  46. data/app/views/active_admin/devise/shared/_links.erb +20 -0
  47. data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
  48. data/app/views/active_admin/resource/edit.html.arb +1 -0
  49. data/app/views/active_admin/resource/index.csv.erb +20 -0
  50. data/app/views/active_admin/resource/index.html.arb +1 -0
  51. data/app/views/active_admin/resource/new.html.arb +1 -0
  52. data/app/views/active_admin/resource/show.html.arb +1 -0
  53. data/app/views/layouts/active_admin.html.arb +1 -0
  54. data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
  55. data/cucumber.yml +2 -0
  56. data/docs/1-general-configuration.md +52 -0
  57. data/docs/2-resource-customization.md +35 -0
  58. data/docs/3-index-pages.md +55 -0
  59. data/docs/3-index-pages/index-as-block.md +16 -0
  60. data/docs/3-index-pages/index-as-blog.md +61 -0
  61. data/docs/3-index-pages/index-as-grid.md +21 -0
  62. data/docs/3-index-pages/index-as-table.md +74 -0
  63. data/docs/4-csv-format.md +14 -0
  64. data/docs/5-forms.md +39 -0
  65. data/docs/6-show-screens.md +22 -0
  66. data/docs/7-sidebars.md +35 -0
  67. data/docs/8-custom-actions.md +123 -0
  68. data/features/comments/commenting.feature +112 -0
  69. data/features/comments/viewing_index.feature +19 -0
  70. data/features/dashboard.feature +26 -0
  71. data/features/edit_page.feature +106 -0
  72. data/features/first_boot.feature +16 -0
  73. data/features/global_navigation.feature +30 -0
  74. data/features/index/format_as_csv.feature +46 -0
  75. data/features/index/formats.feature +12 -0
  76. data/features/index/index_as_block.feature +15 -0
  77. data/features/index/index_as_blog.feature +50 -0
  78. data/features/index/index_as_grid.feature +45 -0
  79. data/features/index/index_as_table.feature +81 -0
  80. data/features/index/index_blank_slate.feature +55 -0
  81. data/features/index/index_scopes.feature +52 -0
  82. data/features/index/pagination.feature +17 -0
  83. data/features/menu.feature +26 -0
  84. data/features/new_page.feature +75 -0
  85. data/features/registering_assets.feature +35 -0
  86. data/features/registering_resources.feature +33 -0
  87. data/features/show/default_content.feature +43 -0
  88. data/features/show/page_title.feature +33 -0
  89. data/features/sidebar_sections.feature +127 -0
  90. data/features/specifying_actions.feature +87 -0
  91. data/features/step_definitions/action_item_steps.rb +7 -0
  92. data/features/step_definitions/additional_web_steps.rb +77 -0
  93. data/features/step_definitions/asset_steps.rb +7 -0
  94. data/features/step_definitions/attribute_steps.rb +13 -0
  95. data/features/step_definitions/comment_steps.rb +8 -0
  96. data/features/step_definitions/configuration_steps.rb +31 -0
  97. data/features/step_definitions/dashboard_steps.rb +11 -0
  98. data/features/step_definitions/factory_steps.rb +29 -0
  99. data/features/step_definitions/flash_steps.rb +3 -0
  100. data/features/step_definitions/format_steps.rb +35 -0
  101. data/features/step_definitions/index_scope_steps.rb +20 -0
  102. data/features/step_definitions/layout_steps.rb +3 -0
  103. data/features/step_definitions/menu_steps.rb +7 -0
  104. data/features/step_definitions/pagination_steps.rb +8 -0
  105. data/features/step_definitions/sidebar_steps.rb +7 -0
  106. data/features/step_definitions/tab_steps.rb +3 -0
  107. data/features/step_definitions/user_steps.rb +26 -0
  108. data/features/step_definitions/web_steps.rb +211 -0
  109. data/features/sti_resource.feature +61 -0
  110. data/features/support/env.rb +90 -0
  111. data/features/support/paths.rb +50 -0
  112. data/features/support/selectors.rb +45 -0
  113. data/features/users/logging_in.feature +34 -0
  114. data/features/users/logging_out.feature +13 -0
  115. data/lib/active_admin.rb +74 -0
  116. data/lib/active_admin/abstract_view_factory.rb +95 -0
  117. data/lib/active_admin/application.rb +228 -0
  118. data/lib/active_admin/arbre.rb +23 -0
  119. data/lib/active_admin/arbre/attributes.rb +20 -0
  120. data/lib/active_admin/arbre/class_list.rb +28 -0
  121. data/lib/active_admin/arbre/collection.rb +27 -0
  122. data/lib/active_admin/arbre/context.rb +14 -0
  123. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  124. data/lib/active_admin/arbre/document.rb +42 -0
  125. data/lib/active_admin/arbre/element.rb +151 -0
  126. data/lib/active_admin/arbre/html.rb +84 -0
  127. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  128. data/lib/active_admin/arbre/tag.rb +137 -0
  129. data/lib/active_admin/arbre/text_node.rb +35 -0
  130. data/lib/active_admin/asset_registration.rb +34 -0
  131. data/lib/active_admin/callbacks.rb +89 -0
  132. data/lib/active_admin/comments.rb +88 -0
  133. data/lib/active_admin/comments/comment.rb +21 -0
  134. data/lib/active_admin/comments/configuration.rb +18 -0
  135. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  136. data/lib/active_admin/comments/resource_helper.rb +17 -0
  137. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  138. data/lib/active_admin/comments/views.rb +3 -0
  139. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  140. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  141. data/lib/active_admin/component.rb +22 -0
  142. data/lib/active_admin/controller_action.rb +12 -0
  143. data/lib/active_admin/csv_builder.rb +45 -0
  144. data/lib/active_admin/dashboards.rb +48 -0
  145. data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
  146. data/lib/active_admin/dashboards/section.rb +34 -0
  147. data/lib/active_admin/deprecation.rb +36 -0
  148. data/lib/active_admin/devise.rb +43 -0
  149. data/lib/active_admin/dsl.rb +224 -0
  150. data/lib/active_admin/engine.rb +4 -0
  151. data/lib/active_admin/event.rb +31 -0
  152. data/lib/active_admin/form_builder.rb +109 -0
  153. data/lib/active_admin/helpers/optional_display.rb +34 -0
  154. data/lib/active_admin/helpers/settings.rb +63 -0
  155. data/lib/active_admin/iconic.rb +51 -0
  156. data/lib/active_admin/iconic/icons.rb +142 -0
  157. data/lib/active_admin/locales/da.yml +28 -0
  158. data/lib/active_admin/locales/en.yml +40 -0
  159. data/lib/active_admin/locales/es.yml +39 -0
  160. data/lib/active_admin/locales/it.yml +39 -0
  161. data/lib/active_admin/locales/pt-BR.yml +36 -0
  162. data/lib/active_admin/locales/ru.yml +40 -0
  163. data/lib/active_admin/locales/zh_cn.yml +40 -0
  164. data/lib/active_admin/menu.rb +42 -0
  165. data/lib/active_admin/menu_item.rb +73 -0
  166. data/lib/active_admin/namespace.rb +206 -0
  167. data/lib/active_admin/page_config.rb +15 -0
  168. data/lib/active_admin/reloader.rb +30 -0
  169. data/lib/active_admin/renderer.rb +87 -0
  170. data/lib/active_admin/resource.rb +151 -0
  171. data/lib/active_admin/resource/action_items.rb +88 -0
  172. data/lib/active_admin/resource/belongs_to.rb +31 -0
  173. data/lib/active_admin/resource/menu.rb +45 -0
  174. data/lib/active_admin/resource/naming.rb +36 -0
  175. data/lib/active_admin/resource/scopes.rb +33 -0
  176. data/lib/active_admin/resource/sidebars.rb +36 -0
  177. data/lib/active_admin/resource_controller.rb +103 -0
  178. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  179. data/lib/active_admin/resource_controller/actions.rb +79 -0
  180. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  181. data/lib/active_admin/resource_controller/collection.rb +144 -0
  182. data/lib/active_admin/resource_controller/filters.rb +58 -0
  183. data/lib/active_admin/resource_controller/form.rb +42 -0
  184. data/lib/active_admin/resource_controller/menu.rb +29 -0
  185. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  186. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  187. data/lib/active_admin/resource_controller/sidebars.rb +18 -0
  188. data/lib/active_admin/router.rb +85 -0
  189. data/lib/active_admin/sass/active_admin.scss +3 -0
  190. data/lib/active_admin/sass/css_loader.rb +16 -0
  191. data/lib/active_admin/sass/helpers.rb +40 -0
  192. data/lib/active_admin/scope.rb +17 -0
  193. data/lib/active_admin/sidebar_section.rb +41 -0
  194. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  195. data/lib/active_admin/version.rb +3 -0
  196. data/lib/active_admin/view_factory.rb +23 -0
  197. data/lib/active_admin/view_helpers.rb +22 -0
  198. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  199. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  200. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  201. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  202. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  203. data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
  204. data/lib/active_admin/view_helpers/form_helper.rb +13 -0
  205. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  206. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  207. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  208. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  209. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  210. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  211. data/lib/active_admin/views.rb +8 -0
  212. data/lib/active_admin/views/action_items.rb +17 -0
  213. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  214. data/lib/active_admin/views/components/blank_slate.rb +33 -0
  215. data/lib/active_admin/views/components/columns.rb +47 -0
  216. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  217. data/lib/active_admin/views/components/panel.rb +26 -0
  218. data/lib/active_admin/views/components/scopes.rb +70 -0
  219. data/lib/active_admin/views/components/sidebar_section.rb +28 -0
  220. data/lib/active_admin/views/components/status_tag.rb +55 -0
  221. data/lib/active_admin/views/components/table_for.rb +193 -0
  222. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  223. data/lib/active_admin/views/header_renderer.rb +53 -0
  224. data/lib/active_admin/views/index_as_block.rb +29 -0
  225. data/lib/active_admin/views/index_as_blog.rb +129 -0
  226. data/lib/active_admin/views/index_as_grid.rb +70 -0
  227. data/lib/active_admin/views/index_as_table.rb +148 -0
  228. data/lib/active_admin/views/pages/base.rb +155 -0
  229. data/lib/active_admin/views/pages/dashboard.rb +62 -0
  230. data/lib/active_admin/views/pages/edit.rb +28 -0
  231. data/lib/active_admin/views/pages/index.rb +74 -0
  232. data/lib/active_admin/views/pages/layout.rb +26 -0
  233. data/lib/active_admin/views/pages/new.rb +28 -0
  234. data/lib/active_admin/views/pages/show.rb +56 -0
  235. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  236. data/lib/activeadmin.rb +1 -0
  237. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  238. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  239. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  240. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  241. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  242. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  243. data/lib/generators/active_admin/install/install_generator.rb +44 -0
  244. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
  245. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  246. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  247. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  248. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  249. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  250. data/script/local +44 -0
  251. data/script/use_rails +45 -0
  252. data/spec/integration/belongs_to_spec.rb +42 -0
  253. data/spec/integration/default_namespace.rb +77 -0
  254. data/spec/integration/javascript_spec.rb +20 -0
  255. data/spec/integration/stylesheets_spec.rb +41 -0
  256. data/spec/spec_helper.rb +157 -0
  257. data/spec/support/detect_rails_version.rb +11 -0
  258. data/spec/support/integration_example_group.rb +33 -0
  259. data/spec/support/jslint.yml +80 -0
  260. data/spec/support/rails_template.rb +32 -0
  261. data/spec/support/rails_template_with_data.rb +33 -0
  262. data/spec/support/templates/cucumber.rb +24 -0
  263. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  264. data/spec/unit/action_builder_spec.rb +88 -0
  265. data/spec/unit/application_spec.rb +78 -0
  266. data/spec/unit/arbre/html/context_spec.rb +22 -0
  267. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  268. data/spec/unit/arbre/html/element_spec.rb +224 -0
  269. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  270. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  271. data/spec/unit/arbre/html_spec.rb +210 -0
  272. data/spec/unit/asset_registration_spec.rb +37 -0
  273. data/spec/unit/auto_link_spec.rb +39 -0
  274. data/spec/unit/belongs_to_spec.rb +45 -0
  275. data/spec/unit/breadcrumbs_spec.rb +110 -0
  276. data/spec/unit/comments_spec.rb +57 -0
  277. data/spec/unit/component_spec.rb +18 -0
  278. data/spec/unit/controller_filters_spec.rb +34 -0
  279. data/spec/unit/csv_builder_spec.rb +83 -0
  280. data/spec/unit/dashboard_controller_spec.rb +26 -0
  281. data/spec/unit/dashboard_section_spec.rb +56 -0
  282. data/spec/unit/dashboards_spec.rb +59 -0
  283. data/spec/unit/display_name_spec.rb +29 -0
  284. data/spec/unit/event_spec.rb +41 -0
  285. data/spec/unit/filter_form_builder_spec.rb +182 -0
  286. data/spec/unit/form_builder_spec.rb +239 -0
  287. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  288. data/spec/unit/helpers/settings_spec.rb +30 -0
  289. data/spec/unit/menu_item_spec.rb +143 -0
  290. data/spec/unit/menu_spec.rb +53 -0
  291. data/spec/unit/namespace_spec.rb +214 -0
  292. data/spec/unit/pretty_format_spec.rb +35 -0
  293. data/spec/unit/rails_spec.rb +43 -0
  294. data/spec/unit/registration_spec.rb +76 -0
  295. data/spec/unit/reloader_spec.rb +28 -0
  296. data/spec/unit/renderer_spec.rb +108 -0
  297. data/spec/unit/resource/action_items_spec.rb +62 -0
  298. data/spec/unit/resource/menu_spec.rb +80 -0
  299. data/spec/unit/resource/naming_spec.rb +56 -0
  300. data/spec/unit/resource/scopes_spec.rb +30 -0
  301. data/spec/unit/resource/sidebars_spec.rb +50 -0
  302. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  303. data/spec/unit/resource_controller_spec.rb +152 -0
  304. data/spec/unit/resource_spec.rb +260 -0
  305. data/spec/unit/routing_spec.rb +88 -0
  306. data/spec/unit/sass/helpers_spec.rb +47 -0
  307. data/spec/unit/scope_spec.rb +31 -0
  308. data/spec/unit/tabs_renderer_spec.rb +85 -0
  309. data/spec/unit/view_factory_spec.rb +19 -0
  310. data/spec/unit/views/components/attributes_table_spec.rb +100 -0
  311. data/spec/unit/views/components/blank_slate_spec.rb +31 -0
  312. data/spec/unit/views/components/columns_spec.rb +75 -0
  313. data/spec/unit/views/components/panel_spec.rb +31 -0
  314. data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
  315. data/spec/unit/views/components/status_tag_spec.rb +81 -0
  316. data/spec/unit/views/components/table_for_spec.rb +130 -0
  317. data/spec/unit/views/pages/layout_spec.rb +22 -0
  318. data/tasks/docs.rake +39 -0
  319. data/tasks/test.rake +49 -0
  320. data/tasks/yard.rake +6 -0
  321. metadata +510 -0
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe "#pretty_format" do
4
+ include ActiveAdmin::ViewHelpers::DisplayHelper
5
+
6
+ context "when a String is passed in" do
7
+ it "should return the String passed in" do
8
+ pretty_format("hello").should == "hello"
9
+ end
10
+ end
11
+
12
+ context "when a Date or a Time is passed in" do
13
+ it "should return a localized Date or Time with long format" do
14
+ t = Time.now
15
+ self.should_receive(:localize).with(t, {:format => :long}) { "Just Now!" }
16
+ pretty_format(t).should == "Just Now!"
17
+ end
18
+ end
19
+
20
+ context "when an ActiveRecord object is passed in" do
21
+ it "should delegate to auto_link" do
22
+ post = Post.new
23
+ self.should_receive(:auto_link).with(post) { "model name" }
24
+ pretty_format(post).should == "model name"
25
+ end
26
+ end
27
+
28
+ context "when something else is passed in" do
29
+ it "should delegate to display_name" do
30
+ something = Class.new.new
31
+ self.should_receive(:display_name).with(something) { "I'm not famous" }
32
+ pretty_format(something).should == "I'm not famous"
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin do
4
+
5
+ describe "use_asset_pipeline?" do
6
+
7
+ before(:each) do
8
+ @orig_rails_version = Rails::VERSION::MINOR
9
+ end
10
+
11
+ after(:each) do
12
+ silence_warnings { Rails::VERSION::MINOR = @orig_rails_version }
13
+ end
14
+
15
+ it "should be false when using rails 3.0.x" do
16
+ silence_warnings { Rails::VERSION::MINOR = 0 }
17
+ ActiveAdmin.use_asset_pipeline?.should be_false
18
+ end
19
+
20
+ context "when rails 3.1.x" do
21
+ before(:each) do
22
+ @orig_rails_app = Rails.application.dup
23
+ silence_warnings { Rails::VERSION::MINOR = 1 }
24
+ end
25
+
26
+ after(:each) do
27
+ Rails.application = @orig_rails_app
28
+ end
29
+
30
+ it "should be false without asset pipeline enabled" do
31
+ assets = mock(:enabled => false)
32
+ Rails.application.config.stub!(:assets => assets)
33
+ ActiveAdmin.use_asset_pipeline?.should be_false
34
+ end
35
+
36
+ it "should be true with asset pipeline enabled" do
37
+ assets = mock(:enabled => true)
38
+ Rails.application.config.stub!(:assets => assets)
39
+ ActiveAdmin.use_asset_pipeline?.should be_true
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Registering an object to administer" do
4
+ let(:application){ ActiveAdmin::Application.new }
5
+
6
+ context "with no configuration" do
7
+ let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
8
+ it "should call register on the namespace" do
9
+ application.namespaces[namespace.name] = namespace
10
+ namespace.should_receive(:register)
11
+
12
+ application.register Category
13
+ end
14
+
15
+ it "should dispatch a Resource::RegisterEvent" do
16
+ ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
17
+ application.register Category
18
+ end
19
+ end
20
+
21
+ context "with a different namespace" do
22
+ it "should call register on the namespace" do
23
+ namespace = ActiveAdmin::Namespace.new(application, :hello_world)
24
+ application.namespaces[namespace.name] = namespace
25
+ namespace.should_receive(:register)
26
+
27
+ application.register Category, :namespace => :hello_world
28
+ end
29
+ it "should generate a menu item for the dashboard" do
30
+ application.register Category, :namespace => :hello_world
31
+ application.namespaces[:hello_world].load_menu!
32
+ application.namespaces[:hello_world].menu['Dashboard'].instance_variable_get("@url").should == :hello_world_dashboard_path
33
+ end
34
+ it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
35
+ ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
36
+ ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
37
+ application.register Category, :namespace => :not_yet_created
38
+ end
39
+ end
40
+
41
+ context "with no namespace" do
42
+ it "should call register on the root namespace" do
43
+ namespace = ActiveAdmin::Namespace.new(application, :root)
44
+ application.namespaces[namespace.name] = namespace
45
+ namespace.should_receive(:register)
46
+
47
+ application.register Category, :namespace => false
48
+ end
49
+
50
+ it "should generate a menu item for the dashboard" do
51
+ application.register Category, :namespace => false
52
+ application.namespaces[:root].load_menu!
53
+ application.namespaces[:root].menu['Dashboard'].instance_variable_get("@url").should == :dashboard_path
54
+ end
55
+
56
+ end
57
+
58
+ context "when being registered multiple times" do
59
+ it "should run the dsl in the same config object" do
60
+ config_1 = ActiveAdmin.register(Category) { filter :name }
61
+ config_2 = ActiveAdmin.register(Category) { filter :id }
62
+ config_1.should == config_2
63
+ config_1.controller.filters_config.size.should == 2
64
+ end
65
+
66
+ context "with different resource classes" do
67
+ it "should raise an ActiveAdmin::ResourceMismatch" do
68
+ lambda {
69
+ ActiveAdmin.register Category
70
+ ActiveAdmin.register Post, :as => "Category"
71
+ }.should raise_error(ActiveAdmin::ResourceMismatchError)
72
+ end
73
+ end
74
+ end
75
+
76
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ # Ensure we have both constants to play with
4
+ begin
5
+ ActionDispatch::Reloader
6
+ rescue
7
+ module ActionDispatch; module Reloader; end; end
8
+ end
9
+
10
+ begin
11
+ ActionDispatch::Callbacks
12
+ rescue
13
+ module ActionDispatch; module Callbacks; end; end
14
+ end
15
+
16
+
17
+ describe ActiveAdmin::Reloader do
18
+
19
+ it "should use ActionDispatch::Reloader if rails 3.1" do
20
+ reloader = ActiveAdmin::Reloader.new '3.1.0'
21
+ reloader.reloader_class.should == ActionDispatch::Reloader
22
+ end
23
+
24
+ it "should use ActionDispatch::Callbacks if rails 3.0" do
25
+ reloader = ActiveAdmin::Reloader.new '3.0.0'
26
+ reloader.reloader_class.should == ActionDispatch::Callbacks
27
+ end
28
+ end
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+
3
+ include ActiveAdmin
4
+
5
+ describe ActiveAdmin::Renderer do
6
+
7
+ context "when initiailizing from a view" do
8
+ it "should have a view" do
9
+ view = action_view
10
+ renderer = Renderer.new(view)
11
+ renderer.view.should == view
12
+ end
13
+
14
+ it "should assign all local variables from the view" do
15
+ Renderer.new(action_view(:foo => "bar")).send(:instance_variable_get, "@foo").should == "bar"
16
+ end
17
+
18
+ it "should assing an instance variable to the view" do
19
+ view = action_view
20
+ renderer = Renderer.new(view)
21
+ renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
22
+ view.instance_variable_get("@my_ivar").should == 'Hello World'
23
+ end
24
+ end
25
+
26
+ context "when initializing from another renderer" do
27
+ it "should have the view" do
28
+ view = action_view
29
+ renderer = Renderer.new(Renderer.new(view))
30
+ renderer.view.should == view
31
+ end
32
+
33
+ it "should assign local variables from the renderer" do
34
+ view = action_view(:foo => 'bar')
35
+ renderer = Renderer.new(Renderer.new(view))
36
+ renderer.send(:instance_variable_get, "@foo").should == 'bar'
37
+ end
38
+
39
+ it "should assing an instance variable to the view" do
40
+ view = action_view
41
+ renderer = Renderer.new(Renderer.new(view))
42
+ renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
43
+ view.instance_variable_get("@my_ivar").should == 'Hello World'
44
+ end
45
+ end
46
+
47
+ context "when initializing from some other object" do
48
+ it "should initialize successfully" do
49
+ lambda {
50
+ Renderer.new "Hello World"
51
+ }.should_not raise_exception
52
+ end
53
+ end
54
+
55
+ describe "rendering HAML" do
56
+ before do
57
+ @haml_renderer = Class.new(Renderer)
58
+ @haml_renderer.class_eval do
59
+ def hello_world
60
+ "Hello World"
61
+ end
62
+ end
63
+ end
64
+ it "should render haml within the context of the renderer" do
65
+ @haml_renderer.class_eval do
66
+ def to_html
67
+ haml <<-HAML
68
+ %p
69
+ =hello_world
70
+ HAML
71
+ end
72
+ end
73
+ @renderer = @haml_renderer.new(action_view)
74
+ @renderer.to_html.should == "<p>\n Hello World\n</p>\n"
75
+ end
76
+
77
+ it "should allow for indentation at the start of the template" do
78
+ @haml_renderer.class_eval do
79
+ def to_html
80
+ haml <<-HAML
81
+ %p
82
+ =hello_world
83
+ HAML
84
+ end
85
+ end
86
+ @renderer = @haml_renderer.new(action_view)
87
+ @renderer.to_html.should == "<p>\n Hello World\n</p>\n"
88
+ end
89
+ end
90
+
91
+ describe "#call_method_or_proc_on" do
92
+ let(:renderer){ Renderer.new(action_view) }
93
+ let(:obj){ "Hello World" }
94
+ it "should return nil if no symbol or proc given" do
95
+ renderer.send(:call_method_or_proc_on, obj, 1).should == nil
96
+ end
97
+ it "should call the method if a symbol is given" do
98
+ renderer.send(:call_method_or_proc_on, obj, :size).should == obj.size
99
+ end
100
+ it "should call the method if a string is given" do
101
+ renderer.send(:call_method_or_proc_on, obj, "size").should == obj.size
102
+ end
103
+ it "should call the proc with the object if a proc is given" do
104
+ p = Proc.new{|string| string.size }
105
+ renderer.send(:call_method_or_proc_on, obj, p).should == obj.size
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Resource::ActionItems do
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.register(Post)
8
+ end
9
+
10
+ describe "adding a new action item" do
11
+
12
+ before do
13
+ resource.clear_action_items!
14
+ resource.add_action_item do
15
+ # Empty ...
16
+ end
17
+ end
18
+
19
+ it "should add an action item" do
20
+ resource.action_items.size.should == 1
21
+ end
22
+
23
+ it "should store an instance of ActionItem" do
24
+ resource.action_items.first.should be_an_instance_of(ActiveAdmin::ActionItem)
25
+ end
26
+
27
+ it "should store the block in the action item" do
28
+ resource.action_items.first.block.should_not be_nil
29
+ end
30
+
31
+ end
32
+
33
+ describe "setting an action item to only display on specific controller actions" do
34
+
35
+ before do
36
+ resource.clear_action_items!
37
+ resource.add_action_item :only => :index do
38
+ raise StandardError
39
+ end
40
+ resource.add_action_item :only => :show do
41
+ # Empty ...
42
+ end
43
+ end
44
+
45
+ it "should return only relevant action items" do
46
+ resource.action_items_for(:index).size.should == 1
47
+ lambda {
48
+ resource.action_items_for(:index).first.call
49
+ }.should raise_exception(StandardError)
50
+ end
51
+
52
+ end
53
+
54
+ describe "default action items" do
55
+
56
+ it "should have 3 action items" do
57
+ resource.action_items.size.should == 3
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Menu" do
5
+
6
+ before { load_defaults! }
7
+
8
+ let(:application){ ActiveAdmin::Application.new }
9
+ let(:namespace){ Namespace.new(application, :admin) }
10
+
11
+ def config(options = {})
12
+ @config ||= Resource.new(namespace, Category, options)
13
+ end
14
+
15
+ describe "#include_in_menu?" do
16
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
17
+ subject{ resource }
18
+
19
+ context "when regular resource" do
20
+ let(:resource){ namespace.register(Post) }
21
+ it { should be_include_in_menu }
22
+ end
23
+ context "when belongs to" do
24
+ let(:resource){ namespace.register(Post){ belongs_to :author } }
25
+ it { should_not be_include_in_menu }
26
+ end
27
+ context "when belongs to optional" do
28
+ let(:resource){ namespace.register(Post){ belongs_to :author, :optional => true} }
29
+ it { should be_include_in_menu }
30
+ end
31
+ context "when menu set to false" do
32
+ let(:resource){ namespace.register(Post){ menu false } }
33
+ it { should_not be_include_in_menu }
34
+ end
35
+ end
36
+
37
+ describe "menu item name" do
38
+ it "should be the resource name when not set" do
39
+ config.menu_item_name.should == "Categories"
40
+ end
41
+ it "should be settable" do
42
+ config.menu :label => "My Label"
43
+ config.menu_item_name.should == "My Label"
44
+ end
45
+ end
46
+
47
+ describe "parent menu item name" do
48
+ it "should be nil when not set" do
49
+ config.parent_menu_item_name.should == nil
50
+ end
51
+ it "should return the name if set" do
52
+ config.tap do |c|
53
+ c.menu :parent => "Blog"
54
+ end.parent_menu_item_name.should == "Blog"
55
+ end
56
+ end
57
+
58
+ describe "menu item priority" do
59
+ it "should be 10 when not set" do
60
+ config.menu_item_priority.should == 10
61
+ end
62
+ it "should be settable" do
63
+ config.menu :priority => 2
64
+ config.menu_item_priority.should == 2
65
+ end
66
+ end
67
+
68
+ describe "menu item display if" do
69
+ it "should be a proc always returning true if not set" do
70
+ config.menu_item_display_if.should be_instance_of(Proc)
71
+ config.menu_item_display_if.call.should == true
72
+ end
73
+ it "should be settable" do
74
+ config.menu :if => proc { false }
75
+ config.menu_item_display_if.call.should == false
76
+ end
77
+ end
78
+
79
+ end
80
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Naming" do
5
+
6
+ before { load_defaults! }
7
+
8
+ let(:application){ ActiveAdmin::Application.new }
9
+ let(:namespace){ Namespace.new(application, :admin) }
10
+
11
+ def config(options = {})
12
+ @config ||= Resource.new(namespace, Category, options)
13
+ end
14
+
15
+
16
+ describe "underscored resource name" do
17
+ context "when class" do
18
+ it "should be the underscored singular resource name" do
19
+ config.underscored_resource_name.should == "category"
20
+ end
21
+ end
22
+ context "when a class in a module" do
23
+ it "should underscore the module and the class" do
24
+ module ::Mock; class Resource; end; end
25
+ Resource.new(namespace, Mock::Resource).underscored_resource_name.should == "mock_resource"
26
+ end
27
+ end
28
+ context "when you pass the 'as' option" do
29
+ it "should underscore the passed through string and singulralize" do
30
+ config(:as => "Blog Categories").underscored_resource_name.should == "blog_category"
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "camelized resource name" do
36
+ it "should return a camelized version of the underscored resource name" do
37
+ config(:as => "Blog Categories").camelized_resource_name.should == "BlogCategory"
38
+ end
39
+ end
40
+
41
+ describe "resource name" do
42
+ it "should return a pretty name" do
43
+ config.resource_name.should == "Category"
44
+ end
45
+ it "should return the plural version" do
46
+ config.plural_resource_name.should == "Categories"
47
+ end
48
+ context "when the :as option is given" do
49
+ it "should return the custom name" do
50
+ config(:as => "My Category").resource_name.should == "My Category"
51
+ end
52
+ end
53
+ end
54
+
55
+ end
56
+ end