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.
- data/CHANGELOG.rdoc +15 -1
- data/Gemfile +41 -11
- data/LICENSE +5 -0
- data/README.rdoc +202 -87
- data/Rakefile +51 -15
- data/activeadmin.gemspec +310 -131
- data/cucumber.yml +1 -0
- data/features/comments/commenting.feature +81 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/edit_page.feature +77 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/formats.feature +10 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +79 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +23 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +128 -0
- data/features/specifying_actions.feature +16 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +67 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +15 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/factory_steps.rb +28 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +7 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +88 -0
- data/features/support/paths.rb +48 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +155 -79
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +4 -15
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +129 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments.rb +73 -0
- data/lib/active_admin/comments/comment.rb +15 -0
- data/lib/active_admin/comments/configuration.rb +16 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/dashboards.rb +0 -2
- data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
- data/lib/active_admin/dashboards/section.rb +5 -14
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +202 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +68 -50
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/namespace.rb +102 -16
- data/lib/active_admin/renderer.rb +18 -3
- data/lib/active_admin/resource.rb +110 -9
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource_controller.rb +45 -260
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +53 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +142 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +38 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +8 -47
- data/lib/active_admin/stylesheets/active_admin.scss +418 -0
- data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
- data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
- data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
- data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers.rb +17 -100
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
- data/lib/active_admin/view_helpers/form_helper.rb +12 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
- data/lib/active_admin/view_helpers/table_helper.rb +12 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/columns.rb +49 -0
- data/lib/active_admin/views/components/paginated_collection.rb +74 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +64 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/table_for.rb +174 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +37 -0
- data/lib/active_admin/views/index_as_block.rb +24 -0
- data/lib/active_admin/views/index_as_blog.rb +89 -0
- data/lib/active_admin/views/index_as_grid.rb +49 -0
- data/lib/active_admin/views/index_as_table.rb +73 -0
- data/lib/active_admin/views/pages/base.rb +138 -0
- data/lib/active_admin/views/pages/dashboard.rb +61 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +64 -0
- data/lib/active_admin/views/pages/new.rb +27 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +52 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
- data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
- data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
- data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
- data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
- data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
- data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
- data/lib/generators/active_admin/install/install_generator.rb +18 -3
- data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
- data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
- data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
- data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
- data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/index_as_table_spec.rb +0 -119
- data/spec/integration/layout_spec.rb +3 -37
- data/spec/spec_helper.rb +89 -50
- data/spec/support/integration_example_group.rb +37 -0
- data/spec/support/rails_template.rb +21 -9
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +28 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +19 -7
- data/spec/unit/action_items_spec.rb +16 -30
- data/spec/unit/active_admin_spec.rb +10 -22
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +185 -0
- data/spec/unit/auto_link_spec.rb +38 -0
- data/spec/unit/belongs_to_spec.rb +44 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +53 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/components/attributes_table_spec.rb +100 -0
- data/spec/unit/components/columns_spec.rb +75 -0
- data/spec/unit/components/panel_spec.rb +31 -0
- data/spec/unit/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +10 -17
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +99 -77
- data/spec/unit/form_builder_spec.rb +69 -69
- data/spec/unit/namespace_spec.rb +61 -3
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +40 -1
- data/spec/unit/renderer_spec.rb +8 -0
- data/spec/unit/resource_controller_spec.rb +105 -6
- data/spec/unit/resource_spec.rb +78 -11
- data/spec/unit/routing_spec.rb +82 -6
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +24 -2
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +268 -82
- data/.gitignore +0 -25
- data/active_admin.gemspec +0 -22
- data/lib/active_admin/action_builder.rb +0 -60
- data/lib/active_admin/breadcrumbs.rb +0 -26
- data/lib/active_admin/dashboards/renderer.rb +0 -45
- data/lib/active_admin/dashboards/section_renderer.rb +0 -28
- data/lib/active_admin/filters.rb +0 -189
- data/lib/active_admin/pages.rb +0 -11
- data/lib/active_admin/pages/base.rb +0 -92
- data/lib/active_admin/pages/edit.rb +0 -21
- data/lib/active_admin/pages/index.rb +0 -58
- data/lib/active_admin/pages/index/blog.rb +0 -65
- data/lib/active_admin/pages/index/table.rb +0 -48
- data/lib/active_admin/pages/index/thumbnails.rb +0 -40
- data/lib/active_admin/pages/new.rb +0 -21
- data/lib/active_admin/pages/show.rb +0 -54
- data/lib/active_admin/table_builder.rb +0 -162
- data/lib/active_admin/tabs_renderer.rb +0 -39
- data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
- data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
- data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
- data/spec/integration/index_as_blog_spec.rb +0 -65
- data/spec/integration/index_as_thumbnails_spec.rb +0 -43
- data/spec/integration/new_view_spec.rb +0 -52
- data/spec/integration/show_view_spec.rb +0 -91
- data/spec/unit/sidebar_spec.rb +0 -96
- 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
|
data/spec/unit/sidebar_spec.rb
DELETED
@@ -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
|