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
@@ -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
@@ -1,67 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "Registering an object to administer" do
4
+ let(:application){ ActiveAdmin::Application.new }
4
5
 
5
6
  context "with no configuration" do
6
- let(:namespace) { ActiveAdmin::Namespace.new(:admin) }
7
+ let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
7
8
  it "should call register on the namespace" do
8
- ActiveAdmin.namespaces[namespace.name] = namespace
9
+ application.namespaces[namespace.name] = namespace
9
10
  namespace.should_receive(:register)
10
11
 
11
- ActiveAdmin.register Category
12
+ application.register Category
12
13
  end
13
14
 
14
15
  it "should dispatch a Resource::RegisterEvent" do
15
16
  ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
16
- ActiveAdmin.register Category
17
+ application.register Category
17
18
  end
18
19
  end
19
20
 
20
21
  context "with a different namespace" do
21
22
  it "should call register on the namespace" do
22
- namespace = ActiveAdmin::Namespace.new(:hello_world)
23
- ActiveAdmin.namespaces[namespace.name] = namespace
23
+ namespace = ActiveAdmin::Namespace.new(application, :hello_world)
24
+ application.namespaces[namespace.name] = namespace
24
25
  namespace.should_receive(:register)
25
26
 
26
- ActiveAdmin.register Category, :namespace => :hello_world
27
- end
28
- it "should generate a path to the dashboard" do
29
- ActiveAdmin.register Category, :namespace => :hello_world
30
- reload_routes!
31
- Rails.application.routes.url_helpers.methods.collect(&:to_s).should include("hello_world_dashboard_path")
27
+ application.register Category, :namespace => :hello_world
32
28
  end
33
29
  it "should generate a menu item for the dashboard" do
34
- ActiveAdmin.register Category, :namespace => :hello_world
35
- ActiveAdmin.namespaces[:hello_world].load_menu!
36
- ActiveAdmin.namespaces[:hello_world].menu['Dashboard'].instance_variable_get("@url").should == :hello_world_dashboard_path
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
37
33
  end
38
34
  it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
39
35
  ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
40
36
  ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
41
- ActiveAdmin.register Category, :namespace => :not_yet_created
37
+ application.register Category, :namespace => :not_yet_created
42
38
  end
43
39
  end
44
40
 
45
41
  context "with no namespace" do
46
42
  it "should call register on the root namespace" do
47
- namespace = ActiveAdmin::Namespace.new(:root)
48
- ActiveAdmin.namespaces[namespace.name] = namespace
43
+ namespace = ActiveAdmin::Namespace.new(application, :root)
44
+ application.namespaces[namespace.name] = namespace
49
45
  namespace.should_receive(:register)
50
46
 
51
- ActiveAdmin.register Category, :namespace => false
47
+ application.register Category, :namespace => false
52
48
  end
53
49
 
54
50
  it "should generate a menu item for the dashboard" do
55
- ActiveAdmin.register Category, :namespace => false
56
- ActiveAdmin.namespaces[:root].load_menu!
57
- ActiveAdmin.namespaces[:root].menu['Dashboard'].instance_variable_get("@url").should == :dashboard_path
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
58
54
  end
59
55
 
60
- it "should generate a path to the dashboard" do
61
- ActiveAdmin.register Category, :namespace => false
62
- reload_routes!
63
- Rails.application.routes.url_helpers.methods.collect(&:to_s).should include("dashboard_path")
64
- end
65
56
  end
66
57
 
67
58
  context "when being registered multiple times" do
@@ -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,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,64 @@
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
+ context "I18n" do
54
+ before do
55
+ I18n.stub(:translate) { 'Categorie' }
56
+ end
57
+ it "should return the plural version defined in the i18n if available" do
58
+ config.plural_resource_name.should == "Categorie"
59
+ end
60
+ end
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ module ActiveAdmin
4
+ describe Resource, "Scopes" 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 "adding a scope" do
16
+
17
+ it "should add a scope" do
18
+ config.scope :published
19
+ config.scopes.first.should be_a(ActiveAdmin::Scope)
20
+ config.scopes.first.name.should == "Published"
21
+ end
22
+
23
+ it "should retrive a scope by its id" do
24
+ config.scope :published
25
+ config.get_scope_by_id(:published).name.should == "Published"
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveAdmin::Resource::Sidebars do
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.register(Post)
8
+ end
9
+
10
+ let(:sidebar) { ActiveAdmin::SidebarSection.new(:help) }
11
+
12
+ describe "adding a new sidebar section" do
13
+
14
+ before do
15
+ resource.clear_sidebar_sections!
16
+ resource.sidebar_sections << sidebar
17
+ end
18
+
19
+ it "should add a sidebar section" do
20
+ resource.should have(1).sidebar_sections
21
+ end
22
+
23
+ end
24
+
25
+ describe "retrieving sections for a controller action" do
26
+
27
+ let(:only_index){ ActiveAdmin::SidebarSection.new(:help, :only => :index) }
28
+ let(:only_show){ ActiveAdmin::SidebarSection.new(:help, :only => :show) }
29
+
30
+ before do
31
+ resource.clear_sidebar_sections!
32
+ resource.sidebar_sections << only_index
33
+ resource.sidebar_sections << only_show
34
+ end
35
+
36
+ it "should only return the relevant action items" do
37
+ resource.should have(2).sidebar_sections
38
+ resource.sidebar_sections_for("index").should == [only_index]
39
+ end
40
+
41
+ end
42
+
43
+ describe "default sidebar sections" do
44
+
45
+ it "should have a filters section by default" do
46
+ resource.sidebar_sections.first.name.should == :filters
47
+ end
48
+
49
+ end
50
+ end