activeadmin 0.1.1 → 0.2.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 (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. data/spec/unit/table_builder_spec.rb +0 -162
@@ -1,52 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe_with_render "New View" do
4
-
5
- before :all do
6
- load_defaults!
7
- reload_routes!
8
- end
9
-
10
- before(:each) do
11
- Admin::PostsController.reset_form_config!
12
- end
13
-
14
- describe "GET #new" do
15
-
16
- it "should generate a default form with no config" do
17
- get :new
18
- response.should have_tag("input", :attributes => {
19
- :type => "text",
20
- :name => "post[title]"
21
- })
22
- response.should have_tag("textarea", :attributes => {
23
- :name => "post[body]"
24
- })
25
- end
26
-
27
- it "should generate a form with simple symbol configuration"
28
-
29
- describe "when generating a complex form" do
30
- before(:each) do
31
- Admin::PostsController.form do |f|
32
- f.inputs "Your Post" do
33
- f.input :title
34
- f.input :body
35
- end
36
- f.inputs "Publishing" do
37
- f.input :published_at
38
- end
39
- f.buttons
40
- end
41
- get :new
42
- end
43
- it "should create a field set" do
44
- response.should have_tag("legend", "Your Post")
45
- end
46
- it "should create a title field inside the fieldset" do
47
- response.should have_tag("input", :attributes => { :type => "text", :name => 'post[title]' },
48
- :ancestor => { :tag => "fieldset" })
49
- end
50
- end
51
- end
52
- end
@@ -1,91 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe_with_render "Show View" do
4
-
5
- before :all do
6
- load_defaults!
7
- reload_routes!
8
- end
9
-
10
- describe "GET #show" do
11
- before(:each) do
12
- Admin::PostsController.reset_show_config!
13
- end
14
-
15
- describe "the page title" do
16
- before do
17
- @post = Post.create :title => "Hello World"
18
- Admin::PostsController.show(:title => title)
19
- get :show, :id => @post.id
20
- end
21
-
22
- context "with default" do
23
- let(:title){ nil }
24
- it "should render the type and id" do
25
- response.should have_tag("h2", "Post ##{@post.id}")
26
- end
27
- end
28
-
29
- context "with a symbol set" do
30
- let(:title) { :title }
31
- it "should call the method on the object and render the response" do
32
- response.should have_tag("h2", @post.title)
33
- end
34
- end
35
-
36
- context "with a string set" do
37
- let(:title) { "Hey Hey" }
38
- it "should render the string" do
39
- response.should have_tag("h2", "Hey Hey")
40
- end
41
- end
42
-
43
- context "with a block set" do
44
- let(:title) { proc{|r| r.title } }
45
- it "should render the proc with the object as a param" do
46
- response.should have_tag("h2", @post.title)
47
- end
48
- end
49
-
50
- end
51
-
52
- describe "action items" do
53
- before do
54
- @post = Post.create(:title => "Hello World", :body => "Woot Woot")
55
- get :show, :id => @post.id
56
- end
57
- it "should have a delete button" do
58
- response.should have_tag("a", "Delete Post", :attributes => { 'data-method' => 'delete' })
59
- end
60
- it "should have an edit button" do
61
- response.should have_tag("a", "Edit Post")
62
- end
63
- end
64
-
65
- context "with default output" do
66
- before do
67
- @post = Post.create(:title => "Hello World", :body => "Woot Woot")
68
- get :show, :id => @post.id
69
- end
70
-
71
- it "should render default view" do
72
- response.should have_tag("th", "Title")
73
- response.should have_tag('td', 'Hello World')
74
- end
75
- end
76
-
77
- context "with custom output" do
78
- before(:each) do
79
- Admin::PostsController.show do
80
- "Woot Bang"
81
- end
82
- @post = Post.create(:title => "Hello World", :body => "Woot Woot")
83
- get :show, :id => @post.id
84
- end
85
-
86
- it "should render contents" do
87
- response.body.should include("Woot Bang")
88
- end
89
- end
90
- end
91
- end
@@ -1,96 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- describe_with_render ActiveAdmin::Sidebar do
4
-
5
- before :all do
6
- load_defaults!
7
- reload_routes!
8
- end
9
-
10
- # Store the config and set it back after each spec so that we
11
- # dont mess with other specs
12
- before do
13
- @config_before = Admin::PostsController.sidebar_sections
14
- Admin::PostsController.clear_sidebar_sections!
15
- end
16
-
17
- after(:each) do
18
- Admin::PostsController.sidebar_sections = @config_before
19
- end
20
-
21
- # Helper method to define a sidebar
22
- def sidebar(name, options = {}, &block)
23
- Admin::PostsController.class_eval do
24
- sidebar(name, options, &block)
25
- end
26
- end
27
-
28
- context "when setting with a block" do
29
- before do
30
- sidebar :my_filters do
31
- link_to "My Filters", '#'
32
- end
33
- get :index
34
- end
35
- it "should add a new sidebar to @sidebar_sections" do
36
- Admin::PostsController.sidebar_sections.size.should == 1
37
- end
38
- it "should render content in the context of the view" do
39
- response.should have_tag("a", "My Filters")
40
- end
41
- it "should put a title for the section" do
42
- response.should have_tag("h3", "My Filters")
43
- end
44
- end
45
-
46
- context "when only adding to the index action" do
47
- before do
48
- sidebar(:filters, :only => :index){ }
49
- end
50
- it "should be available on index" do
51
- Admin::PostsController.sidebar_sections_for(:index).size.should == 1
52
- end
53
- it "should not be available on edit" do
54
- Admin::PostsController.sidebar_sections_for(:edit).size.should == 0
55
- end
56
- end
57
-
58
- context "when adding to all except index action" do
59
- before do
60
- sidebar(:filters, :except => :index){ }
61
- end
62
- it "should not be availbale on index" do
63
- Admin::PostsController.sidebar_sections_for(:index).size.should == 0
64
- end
65
- it "should be available on edit" do
66
- Admin::PostsController.sidebar_sections_for(:edit).size.should == 1
67
- end
68
- end
69
-
70
- context "when setting with a class"
71
-
72
- describe "rendering partials" do
73
- let(:sections){ [section] }
74
- let(:renderer){ ActiveAdmin::Sidebar::Renderer.new(action_view) }
75
- let(:render!){ renderer.to_html(sections) }
76
-
77
- context "when a partial name is set" do
78
- let(:section){ ActiveAdmin::Sidebar::Section.new(:filters, :partial => 'custom_partial') }
79
-
80
- it "should render the partial" do
81
- renderer.should_receive(:render).with('custom_partial').and_return("woot")
82
- render!.should include("woot")
83
- end
84
- end
85
-
86
- context "when no partial name is set" do
87
- let(:section){ ActiveAdmin::Sidebar::Section.new(:filters) }
88
-
89
- it "should render the partial based on the name of the sidebar section" do
90
- renderer.should_receive(:render).with('filters_sidebar').and_return("woot")
91
- render!.should include("woot")
92
- end
93
- end
94
- end
95
-
96
- end
@@ -1,162 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- include ActiveAdmin
4
-
5
- describe ActiveAdmin::TableBuilder do
6
-
7
- describe "when creating a simple column" do
8
- before(:each) do
9
- @builder = TableBuilder.new do |t|
10
- t.column :first_name
11
- end
12
- end
13
-
14
- it "should set the column title" do
15
- @builder.columns.first.title.should == 'First Name'
16
- end
17
-
18
- it "should set the column data" do
19
- @builder.columns.first.data.should == :first_name
20
- end
21
- end
22
-
23
- it "should generate multiple columns" do
24
- builder = TableBuilder.new do |t|
25
- t.column :username
26
- t.column :last_name
27
- end
28
- builder.columns.size.should == 2
29
- end
30
-
31
- describe 'when creating a column with a title' do
32
- before(:each) do
33
- @builder = TableBuilder.new do |t|
34
- t.column 'My Great Username', :username
35
- end
36
- end
37
-
38
- it "should set the column title" do
39
- @builder.columns.first.title.should == 'My Great Username'
40
- end
41
-
42
- it "should set the column data" do
43
- @builder.columns.first.data.should == :username
44
- end
45
- end
46
-
47
- describe 'when creating a column with a title and a block as the data' do
48
- before(:each) do
49
- @builder = TableBuilder.new do |t|
50
- t.column('Username'){ |u| u.username }
51
- end
52
- end
53
-
54
- it "should set the column title" do
55
- @builder.columns.first.title.should == 'Username'
56
- end
57
-
58
- it "should set the column data" do
59
- @builder.columns.first.data.should be_a(Proc)
60
- end
61
- end
62
-
63
- describe "column sorting" do
64
- before(:each) do
65
- @builder = TableBuilder.new
66
- end
67
-
68
- it "should default to true" do
69
- @builder.column :username
70
- @builder.columns.first.should be_sortable
71
- end
72
-
73
- it "should be set with a symbol" do
74
- @builder.column :username, :sortable => false
75
- @builder.columns.first.should_not be_sortable
76
- end
77
-
78
- it "should be set with a string and a symbol" do
79
- @builder.column "Username", :username, :sortable => false
80
- @builder.columns.first.should_not be_sortable
81
- end
82
-
83
- it "should set the default sort key to the column symbol data" do
84
- @builder.column :username
85
- @builder.columns.first.sort_key.should == "username"
86
- end
87
-
88
- it "should not be sortable if a block given and no sort key" do
89
- @builder.column('Username'){ @user.username }
90
- @builder.columns.first.should_not be_sortable
91
- end
92
-
93
- it "should be sortable if a block given and a string to sortable" do
94
- @builder.column('Username', :sortable => 'username'){ @user.pretty_username }
95
- @builder.columns.first.should be_sortable
96
- @builder.columns.first.sort_key.should == 'username'
97
- end
98
-
99
- it "should be sortable if a block given and a symbol to sortable" do
100
- @builder.column('Username', :sortable => :username){ @user.pretty_username }
101
- @builder.columns.first.should be_sortable
102
- @builder.columns.first.sort_key.should == 'username'
103
- end
104
- end
105
-
106
- describe "column conditionals" do
107
- before(:each) do
108
- @builder = TableBuilder.new
109
- end
110
- it "should default to true" do
111
- @builder.column :username
112
- @builder.columns.first.conditional_block.call.should be_true
113
- end
114
- it "should accept a lamdba" do
115
- @builder.column :username, :if => proc{ false }
116
- @builder.columns.first.conditional_block.call.should be_false
117
- end
118
- end
119
-
120
-
121
- it "should generate many columns" do
122
- builder = TableBuilder.new do |t|
123
- t.columns :first, :second, :third
124
- end
125
- builder.columns.size.should == 3
126
- builder.columns.first.data.should == :first
127
- end
128
-
129
- include ActiveAdminIntegrationSpecHelper
130
-
131
- describe "rendering" do
132
-
133
- let(:collection) { [ "Hello World", "Ruby Rocks", "Foo Bar" ] }
134
- let(:table_builder) do
135
- TableBuilder.new do |t|
136
- t.column :to_s
137
- t.column :size
138
- t.column("Underscored"){|string| string.underscore }
139
- end
140
- end
141
- let(:table) { TableBuilder::Renderer.new(action_view).to_html(table_builder,collection) }
142
-
143
- context "when a table of objects" do
144
- it "should have 3 rows and 1 header row" do
145
- table.scan('<tr').size.should == 3
146
- end
147
- end
148
-
149
- context "when unescaped html" do
150
- let(:table_builder) do
151
- TableBuilder.new do |t|
152
- t.column(''){ "<h2>scary html</h2>" }
153
- end
154
- end
155
- it "should escape the html" do
156
- table.should_not include("<h2>scary html</h2>")
157
- end
158
- end
159
-
160
- end
161
-
162
- end