activeadmin 0.4.4 → 0.5.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (310) hide show
  1. data/.gitignore +3 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +50 -0
  4. data/CONTRIBUTING.md +2 -4
  5. data/Gemfile +10 -4
  6. data/Guardfile +0 -1
  7. data/LICENSE +1 -1
  8. data/README.rdoc +19 -8
  9. data/Rakefile +10 -1
  10. data/activeadmin.gemspec +2 -1
  11. data/app/assets/javascripts/active_admin/application.js +3 -9
  12. data/app/assets/javascripts/active_admin/base.js +1 -0
  13. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
  14. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
  15. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
  16. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
  17. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
  18. data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
  19. data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
  20. data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
  21. data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
  22. data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
  23. data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
  24. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
  25. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
  26. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
  27. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
  28. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
  31. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
  32. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
  33. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
  34. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
  35. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
  36. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
  37. data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
  38. data/app/views/active_admin/dashboard/index.html.arb +1 -1
  39. data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
  40. data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
  42. data/app/views/active_admin/devise/shared/_links.erb +6 -6
  43. data/app/views/active_admin/page/index.html.arb +1 -1
  44. data/app/views/active_admin/resource/edit.html.arb +1 -1
  45. data/app/views/active_admin/resource/index.csv.erb +1 -1
  46. data/app/views/active_admin/resource/index.html.arb +1 -1
  47. data/app/views/active_admin/resource/new.html.arb +1 -1
  48. data/app/views/active_admin/resource/show.html.arb +1 -1
  49. data/app/views/layouts/active_admin.html.arb +1 -1
  50. data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
  51. data/cucumber.yml +1 -1
  52. data/docs/0-installation.md +10 -1
  53. data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
  54. data/docs/2-resource-customization.md +19 -1
  55. data/docs/3-index-pages.md +31 -0
  56. data/docs/4-csv-format.md +9 -0
  57. data/docs/6-show-screens.md +1 -1
  58. data/docs/9-batch-actions.md +161 -0
  59. data/features/dashboard.feature +31 -8
  60. data/features/development_reloading.feature +1 -1
  61. data/features/edit_page.feature +3 -3
  62. data/features/i18n.feature +35 -0
  63. data/features/index/batch_actions.feature +98 -0
  64. data/features/index/filters.feature +26 -0
  65. data/features/index/format_as_csv.feature +35 -0
  66. data/features/index/index_as_table.feature +30 -2
  67. data/features/index/index_blank_slate.feature +8 -3
  68. data/features/index/index_scopes.feature +130 -24
  69. data/features/index/page_title.feature +12 -0
  70. data/features/new_page.feature +3 -3
  71. data/features/registering_pages.feature +61 -0
  72. data/features/root_to.feature +17 -0
  73. data/features/show/default_content.feature +1 -1
  74. data/features/show/page_title.feature +14 -0
  75. data/features/sidebar_sections.feature +26 -0
  76. data/features/site_title.feature +1 -1
  77. data/features/specifying_actions.feature +7 -6
  78. data/features/step_definitions/action_link_steps.rb +1 -1
  79. data/features/step_definitions/additional_web_steps.rb +7 -1
  80. data/features/step_definitions/batch_action_steps.rb +94 -0
  81. data/features/step_definitions/configuration_steps.rb +30 -8
  82. data/features/step_definitions/factory_steps.rb +12 -0
  83. data/features/step_definitions/format_steps.rb +6 -2
  84. data/features/step_definitions/i18n_steps.rb +3 -0
  85. data/features/step_definitions/table_steps.rb +114 -0
  86. data/features/step_definitions/user_steps.rb +30 -4
  87. data/features/support/env.rb +54 -15
  88. data/features/support/paths.rb +2 -0
  89. data/features/users/logging_in.feature +1 -1
  90. data/features/users/logging_out.feature +2 -1
  91. data/features/users/resetting_password.feature +34 -0
  92. data/lib/active_admin.rb +46 -7
  93. data/lib/active_admin/application.rb +30 -15
  94. data/lib/active_admin/base_controller/menu.rb +3 -3
  95. data/lib/active_admin/batch_actions.rb +17 -0
  96. data/lib/active_admin/batch_actions/controller.rb +25 -0
  97. data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
  98. data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
  99. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
  100. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
  101. data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
  102. data/lib/active_admin/comments.rb +5 -2
  103. data/lib/active_admin/comments/comment.rb +4 -3
  104. data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
  105. data/lib/active_admin/component.rb +1 -18
  106. data/lib/active_admin/csv_builder.rb +8 -3
  107. data/lib/active_admin/dashboards.rb +21 -4
  108. data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
  109. data/lib/active_admin/dependency_checker.rb +1 -1
  110. data/lib/active_admin/dsl.rb +61 -4
  111. data/lib/active_admin/engine.rb +1 -1
  112. data/lib/active_admin/filters.rb +8 -0
  113. data/lib/active_admin/filters/dsl.rb +12 -0
  114. data/lib/active_admin/filters/forms.rb +93 -0
  115. data/lib/active_admin/filters/resource_extension.rb +92 -0
  116. data/lib/active_admin/form_builder.rb +88 -33
  117. data/lib/active_admin/helpers/collection.rb +23 -0
  118. data/lib/active_admin/helpers/optional_display.rb +1 -1
  119. data/lib/active_admin/inputs/filter_select_input.rb +1 -1
  120. data/lib/active_admin/locales/bg.yml +37 -1
  121. data/lib/active_admin/locales/ca.yml +36 -0
  122. data/lib/active_admin/locales/cs.yml +36 -0
  123. data/lib/active_admin/locales/da.yml +36 -0
  124. data/lib/active_admin/locales/de.yml +42 -0
  125. data/lib/active_admin/locales/en.yml +27 -2
  126. data/lib/active_admin/locales/es.yml +45 -4
  127. data/lib/active_admin/locales/fr.yml +22 -0
  128. data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
  129. data/lib/active_admin/locales/hr.yml +49 -5
  130. data/lib/active_admin/locales/hu.yml +21 -0
  131. data/lib/active_admin/locales/it.yml +36 -1
  132. data/lib/active_admin/locales/ja.yml +36 -0
  133. data/lib/active_admin/locales/ko.yml +36 -1
  134. data/lib/active_admin/locales/lv.yml +28 -2
  135. data/lib/active_admin/locales/nl.yml +42 -1
  136. data/lib/active_admin/locales/no-NB.yml +15 -0
  137. data/lib/active_admin/locales/pl.yml +45 -1
  138. data/lib/active_admin/locales/pt-BR.yml +36 -1
  139. data/lib/active_admin/locales/ro.yml +67 -0
  140. data/lib/active_admin/locales/ru.yml +43 -3
  141. data/lib/active_admin/locales/sv-SE.yml +41 -1
  142. data/lib/active_admin/locales/tr.yml +80 -0
  143. data/lib/active_admin/locales/vi.yml +80 -0
  144. data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
  145. data/lib/active_admin/locales/zh-TW.yml +36 -1
  146. data/lib/active_admin/menu.rb +55 -30
  147. data/lib/active_admin/menu_builder.rb +65 -0
  148. data/lib/active_admin/menu_item.rb +55 -14
  149. data/lib/active_admin/namespace.rb +25 -55
  150. data/lib/active_admin/page.rb +15 -10
  151. data/lib/active_admin/resource.rb +9 -0
  152. data/lib/active_admin/resource/action_items.rb +4 -4
  153. data/lib/active_admin/resource/controllers.rb +1 -1
  154. data/lib/active_admin/resource/menu.rb +19 -21
  155. data/lib/active_admin/resource/naming.rb +55 -45
  156. data/lib/active_admin/resource/sidebars.rb +0 -13
  157. data/lib/active_admin/resource_collection.rb +10 -10
  158. data/lib/active_admin/resource_controller.rb +5 -5
  159. data/lib/active_admin/resource_controller/actions.rb +2 -0
  160. data/lib/active_admin/resource_controller/collection.rb +13 -4
  161. data/lib/active_admin/resource_dsl.rb +12 -6
  162. data/lib/active_admin/router.rb +27 -8
  163. data/lib/active_admin/scope.rb +1 -0
  164. data/lib/active_admin/sidebar_section.rb +2 -6
  165. data/lib/active_admin/version.rb +1 -1
  166. data/lib/active_admin/view_factory.rb +18 -13
  167. data/lib/active_admin/view_helpers.rb +0 -2
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
  170. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  171. data/lib/active_admin/view_helpers/fields_for.rb +44 -0
  172. data/lib/active_admin/view_helpers/form_helper.rb +6 -0
  173. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  174. data/lib/active_admin/views/components/action_list_popover.rb +29 -0
  175. data/lib/active_admin/views/components/attributes_table.rb +6 -2
  176. data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
  177. data/lib/active_admin/views/components/paginated_collection.rb +13 -14
  178. data/lib/active_admin/views/components/popover.rb +27 -0
  179. data/lib/active_admin/views/components/scopes.rb +8 -13
  180. data/lib/active_admin/views/components/sidebar_section.rb +1 -1
  181. data/lib/active_admin/views/components/site_title.rb +55 -0
  182. data/lib/active_admin/views/components/status_tag.rb +4 -4
  183. data/lib/active_admin/views/components/table_for.rb +18 -18
  184. data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
  185. data/lib/active_admin/views/footer.rb +18 -0
  186. data/lib/active_admin/views/header.rb +31 -0
  187. data/lib/active_admin/views/index_as_block.rb +3 -0
  188. data/lib/active_admin/views/index_as_blog.rb +4 -0
  189. data/lib/active_admin/views/index_as_grid.rb +2 -0
  190. data/lib/active_admin/views/index_as_table.rb +19 -6
  191. data/lib/active_admin/views/pages/base.rb +14 -48
  192. data/lib/active_admin/views/pages/form.rb +3 -3
  193. data/lib/active_admin/views/pages/index.rb +56 -24
  194. data/lib/active_admin/views/pages/layout.rb +2 -2
  195. data/lib/active_admin/views/pages/page.rb +10 -4
  196. data/lib/active_admin/views/pages/show.rb +11 -8
  197. data/lib/active_admin/views/tabbed_navigation.rb +3 -3
  198. data/lib/active_admin/views/title_bar.rb +50 -0
  199. data/lib/active_admin/views/utility_nav.rb +41 -0
  200. data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
  201. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
  202. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
  203. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  204. data/lib/generators/active_admin/install/install_generator.rb +10 -10
  205. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
  206. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
  207. data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  208. data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
  209. data/spec/integration/memory_spec.rb +1 -11
  210. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
  211. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
  212. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
  213. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
  214. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
  215. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
  216. data/spec/javascripts/fixtures/checkboxes.html +9 -0
  217. data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
  218. data/spec/javascripts/helpers/SpecHelper.js +3 -0
  219. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
  220. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
  221. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
  222. data/spec/javascripts/support/jasmine.yml +74 -0
  223. data/spec/javascripts/support/jasmine_config.rb +23 -0
  224. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  225. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
  226. data/spec/javascripts/support/jquery.min.js +4 -0
  227. data/spec/spec_helper.rb +13 -13
  228. data/spec/spec_helper_without_rails.rb +2 -3
  229. data/spec/support/detect_rails_version.rb +16 -10
  230. data/spec/support/rails_template.rb +13 -1
  231. data/spec/support/templates/admin/stores.rb +1 -0
  232. data/spec/support/templates/en.yml +6 -0
  233. data/spec/unit/action_builder_spec.rb +38 -0
  234. data/spec/unit/application_spec.rb +12 -16
  235. data/spec/unit/base_controller_shared_examples.rb +3 -6
  236. data/spec/unit/batch_actions/resource_spec.rb +91 -0
  237. data/spec/unit/batch_actions/settings_spec.rb +61 -0
  238. data/spec/unit/breadcrumbs_spec.rb +33 -0
  239. data/spec/unit/comments_spec.rb +6 -0
  240. data/spec/unit/config_shared_examples.rb +17 -64
  241. data/spec/unit/csv_builder_spec.rb +12 -2
  242. data/spec/unit/dashboard_controller_spec.rb +11 -5
  243. data/spec/unit/dsl_include_spec.rb +20 -0
  244. data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
  245. data/spec/unit/filters/resource_spec.rb +60 -0
  246. data/spec/unit/form_builder_spec.rb +180 -28
  247. data/spec/unit/helpers/collection_spec.rb +65 -0
  248. data/spec/unit/menu_item_spec.rb +48 -53
  249. data/spec/unit/menu_spec.rb +46 -32
  250. data/spec/unit/namespace/register_page_spec.rb +0 -6
  251. data/spec/unit/namespace/register_resource_spec.rb +1 -8
  252. data/spec/unit/namespace_spec.rb +8 -2
  253. data/spec/unit/page_spec.rb +20 -8
  254. data/spec/unit/resource/naming_spec.rb +27 -26
  255. data/spec/unit/resource/sidebars_spec.rb +0 -7
  256. data/spec/unit/resource_collection_spec.rb +11 -11
  257. data/spec/unit/resource_controller/collection_spec.rb +23 -1
  258. data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
  259. data/spec/unit/resource_controller_spec.rb +43 -0
  260. data/spec/unit/resource_registration_spec.rb +2 -13
  261. data/spec/unit/resource_spec.rb +0 -42
  262. data/spec/unit/routing_spec.rb +60 -14
  263. data/spec/unit/scope_spec.rb +7 -0
  264. data/spec/unit/view_factory_spec.rb +9 -6
  265. data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
  266. data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
  267. data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
  268. data/spec/unit/views/components/attributes_table_spec.rb +32 -20
  269. data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
  270. data/spec/unit/views/components/blank_slate_spec.rb +5 -3
  271. data/spec/unit/views/components/columns_spec.rb +32 -22
  272. data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
  273. data/spec/unit/views/components/panel_spec.rb +11 -6
  274. data/spec/unit/views/components/popover_spec.rb +33 -0
  275. data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
  276. data/spec/unit/views/components/site_title_spec.rb +78 -0
  277. data/spec/unit/views/components/status_tag_spec.rb +17 -10
  278. data/spec/unit/views/components/table_for_spec.rb +37 -17
  279. data/spec/unit/views/pages/layout_spec.rb +51 -10
  280. data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
  281. data/tasks/js.rake +32 -0
  282. data/tasks/test.rake +1 -1
  283. metadata +233 -200
  284. data/lib/active_admin/arbre.rb +0 -22
  285. data/lib/active_admin/arbre/builder.rb +0 -125
  286. data/lib/active_admin/arbre/context.rb +0 -45
  287. data/lib/active_admin/arbre/html/attributes.rb +0 -20
  288. data/lib/active_admin/arbre/html/class_list.rb +0 -24
  289. data/lib/active_admin/arbre/html/collection.rb +0 -27
  290. data/lib/active_admin/arbre/html/document.rb +0 -42
  291. data/lib/active_admin/arbre/html/element.rb +0 -161
  292. data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
  293. data/lib/active_admin/arbre/html/tag.rb +0 -145
  294. data/lib/active_admin/arbre/html/text_node.rb +0 -35
  295. data/lib/active_admin/filter_form_builder.rb +0 -53
  296. data/lib/active_admin/renderer.rb +0 -87
  297. data/lib/active_admin/resource_controller/filters.rb +0 -58
  298. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  299. data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
  300. data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
  301. data/lib/active_admin/views/header_renderer.rb +0 -82
  302. data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
  303. data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
  304. data/spec/unit/arbre/context_spec.rb +0 -35
  305. data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
  306. data/spec/unit/arbre/html/element_spec.rb +0 -236
  307. data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
  308. data/spec/unit/arbre/html/tag_spec.rb +0 -63
  309. data/spec/unit/arbre/html_spec.rb +0 -228
  310. data/spec/unit/renderer_spec.rb +0 -126
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::BatchActions::ResourceExtension do
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.batch_actions = true
8
+ namespace.register(Post)
9
+ end
10
+
11
+ describe "default action" do
12
+
13
+ it "should have the default action by default" do
14
+ resource.batch_actions.size.should == 1 and resource.batch_actions.first.sym == :destroy
15
+ end
16
+
17
+ end
18
+
19
+ describe "adding a new batch action" do
20
+
21
+ before do
22
+ resource.clear_batch_actions!
23
+ resource.add_batch_action :flag, "Flag" do
24
+ # Empty
25
+ end
26
+ end
27
+
28
+ it "should add an batch action" do
29
+ resource.batch_actions.size.should == 1
30
+ end
31
+
32
+ it "should store an instance of BatchAction" do
33
+ resource.batch_actions.first.should be_an_instance_of(ActiveAdmin::BatchAction)
34
+ end
35
+
36
+ it "should store the block in the batch action" do
37
+ resource.batch_actions.first.block.should_not be_nil
38
+ end
39
+
40
+ end
41
+
42
+ describe "removing batch action" do
43
+
44
+ before do
45
+ resource.remove_batch_action :destroy
46
+ end
47
+
48
+ it "should allow for batch action removal" do
49
+ resource.batch_actions.size.should == 0
50
+ end
51
+
52
+ end
53
+
54
+ describe "#batch_action_path" do
55
+
56
+ it "returns the path as a symbol" do
57
+ resource.batch_action_path.should == :batch_action_admin_posts_path
58
+ end
59
+
60
+ end
61
+
62
+ describe "#display_if_block" do
63
+
64
+ it "should return true by default" do
65
+ action = ActiveAdmin::BatchAction.new :default, "Default"
66
+ action.display_if_block.call.should == true
67
+ end
68
+
69
+ it "should return the :if block if set" do
70
+ action = ActiveAdmin::BatchAction.new :with_block, "With Block", :if => proc { false }
71
+ action.display_if_block.call.should == false
72
+ end
73
+
74
+ end
75
+
76
+ describe "batch action priority" do
77
+
78
+ it "should have a default priority" do
79
+ action = ActiveAdmin::BatchAction.new :default, "Default"
80
+ action.priority.should == 10
81
+ end
82
+
83
+ it "should correctly order two actions" do
84
+ priority_one = ActiveAdmin::BatchAction.new :one, "One", :priority => 1
85
+ priority_ten = ActiveAdmin::BatchAction.new :ten, "Ten", :priority => 10
86
+ priority_one.should be < priority_ten
87
+ end
88
+
89
+ end
90
+
91
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Batch Actions Settings" do
4
+ let(:app) { ActiveAdmin::Application.new }
5
+ let(:ns) { ActiveAdmin::Namespace.new(app, "Admin") }
6
+ let(:post_resource) { ns.register Post }
7
+
8
+ it "should be disabled globally by default" do
9
+ # Note: the default initializer would set it to true
10
+
11
+ app.batch_actions.should be_false
12
+ ns.batch_actions.should be_false
13
+ post_resource.batch_actions_enabled?.should be_false
14
+ end
15
+
16
+ it "should be settable to true" do
17
+ app.batch_actions = true
18
+ app.batch_actions.should == true
19
+ end
20
+
21
+ it "should be an inheritable_setting" do
22
+ app.batch_actions = true
23
+ ns.batch_actions.should == true
24
+ end
25
+
26
+ it "should be settable at the namespace level" do
27
+ app.batch_actions = true
28
+ ns.batch_actions = false
29
+
30
+ app.batch_actions.should == true
31
+ ns.batch_actions.should == false
32
+ end
33
+
34
+ it "should be settable at the resource level" do
35
+ post_resource.batch_actions_enabled?.should == false
36
+ post_resource.batch_actions = true
37
+ post_resource.batch_actions_enabled?.should == true
38
+ end
39
+
40
+ it "should inherit the setting on the resource from the namespace" do
41
+ ns.batch_actions = false
42
+ post_resource.batch_actions_enabled?.should == false
43
+ post_resource.batch_actions.should be_empty
44
+
45
+ post_resource.batch_actions = true
46
+ post_resource.batch_actions_enabled?.should == true
47
+ post_resource.batch_actions.should_not be_empty
48
+ end
49
+
50
+ it "should inherit the setting from the namespace when set to nil" do
51
+ ns.batch_actions = true
52
+
53
+ post_resource.batch_actions = true
54
+ post_resource.batch_actions_enabled?.should == true
55
+ post_resource.batch_actions.should_not be_empty
56
+
57
+ post_resource.batch_actions = nil
58
+ post_resource.batch_actions_enabled?.should == true # inherited from namespace
59
+ post_resource.batch_actions.should_not be_empty
60
+ end
61
+ end
@@ -82,6 +82,39 @@ describe "Breadcrumbs" do
82
82
  end
83
83
  end
84
84
 
85
+ context "when path '/admin/posts/4e24d6249ccf967313000000/comments'" do
86
+ let(:path) { "/admin/posts/4e24d6249ccf967313000000/comments" }
87
+
88
+ it "should have 3 items" do
89
+ trail.size.should == 3
90
+ end
91
+ it "should have a link to /admin" do
92
+ trail[0][:name].should == "Admin"
93
+ trail[0][:path].should == "/admin"
94
+ end
95
+ it "should have a link to /admin/posts" do
96
+ trail[1][:name].should == "Posts"
97
+ trail[1][:path].should == "/admin/posts"
98
+ end
99
+
100
+ context "when Post.find(4e24d6249ccf967313000000) doesn't exist" do
101
+ it "should have a link to /admin/posts/4e24d6249ccf967313000000" do
102
+ trail[2][:name].should == "4e24d6249ccf967313000000"
103
+ trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
104
+ end
105
+ end
106
+
107
+ context "when Post.find(4e24d6249ccf967313000000) does exist" do
108
+ before do
109
+ Post.stub!(:find).with('4e24d6249ccf967313000000').and_return{ mock(:display_name => "Hello World") }
110
+ end
111
+ it "should have a link to /admin/posts/4e24d6249ccf967313000000 using display name" do
112
+ trail[2][:name].should == "Hello World"
113
+ trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
114
+ end
115
+ end
116
+ end
117
+
85
118
  context "when path '/admin/posts/1/coments/1'" do
86
119
  let(:path) { "/admin/posts/1/comments/1" }
87
120
 
@@ -4,7 +4,13 @@ describe "Comments" do
4
4
  let(:application){ ActiveAdmin::Application.new }
5
5
 
6
6
  describe ActiveAdmin::Comment do
7
+ subject { ActiveAdmin::Comment }
8
+
7
9
  describe "Associations and Validations" do
10
+ before do
11
+ pending "This is not passing on Travis-CI. See Issue #1273."
12
+ end
13
+
8
14
  it { should belong_to :resource }
9
15
  it { should belong_to :author }
10
16
 
@@ -21,56 +21,27 @@ shared_examples_for "ActiveAdmin::Config" do
21
21
  it { respond_to :sidebar_sections? }
22
22
 
23
23
  describe "Naming" do
24
- it "implements #resource_name" do
25
- expect { config.resource_name }.should_not raise_error
24
+ it "implements #resource_label" do
25
+ expect { config.resource_label }.should_not raise_error
26
26
  end
27
27
 
28
- it "implements #plural_resource_name" do
29
- expect { config.plural_resource_name }.should_not raise_error
30
- end
31
-
32
- it "implements #safe_resource_name" do
33
- expect { config.safe_resource_name }.should_not raise_error
34
- end
35
-
36
- describe "#camelized_resource_name" do
37
- it "returns a camelized version of the safe_resource_name" do
38
- config.should_receive(:safe_resource_name).and_return "My resource"
39
- config.camelized_resource_name.should == "MyResource"
40
- end
28
+ it "implements #plural_resource_label" do
29
+ expect { config.plural_resource_label }.should_not raise_error
41
30
  end
31
+ end
42
32
 
43
- describe "#plural_camelized_resource_name" do
44
- it "returns a camelized version of the plural_safe_resource_name" do
45
- config.should_receive(:safe_resource_name).and_return "My resource"
46
- config.camelized_resource_name.should == "MyResource"
47
- end
48
- end
33
+ describe "Menu" do
34
+ describe "menu item" do
49
35
 
50
- describe "#underscored_resource_name" do
51
- it "returns the camelized_resource_name underscored" do
52
- config.should_receive(:camelized_resource_name).and_return "MyResource"
53
- config.underscored_resource_name.should == "my_resource"
54
- end
55
- end
36
+ it "initializes a new menu item with defaults" do
37
+ config.menu_item.label.should == config.plural_resource_label
38
+ end
56
39
 
57
- describe "#plural_underscored_resource_name" do
58
- it "returns the plural_camelized_resource_name underscored" do
59
- config.should_receive(:plural_camelized_resource_name).and_return "MyResources"
60
- config.plural_underscored_resource_name.should == "my_resources"
40
+ it "initialize a new menu item with custom options" do
41
+ config.menu :label => "Hello"
42
+ config.menu_item.label.should == "Hello"
61
43
  end
62
- end
63
- end
64
44
 
65
- describe "Menu" do
66
- describe "menu item name" do
67
- it "should be the plural resource name when not set" do
68
- config.menu_item_name.should == config.plural_resource_name
69
- end
70
- it "should be settable" do
71
- config.menu :label => "My Label"
72
- config.menu_item_name.should == "My Label"
73
- end
74
45
  end
75
46
 
76
47
  describe "#include_in_menu?" do
@@ -85,35 +56,17 @@ shared_examples_for "ActiveAdmin::Config" do
85
56
  end
86
57
 
87
58
  describe "parent menu item name" do
59
+
88
60
  it "should be nil when not set" do
89
61
  config.parent_menu_item_name.should == nil
90
62
  end
63
+
91
64
  it "should return the name if set" do
92
- config.tap do |c|
93
- c.menu :parent => "Blog"
94
- end.parent_menu_item_name.should == "Blog"
65
+ config.menu :parent => "Blog"
66
+ config.parent_menu_item_name.should == "Blog"
95
67
  end
96
- end
97
68
 
98
- describe "menu item priority" do
99
- it "should be 10 when not set" do
100
- config.menu_item_priority.should == 10
101
- end
102
- it "should be settable" do
103
- config.menu :priority => 2
104
- config.menu_item_priority.should == 2
105
- end
106
69
  end
107
70
 
108
- describe "menu item display if" do
109
- it "should be a proc always returning true if not set" do
110
- config.menu_item_display_if.should be_instance_of(Proc)
111
- config.menu_item_display_if.call.should == true
112
- end
113
- it "should be settable" do
114
- config.menu :if => proc { false }
115
- config.menu_item_display_if.call.should == false
116
- end
117
- end
118
71
  end
119
72
  end
@@ -37,7 +37,7 @@ describe ActiveAdmin::CSVBuilder do
37
37
  end
38
38
  end
39
39
 
40
- it "should have one colum" do
40
+ it "should have one column" do
41
41
  builder.columns.size.should == 1
42
42
  end
43
43
 
@@ -63,7 +63,7 @@ describe ActiveAdmin::CSVBuilder do
63
63
  end
64
64
  end
65
65
 
66
- it "should have one colum" do
66
+ it "should have one column" do
67
67
  builder.columns.size.should == 1
68
68
  end
69
69
 
@@ -80,4 +80,14 @@ describe ActiveAdmin::CSVBuilder do
80
80
  end
81
81
  end
82
82
 
83
+ context "with a separator" do
84
+ let(:builder) do
85
+ ActiveAdmin::CSVBuilder.new :separator => ";"
86
+ end
87
+
88
+ it "should have proper separator" do
89
+ builder.column_separator.should == ";"
90
+ end
91
+ end
92
+
83
93
  end
@@ -1,11 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
+ require 'active_admin/dashboards/dashboard_controller'
4
+ require 'active_admin/dashboards/section'
3
5
 
4
6
  module Admin
5
- class DashboardController < ActiveAdmin::Dashboards::DashboardController
7
+ class TestDashboardController < ActiveAdmin::PageController
8
+ include ActiveAdmin::Dashboards::DashboardController
6
9
  end
7
10
  end
8
- class DashboardController < ActiveAdmin::Dashboards::DashboardController; end
11
+
12
+ class TestDashboardController < ActiveAdmin::PageController
13
+ include ActiveAdmin::Dashboards::DashboardController
14
+ end
9
15
 
10
16
  describe ActiveAdmin::Dashboards::DashboardController do
11
17
 
@@ -13,19 +19,19 @@ describe ActiveAdmin::Dashboards::DashboardController do
13
19
  subject{ controller.send :namespace }
14
20
 
15
21
  context "when admin namespace" do
16
- let(:controller){ Admin::DashboardController.new }
22
+ let(:controller){ Admin::TestDashboardController.new }
17
23
  it { should == :admin }
18
24
  end
19
25
 
20
26
  context "when root namespace" do
21
- let(:controller){ DashboardController.new }
27
+ let(:controller){ TestDashboardController.new }
22
28
  it { should == :root }
23
29
  end
24
30
  end
25
31
 
26
32
  describe "conditionally displaying sections" do
27
33
  before { ActiveAdmin::Dashboards.clear_all_sections! }
28
- let(:controller){ Admin::DashboardController.new }
34
+ let(:controller){ Admin::TestDashboardController.new }
29
35
 
30
36
  context "when :if not specified" do
31
37
  before do
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ module MockModuleToInclude
4
+ def self.included(dsl)
5
+ end
6
+ end
7
+
8
+
9
+ describe ActiveAdmin::DSL, "#include" do
10
+
11
+ let(:dsl){ ActiveAdmin::DSL.new(mock) }
12
+
13
+ it "should call the included class method on the module that is included" do
14
+ MockModuleToInclude.should_receive(:included).with(dsl)
15
+ dsl.run_registration_block do
16
+ include MockModuleToInclude
17
+ end
18
+ end
19
+
20
+ end
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
 
4
- describe ActiveAdmin::ViewHelpers::FilterFormHelper do
5
-
6
- setup_arbre_context!
4
+ describe ActiveAdmin::Filters::ViewHelper do
7
5
 
8
6
  # Setup an ActionView::Base object which can be used for
9
7
  # generating the form for.
@@ -24,9 +22,14 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
24
22
  view
25
23
  end
26
24
 
25
+ def render_filter(search, name, options = {})
26
+ render_arbre_component({:filter_args => [search, [options.merge(:attribute => name)]]}, helpers) do
27
+ text_node active_admin_filters_form_for(*assigns[:filter_args])
28
+ end
29
+ end
30
+
27
31
  def filter(name, options = {})
28
- search = Post.search
29
- active_admin_filters_form_for(search, [options.merge(:attribute => name)])
32
+ render_filter Post.search, name, options
30
33
  end
31
34
 
32
35
  describe "the form in general" do
@@ -42,7 +45,7 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
42
45
  end
43
46
 
44
47
  it "should only generate the form once" do
45
- body.scan(/q\[title_contains\]/).size.should == 1
48
+ body.to_s.scan(/q\[title_contains\]/).size.should == 1
46
49
  end
47
50
 
48
51
  it "should generate a clear filters link" do
@@ -190,7 +193,7 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
190
193
  context "when polymorphic relationship" do
191
194
  let(:body) do
192
195
  search = ActiveAdmin::Comment.search
193
- active_admin_filters_form_for(search, [{ :attribute => :resource}])
196
+ render_filter(search, :resource)
194
197
  end
195
198
  it "should not generate any field" do
196
199
  body.should have_tag("form", :attributes => { :method => 'get' })