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
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Views::AttributesTable do
|
4
|
+
include Arbre::HTML
|
5
|
+
let(:assigns){ {} }
|
6
|
+
|
7
|
+
describe "creating with the dsl" do
|
8
|
+
let(:helpers) { action_view }
|
9
|
+
|
10
|
+
let(:post) do
|
11
|
+
post = Post.new :title => "Hello World", :body => nil
|
12
|
+
post.stub!(:id){ 1 }
|
13
|
+
post.stub!(:new_record?){ false }
|
14
|
+
post
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
# Loop through a few different ways to make the same table
|
19
|
+
# and ensure that they produce the same results
|
20
|
+
{
|
21
|
+
"when attributes are passed in to the builder methods" => proc {
|
22
|
+
attributes_table_for post, :id, :title, :body
|
23
|
+
},
|
24
|
+
"when attributes are built using the block" => proc {
|
25
|
+
attributes_table_for post do
|
26
|
+
rows :id, :title, :body
|
27
|
+
end
|
28
|
+
},
|
29
|
+
"when each attribute is passed in by itself" => proc {
|
30
|
+
attributes_table_for post do
|
31
|
+
row :id
|
32
|
+
row :title
|
33
|
+
row :body
|
34
|
+
end
|
35
|
+
},
|
36
|
+
"when you create each row with a custom block" => proc {
|
37
|
+
attributes_table_for post do
|
38
|
+
row("Id") { post.id }
|
39
|
+
row("Title"){ post.title }
|
40
|
+
row("Body") { post.body }
|
41
|
+
end
|
42
|
+
}
|
43
|
+
|
44
|
+
}.each do |context_title, table_decleration|
|
45
|
+
context context_title do
|
46
|
+
let(:table) { instance_eval &table_decleration }
|
47
|
+
|
48
|
+
it "should render a div wrapper with the class '.attributes_table'" do
|
49
|
+
table.tag_name.should == 'div'
|
50
|
+
table.attr(:class).should include('attributes_table')
|
51
|
+
end
|
52
|
+
it "should add id and type class" do
|
53
|
+
table.class_names.should include("post")
|
54
|
+
table.id.should == "attributes_table_post_1"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should render 3 rows" do
|
58
|
+
table.find_by_tag("tr").size.should == 3
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "rendering the rows" do
|
62
|
+
[
|
63
|
+
["Id" , "2"],
|
64
|
+
["Title" , "Hello World"],
|
65
|
+
["Body" , "<span class=\"empty\">Empty</span>"]
|
66
|
+
].each_with_index do |set, i|
|
67
|
+
let(:title){ set[0] }
|
68
|
+
let(:content){ set[1] }
|
69
|
+
let(:current_row){ table.find_by_tag("tr")[i] }
|
70
|
+
|
71
|
+
describe "for #{set[0]}" do
|
72
|
+
it "should have the title '#{set[0]}'" do
|
73
|
+
current_row.find_by_tag("th").first.content.should == title
|
74
|
+
end
|
75
|
+
it "should have the content '#{set[1]}'" do
|
76
|
+
current_row.find_by_tag("td").first.content.chomp.strip.should == content
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end # describe rendering rows
|
81
|
+
|
82
|
+
end
|
83
|
+
end # describe dsl styles
|
84
|
+
|
85
|
+
it "should allow html content inside the attributes table" do
|
86
|
+
table = attributes_table_for(post) do
|
87
|
+
row("ID"){ span(post.id, :class => 'id') }
|
88
|
+
end
|
89
|
+
table.find_by_tag("td").first.content.chomp.strip.should == "<span class=\"id\">1</span>"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should check if an association exists when an attribute has id in it" do
|
93
|
+
post.author = User.new(:username => "john_doe")
|
94
|
+
table = attributes_table_for post, :author_id
|
95
|
+
table.find_by_tag("td").first.content.should == "john_doe"
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Views::Columns do
|
4
|
+
include Arbre::HTML
|
5
|
+
let(:assigns){ {} }
|
6
|
+
|
7
|
+
describe "Rendering one column" do
|
8
|
+
let(:cols) do
|
9
|
+
columns do
|
10
|
+
column { span "Hello World" }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the class .columns" do
|
15
|
+
cols.class_list.should include("columns")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have one column" do
|
19
|
+
cols.children.size.should == 1
|
20
|
+
cols.children.first.class_list.should include("column")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have one column with the width 100%" do
|
24
|
+
cols.children.first.attr(:style).should include("width: 100%")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "Rendering two columns" do
|
29
|
+
let(:cols) do
|
30
|
+
columns do
|
31
|
+
column { span "Hello World" }
|
32
|
+
column { span "Hello World" }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should have two columns" do
|
37
|
+
cols.children.size.should == 2
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should have a first column with width 49% and margin 2%" do
|
41
|
+
cols.children.first.attr(:style).should == "width: 49%; margin-right: 2%;"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have a second column with width 49% and no right margin" do
|
45
|
+
cols.children.last.attr(:style).should == "width: 49%;"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "Rendering four columns" do
|
50
|
+
let(:cols) do
|
51
|
+
columns do
|
52
|
+
column { span "Hello World" }
|
53
|
+
column { span "Hello World" }
|
54
|
+
column { span "Hello World" }
|
55
|
+
column { span "Hello World" }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should have four columns" do
|
60
|
+
cols.children.size.should == 4
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
(0..2).to_a.each do |index|
|
65
|
+
it "should have column #{index + 1} with width 49% and margin 2%" do
|
66
|
+
cols.children[index].attr(:style).should == "width: 23.5%; margin-right: 2%;"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should have column 4 with width 49% and no margin" do
|
71
|
+
cols.children[3].attr(:style).should == "width: 23.5%;"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Views::Panel do
|
4
|
+
include Arbre::HTML
|
5
|
+
let(:assigns){ {} }
|
6
|
+
|
7
|
+
let(:helpers) { action_view }
|
8
|
+
|
9
|
+
let(:the_panel) do
|
10
|
+
panel "My Title" do
|
11
|
+
span("Hello World")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a title h3" do
|
16
|
+
the_panel.find_by_tag("h3").first.content.should == "My Title"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have a contents div" do
|
20
|
+
the_panel.find_by_tag("div").first.class_list.should include("panel_contents")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should add children to the contents div" do
|
24
|
+
the_panel.find_by_tag("span").first.parent.should == the_panel.find_by_tag("div").first
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should set the icon" do
|
28
|
+
panel("Title", :icon => :arrow_down).find_by_tag("h3").first.content.should include("span class=\"icon")
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Views::SidebarSection do
|
4
|
+
include Arbre::HTML
|
5
|
+
let(:assigns){ {} }
|
6
|
+
|
7
|
+
let(:section) do
|
8
|
+
ActiveAdmin::Sidebar::Section.new(:help) do
|
9
|
+
span "Help Me"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:html) do
|
14
|
+
sidebar_section(section)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have a title h3" do
|
18
|
+
html.find_by_tag("h3").first.content.should == "Help"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have the class of 'sidebar_section'" do
|
22
|
+
html.class_list.should include("sidebar_section")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have an id based on the title" do
|
26
|
+
html.id.should == "help_sidebar_section"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a contents div" do
|
30
|
+
html.find_by_tag("div").first.class_list.should include("panel_contents")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should add children to the contents div" do
|
34
|
+
html.find_by_tag("span").first.parent.should == html.find_by_tag("div").first
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Views::TableFor do
|
4
|
+
describe "creating with the dsl" do
|
5
|
+
include Arbre::HTML
|
6
|
+
|
7
|
+
let(:assigns){ {} }
|
8
|
+
let(:helpers){ mock_action_view }
|
9
|
+
|
10
|
+
let(:collection) do
|
11
|
+
[Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
|
12
|
+
end
|
13
|
+
|
14
|
+
context "when creating a column with a symbol" do
|
15
|
+
let(:table) do
|
16
|
+
table_for(collection) do
|
17
|
+
column :title
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should create a table header based on the symbol" do
|
22
|
+
table.find_by_tag("th").first.content.should == "Title"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should create a table row for each element in the collection" do
|
26
|
+
table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
|
27
|
+
end
|
28
|
+
|
29
|
+
["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
|
30
|
+
it "should create a cell with #{content}" do
|
31
|
+
table.find_by_tag("td")[index].content.should == content
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "when creating many columns with symbols" do
|
37
|
+
let(:table) do
|
38
|
+
table_for(collection) do
|
39
|
+
column :title
|
40
|
+
column :created_at
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should create a table header based on the symbol" do
|
45
|
+
table.find_by_tag("th").first.content.should == "Title"
|
46
|
+
table.find_by_tag("th").last.content.should == "Created At"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should create a table row for each element in the collection" do
|
50
|
+
table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should create a cell for each column" do
|
54
|
+
table.find_by_tag("td").size.should == 6
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "when creating a column with block content" do
|
59
|
+
let(:table) do
|
60
|
+
table_for(collection) do
|
61
|
+
column :title do |post|
|
62
|
+
span(post.title)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
[ "<span>First Post</span>",
|
68
|
+
"<span>Second Post</span>",
|
69
|
+
"<span>Third Post</span>" ].each_with_index do |content, index|
|
70
|
+
it "should create a cell with #{content}" do
|
71
|
+
table.find_by_tag("td")[index].content.strip.should == content
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "when creating a column with multiple block content" do
|
77
|
+
let(:table) do
|
78
|
+
table_for(collection) do
|
79
|
+
column :title do |post|
|
80
|
+
span(post.title)
|
81
|
+
span(post.title)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
3.times do |index|
|
87
|
+
it "should create a cell with multiple elements in row #{index}" do
|
88
|
+
table.find_by_tag("td")[index].find_by_tag("span").size.should == 2
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "column sorting" do
|
95
|
+
|
96
|
+
def build_column(*args, &block)
|
97
|
+
ActiveAdmin::Views::TableFor::Column.new(*args, &block)
|
98
|
+
end
|
99
|
+
|
100
|
+
subject { table_column }
|
101
|
+
|
102
|
+
context "when default" do
|
103
|
+
let(:table_column){ build_column(:username) }
|
104
|
+
it { should be_sortable }
|
105
|
+
its(:sort_key){ should == "username" }
|
106
|
+
end
|
107
|
+
|
108
|
+
context "when a block given with no sort key" do
|
109
|
+
let(:table_column){ build_column("Username"){ } }
|
110
|
+
it { should_not be_sortable }
|
111
|
+
end
|
112
|
+
|
113
|
+
context "when a block given with a sort key" do
|
114
|
+
let(:table_column){ build_column("Username", :sortable => :username){ } }
|
115
|
+
it { should be_sortable }
|
116
|
+
its(:sort_key){ should == "username" }
|
117
|
+
end
|
118
|
+
|
119
|
+
context "when :sortable => false with a symbol" do
|
120
|
+
let(:table_column){ build_column(:username, :sortable => false) }
|
121
|
+
it { should_not be_sortable }
|
122
|
+
end
|
123
|
+
|
124
|
+
context "when :sortable => false with a symbol and string" do
|
125
|
+
let(:table_column){ build_column("Username", :username, :sortable => false) }
|
126
|
+
it { should_not be_sortable }
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
|
4
|
+
module Admin
|
5
|
+
class DashboardController < ActiveAdmin::Dashboards::DashboardController
|
6
|
+
end
|
7
|
+
end
|
8
|
+
class DashboardController < ActiveAdmin::Dashboards::DashboardController; end
|
9
|
+
|
10
|
+
describe ActiveAdmin::Dashboards::DashboardController do
|
11
|
+
|
12
|
+
describe "getting the namespace name" do
|
13
|
+
subject{ controller.send :namespace }
|
14
|
+
|
15
|
+
context "when admin namespace" do
|
16
|
+
let(:controller){ Admin::DashboardController.new }
|
17
|
+
it { should == :admin }
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when root namespace" do
|
21
|
+
let(:controller){ DashboardController.new }
|
22
|
+
it { should == :root }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -21,23 +21,6 @@ describe ActiveAdmin::Dashboards::Section do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
describe "retrieving the renderer class" do
|
25
|
-
it "should return default if not set" do
|
26
|
-
section.renderer.should == ActiveAdmin::Dashboards::Section.renderers[:default]
|
27
|
-
end
|
28
|
-
it "should return a set renderer class" do
|
29
|
-
m = mock('SectionRenderer')
|
30
|
-
ActiveAdmin::Dashboards::Section.renderers[:mock] = m
|
31
|
-
section(:as => :mock).renderer.should == m
|
32
|
-
ActiveAdmin::Dashboards::Section.renderers.delete(:mock)
|
33
|
-
end
|
34
|
-
it "should raise an exception if the renderer does not exist" do
|
35
|
-
lambda{
|
36
|
-
section(:as => :woot).renderer
|
37
|
-
}.should raise_error(StandardError)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
24
|
describe "priority" do
|
42
25
|
context "when not set" do
|
43
26
|
subject{ section.priority }
|
@@ -50,6 +33,16 @@ describe ActiveAdmin::Dashboards::Section do
|
|
50
33
|
end
|
51
34
|
end
|
52
35
|
|
36
|
+
describe "icon" do
|
37
|
+
it "should set the icon" do
|
38
|
+
s = section(:icon => :my_icon)
|
39
|
+
s.icon.should == :my_icon
|
40
|
+
end
|
41
|
+
it "should be nil by default" do
|
42
|
+
section.icon.should be_nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
53
46
|
describe "sorting sections" do
|
54
47
|
it "should sort by priority then alpha" do
|
55
48
|
s1 = section :name => "Woot"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "display names" do
|
4
|
+
|
5
|
+
include ActiveAdmin::ViewHelpers::DisplayHelper
|
6
|
+
|
7
|
+
[:display_name, :full_name, :name, :username, :login, :title, :email, :to_s].each do |m|
|
8
|
+
it "should return #{m} if defined" do
|
9
|
+
r = Class.new do
|
10
|
+
define_method m do
|
11
|
+
m.to_s
|
12
|
+
end
|
13
|
+
end.new
|
14
|
+
display_name(r).should == m.to_s
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should memeoize the result for the class" do
|
19
|
+
c = Class.new do
|
20
|
+
def name
|
21
|
+
"My Name"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
display_name(c.new).should == "My Name"
|
25
|
+
ActiveAdmin.should_not_receive(:display_name_methods)
|
26
|
+
display_name(c.new).should == "My Name"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|