activeadmin 0.2.2 → 0.3.0

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 (277) hide show
  1. data/.gitignore +34 -0
  2. data/.travis.yml +4 -0
  3. data/.yardopts +8 -0
  4. data/CHANGELOG.md +177 -0
  5. data/Gemfile +21 -32
  6. data/Guardfile +8 -0
  7. data/README.rdoc +75 -14
  8. data/Rakefile +7 -100
  9. data/activeadmin.gemspec +21 -353
  10. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/admin_notes_icon.png +0 -0
  11. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  12. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  13. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  14. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  15. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  16. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
  17. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
  18. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
  19. data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
  20. data/app/assets/javascripts/active_admin/base.js +12 -0
  21. data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
  22. data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
  23. data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
  24. data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
  25. data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
  26. data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
  27. data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
  29. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
  30. data/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
  31. data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
  32. data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
  33. data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
  34. data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
  35. data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
  36. data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
  37. data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
  38. data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
  39. data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
  40. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
  41. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
  42. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
  43. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
  44. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
  45. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
  46. data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
  47. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
  48. data/app/views/active_admin/resource/index.csv.erb +20 -0
  49. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
  50. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
  51. data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
  52. data/app/views/layouts/active_admin.html.arb +1 -0
  53. data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
  54. data/docs/0-installation.md +50 -0
  55. data/docs/1-general-configuration.md +43 -0
  56. data/docs/2-resource-customization.md +35 -0
  57. data/docs/3-index-pages.md +55 -0
  58. data/docs/3-index-pages/index-as-block.md +16 -0
  59. data/docs/3-index-pages/index-as-blog.md +61 -0
  60. data/docs/3-index-pages/index-as-grid.md +21 -0
  61. data/docs/3-index-pages/index-as-table.md +90 -0
  62. data/docs/4-csv-format.md +14 -0
  63. data/docs/5-forms.md +39 -0
  64. data/docs/6-show-screens.md +22 -0
  65. data/docs/7-sidebars.md +35 -0
  66. data/docs/8-custom-actions.md +123 -0
  67. data/features/comments/commenting.feature +31 -4
  68. data/features/edit_page.feature +30 -1
  69. data/features/index/filters.feature +35 -0
  70. data/features/index/format_as_csv.feature +46 -0
  71. data/features/index/formats.feature +2 -0
  72. data/features/index/index_as_block.feature +1 -1
  73. data/features/index/index_as_grid.feature +1 -1
  74. data/features/index/index_as_table.feature +2 -0
  75. data/features/index/index_blank_slate.feature +56 -0
  76. data/features/index/pagination.feature +0 -6
  77. data/features/registering_assets.feature +2 -2
  78. data/features/sidebar_sections.feature +7 -8
  79. data/features/specifying_actions.feature +72 -1
  80. data/features/step_definitions/action_item_steps.rb +2 -2
  81. data/features/step_definitions/additional_web_steps.rb +26 -16
  82. data/features/step_definitions/attribute_steps.rb +5 -7
  83. data/features/step_definitions/configuration_steps.rb +9 -9
  84. data/features/step_definitions/factory_steps.rb +4 -3
  85. data/features/step_definitions/format_steps.rb +29 -1
  86. data/features/step_definitions/layout_steps.rb +3 -0
  87. data/features/step_definitions/menu_steps.rb +2 -2
  88. data/features/step_definitions/sidebar_steps.rb +1 -5
  89. data/features/step_definitions/user_steps.rb +8 -2
  90. data/features/step_definitions/web_steps.rb +82 -90
  91. data/features/sti_resource.feature +12 -0
  92. data/features/support/env.rb +12 -10
  93. data/features/support/paths.rb +2 -0
  94. data/features/support/selectors.rb +45 -0
  95. data/lib/active_admin.rb +33 -263
  96. data/lib/active_admin/application.rb +228 -0
  97. data/lib/active_admin/arbre.rb +10 -10
  98. data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
  99. data/lib/active_admin/arbre/context.rb +8 -0
  100. data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
  101. data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
  102. data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
  103. data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
  104. data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
  105. data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
  106. data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
  107. data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
  108. data/lib/active_admin/asset_registration.rb +1 -1
  109. data/lib/active_admin/callbacks.rb +5 -3
  110. data/lib/active_admin/comments.rb +3 -3
  111. data/lib/active_admin/comments/comment.rb +6 -0
  112. data/lib/active_admin/comments/configuration.rb +8 -6
  113. data/lib/active_admin/comments/namespace_helper.rb +1 -1
  114. data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
  115. data/lib/active_admin/csv_builder.rb +45 -0
  116. data/lib/active_admin/dashboards.rb +1 -1
  117. data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
  118. data/lib/active_admin/dependency_checker.rb +28 -0
  119. data/lib/active_admin/deprecation.rb +36 -0
  120. data/lib/active_admin/devise.rb +14 -3
  121. data/lib/active_admin/dsl.rb +26 -4
  122. data/lib/active_admin/engine.rb +4 -0
  123. data/lib/active_admin/form_builder.rb +18 -9
  124. data/lib/active_admin/helpers/scope_chain.rb +23 -0
  125. data/lib/active_admin/helpers/settings.rb +70 -0
  126. data/lib/active_admin/locales/cs.yml +34 -0
  127. data/lib/active_admin/locales/da.yml +28 -0
  128. data/lib/active_admin/locales/en.yml +40 -0
  129. data/lib/active_admin/locales/es.yml +40 -0
  130. data/lib/active_admin/locales/fr.yml +40 -0
  131. data/lib/active_admin/locales/it.yml +39 -0
  132. data/lib/active_admin/locales/pl.yml +34 -0
  133. data/lib/active_admin/locales/pt-BR.yml +41 -0
  134. data/lib/active_admin/locales/ru.yml +40 -0
  135. data/lib/active_admin/locales/zh_cn.yml +40 -0
  136. data/lib/active_admin/menu_item.rb +6 -0
  137. data/lib/active_admin/namespace.rb +14 -5
  138. data/lib/active_admin/reloader.rb +30 -0
  139. data/lib/active_admin/renderer.rb +1 -1
  140. data/lib/active_admin/resource.rb +45 -88
  141. data/lib/active_admin/resource/action_items.rb +88 -0
  142. data/lib/active_admin/resource/menu.rb +45 -0
  143. data/lib/active_admin/resource/naming.rb +46 -0
  144. data/lib/active_admin/resource/scopes.rb +33 -0
  145. data/lib/active_admin/resource/sidebars.rb +36 -0
  146. data/lib/active_admin/resource_controller.rb +32 -37
  147. data/lib/active_admin/resource_controller/action_builder.rb +1 -1
  148. data/lib/active_admin/resource_controller/actions.rb +66 -40
  149. data/lib/active_admin/resource_controller/callbacks.rb +1 -1
  150. data/lib/active_admin/resource_controller/collection.rb +9 -14
  151. data/lib/active_admin/resource_controller/filters.rb +1 -1
  152. data/lib/active_admin/resource_controller/form.rb +1 -1
  153. data/lib/active_admin/resource_controller/menu.rb +1 -1
  154. data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
  155. data/lib/active_admin/resource_controller/scoping.rb +1 -1
  156. data/lib/active_admin/resource_controller/sidebars.rb +1 -21
  157. data/lib/active_admin/router.rb +85 -0
  158. data/lib/active_admin/sass/active_admin.scss +3 -0
  159. data/lib/active_admin/sass/css_loader.rb +16 -0
  160. data/lib/active_admin/sass/helpers.rb +45 -0
  161. data/lib/active_admin/scope.rb +16 -2
  162. data/lib/active_admin/sidebar_section.rb +41 -0
  163. data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
  164. data/lib/active_admin/version.rb +1 -1
  165. data/lib/active_admin/view_factory.rb +5 -3
  166. data/lib/active_admin/view_helpers.rb +1 -2
  167. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  168. data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
  169. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  170. data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
  171. data/lib/active_admin/view_helpers/form_helper.rb +1 -0
  172. data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
  173. data/lib/active_admin/views/components/attributes_table.rb +2 -2
  174. data/lib/active_admin/views/components/blank_slate.rb +17 -0
  175. data/lib/active_admin/views/components/columns.rb +1 -3
  176. data/lib/active_admin/views/components/paginated_collection.rb +26 -8
  177. data/lib/active_admin/views/components/scopes.rb +13 -8
  178. data/lib/active_admin/views/components/sidebar_section.rb +1 -3
  179. data/lib/active_admin/views/components/status_tag.rb +55 -0
  180. data/lib/active_admin/views/components/table_for.rb +25 -6
  181. data/lib/active_admin/views/header_renderer.rb +20 -4
  182. data/lib/active_admin/views/index_as_block.rb +12 -7
  183. data/lib/active_admin/views/index_as_blog.rb +61 -21
  184. data/lib/active_admin/views/index_as_grid.rb +22 -1
  185. data/lib/active_admin/views/index_as_table.rb +97 -6
  186. data/lib/active_admin/views/pages/base.rb +20 -9
  187. data/lib/active_admin/views/pages/dashboard.rb +7 -4
  188. data/lib/active_admin/views/pages/edit.rb +3 -2
  189. data/lib/active_admin/views/pages/index.rb +30 -5
  190. data/lib/active_admin/views/pages/layout.rb +26 -0
  191. data/lib/active_admin/views/pages/new.rb +3 -2
  192. data/lib/active_admin/views/pages/show.rb +1 -1
  193. data/lib/active_admin/views/tabbed_navigation.rb +94 -0
  194. data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
  195. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
  196. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
  197. data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
  198. data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
  199. data/lib/generators/active_admin/install/install_generator.rb +2 -4
  200. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
  201. data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
  202. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
  203. data/script/local +44 -0
  204. data/script/use_rails +46 -0
  205. data/spec/integration/belongs_to_spec.rb +1 -1
  206. data/spec/integration/default_namespace.rb +77 -0
  207. data/spec/integration/javascript_spec.rb +20 -0
  208. data/spec/integration/stylesheets_spec.rb +41 -0
  209. data/spec/spec_helper.rb +21 -11
  210. data/spec/support/detect_rails_version.rb +10 -0
  211. data/spec/support/integration_example_group.rb +1 -1
  212. data/spec/support/jslint.yml +80 -0
  213. data/spec/support/rails_template.rb +1 -1
  214. data/spec/support/rails_template_with_data.rb +2 -1
  215. data/spec/support/templates/cucumber.rb +0 -4
  216. data/spec/unit/active_admin_spec.rb +8 -44
  217. data/spec/unit/application_spec.rb +78 -0
  218. data/spec/unit/arbre/context_spec.rb +22 -0
  219. data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
  220. data/spec/unit/arbre/html/element_spec.rb +2 -3
  221. data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
  222. data/spec/unit/arbre/html/tag_spec.rb +2 -2
  223. data/spec/unit/arbre/html_spec.rb +2 -3
  224. data/spec/unit/auto_link_spec.rb +2 -1
  225. data/spec/unit/belongs_to_spec.rb +2 -1
  226. data/spec/unit/comments_spec.rb +43 -39
  227. data/spec/unit/controller_filters_spec.rb +11 -3
  228. data/spec/unit/csv_builder_spec.rb +83 -0
  229. data/spec/unit/devise_spec.rb +66 -0
  230. data/spec/unit/display_name_spec.rb +2 -2
  231. data/spec/unit/filter_form_builder_spec.rb +6 -3
  232. data/spec/unit/form_builder_spec.rb +20 -2
  233. data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
  234. data/spec/unit/helpers/scope_chain_spec.rb +36 -0
  235. data/spec/unit/helpers/settings_spec.rb +30 -0
  236. data/spec/unit/menu_item_spec.rb +6 -0
  237. data/spec/unit/namespace_spec.rb +68 -19
  238. data/spec/unit/rails_spec.rb +43 -0
  239. data/spec/unit/registration_spec.rb +18 -27
  240. data/spec/unit/reloader_spec.rb +28 -0
  241. data/spec/unit/resource/action_items_spec.rb +62 -0
  242. data/spec/unit/resource/menu_spec.rb +80 -0
  243. data/spec/unit/resource/naming_spec.rb +64 -0
  244. data/spec/unit/resource/scopes_spec.rb +30 -0
  245. data/spec/unit/resource/sidebars_spec.rb +50 -0
  246. data/spec/unit/resource_controller/collection_spec.rb +1 -1
  247. data/spec/unit/resource_controller_spec.rb +29 -24
  248. data/spec/unit/resource_spec.rb +78 -94
  249. data/spec/unit/sass/helpers_spec.rb +47 -0
  250. data/spec/unit/scope_spec.rb +11 -1
  251. data/spec/unit/view_factory_spec.rb +4 -1
  252. data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
  253. data/spec/unit/views/components/blank_slate_spec.rb +15 -0
  254. data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
  255. data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
  256. data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
  257. data/spec/unit/views/components/status_tag_spec.rb +79 -0
  258. data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
  259. data/spec/unit/views/pages/layout_spec.rb +22 -0
  260. data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
  261. data/tasks/docs.rake +39 -0
  262. data/tasks/test.rake +55 -0
  263. data/tasks/yard.rake +6 -0
  264. metadata +310 -189
  265. data/CHANGELOG.rdoc +0 -76
  266. data/lib/active_admin/action_items.rb +0 -37
  267. data/lib/active_admin/sidebar.rb +0 -39
  268. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
  269. data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
  270. data/lib/active_admin/view_helpers/table_helper.rb +0 -12
  271. data/lib/active_admin/views/tabs_renderer.rb +0 -52
  272. data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
  273. data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
  274. data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
  275. data/spec/controllers/index_as_csv_spec.rb +0 -35
  276. data/spec/unit/action_items_spec.rb +0 -27
  277. data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -1,25 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin, "filters" do
4
+ let(:application){ ActiveAdmin::Application.new }
4
5
 
5
6
  describe "before filters" do
6
7
  it "should add a new before filter to ActiveAdmin::ResourceController" do
7
8
  ActiveAdmin::ResourceController.should_receive(:before_filter).and_return(true)
8
- ActiveAdmin.before_filter :my_filter, :only => :show
9
+ application.before_filter :my_filter, :only => :show
10
+ end
11
+ end
12
+
13
+ describe "skip before filters" do
14
+ it "should add a new skip before filter to ActiveAdmin::ResourceController" do
15
+ ActiveAdmin::ResourceController.should_receive(:skip_before_filter).and_return(true)
16
+ application.skip_before_filter :my_filter, :only => :show
9
17
  end
10
18
  end
11
19
 
12
20
  describe "after filters" do
13
21
  it "should add a new after filter to ActiveAdmin::ResourceController" do
14
22
  ActiveAdmin::ResourceController.should_receive(:after_filter).and_return(true)
15
- ActiveAdmin.after_filter :my_filter, :only => :show
23
+ application.after_filter :my_filter, :only => :show
16
24
  end
17
25
  end
18
26
 
19
27
  describe "around filters" do
20
28
  it "should add a new around filter to ActiveAdmin::ResourceController" do
21
29
  ActiveAdmin::ResourceController.should_receive(:around_filter).and_return(true)
22
- ActiveAdmin.around_filter :my_filter, :only => :show
30
+ application.around_filter :my_filter, :only => :show
23
31
  end
24
32
  end
25
33
 
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::CSVBuilder do
4
+
5
+ describe '.default_for_resource using Post' do
6
+ let(:csv_builder) { ActiveAdmin::CSVBuilder.default_for_resource(Post) }
7
+
8
+ it "should return a default csv_builder for Post" do
9
+ csv_builder.should be_a(ActiveAdmin::CSVBuilder)
10
+ end
11
+
12
+ specify "the first column should be Id" do
13
+ csv_builder.columns.first.name.should == 'Id'
14
+ csv_builder.columns.first.data.should == :id
15
+ end
16
+
17
+ specify "the following columns should be content_column" do
18
+ csv_builder.columns[1..-1].each_with_index do |column, index|
19
+ column.name.should == Post.content_columns[index].name.titleize
20
+ column.data.should == Post.content_columns[index].name.to_sym
21
+ end
22
+ end
23
+ end
24
+
25
+ context 'when empty' do
26
+ let(:builder){ ActiveAdmin::CSVBuilder.new }
27
+
28
+ it "should have no columns" do
29
+ builder.columns.should == []
30
+ end
31
+ end
32
+
33
+ context "with a symbol column (:title)" do
34
+ let(:builder) do
35
+ ActiveAdmin::CSVBuilder.new do
36
+ column :title
37
+ end
38
+ end
39
+
40
+ it "should have one colum" do
41
+ builder.columns.size.should == 1
42
+ end
43
+
44
+ describe "the column" do
45
+ let(:column){ builder.columns.first }
46
+
47
+ it "should have a name of 'Title'" do
48
+ column.name.should == "Title"
49
+ end
50
+
51
+ it "should have the data :title" do
52
+ column.data.should == :title
53
+ end
54
+ end
55
+ end
56
+
57
+ context "with a block and title" do
58
+ let(:builder) do
59
+ ActiveAdmin::CSVBuilder.new do
60
+ column "My title" do
61
+ # nothing
62
+ end
63
+ end
64
+ end
65
+
66
+ it "should have one colum" do
67
+ builder.columns.size.should == 1
68
+ end
69
+
70
+ describe "the column" do
71
+ let(:column){ builder.columns.first }
72
+
73
+ it "should have a name of 'My title'" do
74
+ column.name.should == "My title"
75
+ end
76
+
77
+ it "should have the data :title" do
78
+ column.data.should be_an_instance_of(Proc)
79
+ end
80
+ end
81
+ end
82
+
83
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Devise::Controller do
4
+
5
+ let(:controller_class) do
6
+ klass = Class.new do
7
+ def self.layout(*); end
8
+ def self.helper(*); end
9
+ end
10
+ klass.send(:include, ActiveAdmin::Devise::Controller)
11
+ klass
12
+ end
13
+
14
+ let(:controller) { controller_class.new }
15
+
16
+ it "should set the root path to the default namespace" do
17
+ controller.root_path.should == "/admin"
18
+ end
19
+
20
+ it "should set the root path to '/' when no default namespace" do
21
+ ActiveAdmin.application.stub!(:default_namespace => false)
22
+ controller.root_path.should == "/"
23
+ end
24
+
25
+ describe "#config" do
26
+ let(:config) { ActiveAdmin::Devise.config }
27
+
28
+ describe ":sign_out_via option" do
29
+
30
+ subject { config[:sign_out_via] }
31
+
32
+ context "when Devise does not implement sign_out_via (version < 1.2)" do
33
+ before do
34
+ ::Devise.should_receive(:respond_to?).with(:sign_out_via).and_return(false)
35
+ end
36
+
37
+ it "should not contain any customization for sign_out_via" do
38
+ config.should_not have_key(:sign_out_via)
39
+ end
40
+ end
41
+
42
+ context "when Devise implements sign_out_via (version >= 1.2)" do
43
+ before do
44
+ ::Devise.should_receive(:respond_to?).with(:sign_out_via).and_return(true)
45
+ ::Devise.stub!(:sign_out_via) { :delete }
46
+ end
47
+
48
+ it "should contain the application.logout_link_method" do
49
+ ::Devise.should_receive(:sign_out_via).and_return(:delete)
50
+ ActiveAdmin.application.should_receive(:logout_link_method).and_return(:get)
51
+
52
+ config[:sign_out_via].should include(:get)
53
+ end
54
+
55
+ it "should contain Devise's logout_via_method(s)" do
56
+ ::Devise.should_receive(:sign_out_via).and_return([:delete, :post])
57
+ ActiveAdmin.application.should_receive(:logout_link_method).and_return(:get)
58
+
59
+ config[:sign_out_via].should == [:delete, :post, :get]
60
+ end
61
+ end
62
+
63
+ end # describe ":sign_out_via option"
64
+ end # describe "#config"
65
+
66
+ end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe "display names" do
4
4
 
5
- include ActiveAdmin::ViewHelpers::DisplayHelper
5
+ include ActiveAdmin::ViewHelpers
6
6
 
7
7
  [:display_name, :full_name, :name, :username, :login, :title, :email, :to_s].each do |m|
8
8
  it "should return #{m} if defined" do
@@ -22,7 +22,7 @@ describe "display names" do
22
22
  end
23
23
  end
24
24
  display_name(c.new).should == "My Name"
25
- ActiveAdmin.should_not_receive(:display_name_methods)
25
+ ActiveAdmin.application.should_not_receive(:display_name_methods)
26
26
  display_name(c.new).should == "My Name"
27
27
  end
28
28
 
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
 
4
4
  describe ActiveAdmin::ViewHelpers::FilterFormHelper do
5
- include Arbre::HTML
6
- let(:assigns){ {} }
5
+
6
+ setup_arbre_context!
7
7
 
8
8
  # Setup an ActionView::Base object which can be used for
9
9
  # generating the form for.
@@ -29,7 +29,7 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
29
29
  let(:body) { filter :title }
30
30
 
31
31
  it "should generate a form which submits via get" do
32
- body.should have_tag("form", :attributes => { :method => 'get' })
32
+ body.should have_tag("form", :attributes => { :method => 'get', :class => 'filter_form' })
33
33
  end
34
34
 
35
35
  it "should generate a filter button" do
@@ -76,6 +76,9 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
76
76
  it "should generate a date greater than" do
77
77
  body.should have_tag("input", :attributes => { :name => "q[created_at_gte]", :class => "datepicker"})
78
78
  end
79
+ it "should generate a seperator" do
80
+ body.should have_tag("span", :attributes => { :class => "seperator"})
81
+ end
79
82
  it "should generate a date less than" do
80
83
  body.should have_tag("input", :attributes => { :name => "q[created_at_lte]", :class => "datepicker"})
81
84
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::FormBuilder do
4
- include Arbre::HTML
5
- let(:assigns){ {} }
4
+
5
+ setup_arbre_context!
6
6
 
7
7
  # Setup an ActionView::Base object which can be used for
8
8
  # generating the form for.
@@ -28,6 +28,7 @@ describe ActiveAdmin::FormBuilder do
28
28
  end
29
29
 
30
30
  def build_form(options = {}, &block)
31
+ options.merge!({:url => posts_path})
31
32
  active_admin_form_for Post.new, options, &block
32
33
  end
33
34
 
@@ -63,6 +64,23 @@ describe ActiveAdmin::FormBuilder do
63
64
  end
64
65
  end
65
66
 
67
+ context "when polymorphic relationship" do
68
+
69
+ let(:body) do
70
+ comment = ActiveAdmin::Comment.new
71
+
72
+ active_admin_form_for comment, :url => "admins/comments" do |f|
73
+ f.inputs :resource
74
+ end
75
+
76
+ end
77
+
78
+ it "should not generate any field" do
79
+ body.should have_tag("form", :attributes => { :method => 'post' })
80
+ body.should_not have_tag("select")
81
+ end
82
+ end
83
+
66
84
  describe "passing in options" do
67
85
  let :body do
68
86
  build_form :html => { :multipart => true } do |f|
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ if Rails.version[0..2] == '3.1'
5
+ describe "Installing in Rails 3.1" do
6
+
7
+ it "should add active_admin.css to app/assets/stylesheets/" do
8
+ File.exists?(Rails.root + "app/assets/stylesheets/active_admin.css.scss").should be_true
9
+ end
10
+
11
+ it "should add active_admin.js to app/assets/javascripts" do
12
+ File.exists?(Rails.root + "app/assets/javascripts/active_admin.js").should be_true
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::ScopeChain do
4
+
5
+ include ActiveAdmin::ScopeChain
6
+
7
+ describe "#scope_chain" do
8
+ let(:relation) { mock }
9
+
10
+ context "when Scope has a scope method" do
11
+ let(:scope) { ActiveAdmin::Scope.new :published }
12
+
13
+ it "should call the method on the relation and return it" do
14
+ relation.should_receive(:published).and_return(:scoped_relation)
15
+ scope_chain(scope, relation).should == :scoped_relation
16
+ end
17
+ end
18
+
19
+ context "when Scope has the scope method method ':all'" do
20
+ let(:scope) { ActiveAdmin::Scope.new :all }
21
+
22
+ it "should return the relation" do
23
+ scope_chain(scope, relation).should == relation
24
+ end
25
+ end
26
+
27
+ context "when Scope has a name and a scope block" do
28
+ let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| :scoped_relation } }
29
+
30
+ it "should instance_exec the block and return it" do
31
+ scope_chain(scope, relation).should == :scoped_relation
32
+ end
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'active_admin/helpers/settings'
3
+
4
+ describe ActiveAdmin::Settings do
5
+
6
+ # A Class with settings module included
7
+ let(:klass) do
8
+ Class.new do
9
+ include ActiveAdmin::Settings
10
+ end
11
+ end
12
+
13
+ it "should add a new setting with a default" do
14
+ klass.setting :my_setting, "Hello World"
15
+ klass.default_settings[:my_setting].should == "Hello World"
16
+ end
17
+
18
+ it "should initialize the defaults" do
19
+ klass.setting :my_setting, "Hello World"
20
+ klass.new.my_setting.should == "Hello World"
21
+ end
22
+
23
+ it "should support settings of nil" do
24
+ klass.setting :my_setting, :some_val
25
+ inst = klass.new
26
+ inst.my_setting = nil
27
+ inst.my_setting.should == nil
28
+ end
29
+
30
+ end
@@ -27,6 +27,12 @@ module ActiveAdmin
27
27
  item = MenuItem.new("Dashboard", "/admin", 10, :if => block )
28
28
  item.display_if_block.should == block
29
29
  end
30
+
31
+ it "should have a default display if block always returning true" do
32
+ item = MenuItem.new("Dashboard", "/admin")
33
+ item.display_if_block.should be_instance_of(Proc)
34
+ item.display_if_block.call(self).should == true
35
+ end
30
36
 
31
37
  describe "url generation and caching" do
32
38
  it "should generate a url if it is a symbol" do
@@ -2,8 +2,14 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveAdmin::Namespace do
4
4
 
5
+ let(:application){ ActiveAdmin::Application.new }
6
+
5
7
  context "when new" do
6
- let(:namespace){ ActiveAdmin::Namespace.new(:admin) }
8
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
9
+
10
+ it "should have an application instance" do
11
+ namespace.application.should == application
12
+ end
7
13
 
8
14
  it "should have a name" do
9
15
  namespace.name.should == :admin
@@ -20,7 +26,7 @@ describe ActiveAdmin::Namespace do
20
26
 
21
27
  describe "registering a resource" do
22
28
 
23
- let(:namespace){ ActiveAdmin::Namespace.new(:admin) }
29
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
24
30
 
25
31
  context "with no configuration" do
26
32
  before do
@@ -53,11 +59,12 @@ describe ActiveAdmin::Namespace do
53
59
  end
54
60
 
55
61
  context "with a resource that's namespaced" do
62
+
56
63
  before do
57
64
  module ::Mock; class Resource; def self.has_many(arg1, arg2); end; end; end
58
65
  namespace.register Mock::Resource
59
66
  end
60
-
67
+
61
68
  it "should store the namespaced registered configuration" do
62
69
  namespace.resources.keys.should include('MockResource')
63
70
  end
@@ -71,23 +78,33 @@ describe ActiveAdmin::Namespace do
71
78
  it "should use the resource as the model in the controller" do
72
79
  Admin::MockResourcesController.resource_class.should == Mock::Resource
73
80
  end
81
+
74
82
  end
75
83
 
76
84
  describe "finding resource instances" do
77
- let(:namespace){ ActiveAdmin::Namespace.new(:admin) }
78
- context "when registered" do
79
- before do
80
- @post_resource = namespace.register Post
81
- end
82
- it "should return the resource instance" do
83
- namespace.resource_for(Post).should == @post_resource
84
- end
85
+
86
+ let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
87
+
88
+ it "should return the resource when its been registered" do
89
+ post = namespace.register Post
90
+ namespace.resource_for(Post).should == post
85
91
  end
86
- context "when not registered" do
87
- it "should be nil" do
88
- namespace.resource_for(Post).should == nil
89
- end
92
+
93
+ it 'should return nil when the resource has not been registered' do
94
+ namespace.resource_for(Post).should == nil
95
+ end
96
+
97
+ it "should return the parent when the parent class has been registered and the child has not" do
98
+ user = namespace.register User
99
+ namespace.resource_for(Publisher).should == user
90
100
  end
101
+
102
+ it "should return the resource if it and it's parent were registered" do
103
+ user = namespace.register User
104
+ publisher = namespace.register Publisher
105
+ namespace.resource_for(Publisher).should == publisher
106
+ end
107
+
91
108
  end
92
109
 
93
110
  describe "adding to the menu" do
@@ -118,8 +135,40 @@ describe ActiveAdmin::Namespace do
118
135
  end
119
136
 
120
137
  describe "disabling the menu" do
121
- # TODO
122
- it "should not create a menu item"
138
+ before do
139
+ namespace.register Category do
140
+ menu false
141
+ end
142
+ namespace.load_menu!
143
+ end
144
+ it "should not create a menu item" do
145
+ namespace.menu["Categories"].should be_nil
146
+ end
147
+ end
148
+
149
+ describe "setting menu priority" do
150
+ before do
151
+ namespace.register Category do
152
+ menu :priority => 2
153
+ end
154
+ namespace.load_menu!
155
+ end
156
+ it "should have a custom priority of 2" do
157
+ namespace.menu["Categories"].priority.should == 2
158
+ end
159
+ end
160
+
161
+ describe "setting a condition for displaying" do
162
+ before do
163
+ namespace.register Category do
164
+ menu :if => proc { false }
165
+ end
166
+ namespace.load_menu!
167
+ end
168
+ it "should have a proc returning false" do
169
+ namespace.menu["Categories"].display_if_block.should be_instance_of(Proc)
170
+ namespace.menu["Categories"].display_if_block.call.should == false
171
+ end
123
172
  end
124
173
 
125
174
  describe "adding as a belongs to" do
@@ -149,13 +198,13 @@ describe ActiveAdmin::Namespace do
149
198
  describe "dashboard controller name" do
150
199
  context "when namespaced" do
151
200
  it "should be namespaced" do
152
- namespace = ActiveAdmin::Namespace.new(:admin)
201
+ namespace = ActiveAdmin::Namespace.new(application, :admin)
153
202
  namespace.dashboard_controller_name.should == "Admin::DashboardController"
154
203
  end
155
204
  end
156
205
  context "when not namespaced" do
157
206
  it "should not be namespaced" do
158
- namespace = ActiveAdmin::Namespace.new(:root)
207
+ namespace = ActiveAdmin::Namespace.new(application, :root)
159
208
  namespace.dashboard_controller_name.should == "DashboardController"
160
209
  end
161
210
  end