nsm-activeadmin 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.rdoc +76 -0
- data/Gemfile +39 -0
- data/LICENSE +25 -0
- data/README.rdoc +487 -0
- data/Rakefile +27 -0
- data/activeadmin.gemspec +28 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +400 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +256 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +110 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +100 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +40 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +38 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +8 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/1-general-configuration.md +52 -0
- data/docs/2-resource-customization.md +35 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +74 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +22 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -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 +81 -0
- data/features/index/index_blank_slate.feature +55 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +26 -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 +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +90 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +74 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +228 -0
- 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 +14 -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 +137 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -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/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +109 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/settings.rb +63 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +39 -0
- data/lib/active_admin/locales/it.yml +39 -0
- data/lib/active_admin/locales/pt-BR.yml +36 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +151 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +36 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +103 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +144 -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 +18 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +40 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -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 +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -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/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/blank_slate.rb +33 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +70 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +53 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +148 -0
- data/lib/active_admin/views/pages/base.rb +155 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +74 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +58 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +93 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -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/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +45 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +157 -0
- data/spec/support/detect_rails_version.rb +11 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/html/context_spec.rb +22 -0
- 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 +210 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- 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 +182 -0
- data/spec/unit/form_builder_spec.rb +239 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +28 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +56 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +260 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +85 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +31 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +31 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +81 -0
- data/spec/unit/views/components/table_for_spec.rb +130 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +49 -0
- data/tasks/yard.rake +6 -0
- metadata +510 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Breadcrumbs" do
|
|
4
|
+
|
|
5
|
+
include ActiveAdmin::ViewHelpers
|
|
6
|
+
|
|
7
|
+
describe "generating a trail from paths" do
|
|
8
|
+
|
|
9
|
+
# Mock our params
|
|
10
|
+
def params; {}; end
|
|
11
|
+
# Mock link to and return a hash
|
|
12
|
+
def link_to(name, url); {:name => name, :path => url}; end
|
|
13
|
+
|
|
14
|
+
let(:trail) { breadcrumb_links(path) }
|
|
15
|
+
|
|
16
|
+
context "when request '/admin'" do
|
|
17
|
+
let(:path){ "/admin" }
|
|
18
|
+
|
|
19
|
+
it "should not have any items" do
|
|
20
|
+
trail.size.should == 0
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "when path '/admin/posts'" do
|
|
25
|
+
let(:path) { "/admin/posts" }
|
|
26
|
+
|
|
27
|
+
it "should have one item" do
|
|
28
|
+
trail.size.should == 1
|
|
29
|
+
end
|
|
30
|
+
it "should have a link to /admin" do
|
|
31
|
+
trail[0][:name].should == "Admin"
|
|
32
|
+
trail[0][:path].should == "/admin"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "when path '/admin/posts/1'" do
|
|
37
|
+
let(:path) { "/admin/posts/1" }
|
|
38
|
+
|
|
39
|
+
it "should have 2 items" do
|
|
40
|
+
trail.size.should == 2
|
|
41
|
+
end
|
|
42
|
+
it "should have a link to /admin" do
|
|
43
|
+
trail[0][:name].should == "Admin"
|
|
44
|
+
trail[0][:path].should == "/admin"
|
|
45
|
+
end
|
|
46
|
+
it "should have a link to /admin/posts" do
|
|
47
|
+
trail[1][:name].should == "Posts"
|
|
48
|
+
trail[1][:path].should == "/admin/posts"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "when path '/admin/posts/1/comments'" do
|
|
53
|
+
let(:path) { "/admin/posts/1/comments" }
|
|
54
|
+
|
|
55
|
+
it "should have 3 items" do
|
|
56
|
+
trail.size.should == 3
|
|
57
|
+
end
|
|
58
|
+
it "should have a link to /admin" do
|
|
59
|
+
trail[0][:name].should == "Admin"
|
|
60
|
+
trail[0][:path].should == "/admin"
|
|
61
|
+
end
|
|
62
|
+
it "should have a link to /admin/posts" do
|
|
63
|
+
trail[1][:name].should == "Posts"
|
|
64
|
+
trail[1][:path].should == "/admin/posts"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "when Post.find(1) doesn't exist" do
|
|
68
|
+
it "should have a link to /admin/posts/1" do
|
|
69
|
+
trail[2][:name].should == "1"
|
|
70
|
+
trail[2][:path].should == "/admin/posts/1"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context "when Post.find(1) does exist" do
|
|
75
|
+
before do
|
|
76
|
+
Post.stub!(:find).and_return{ mock(:display_name => "Hello World") }
|
|
77
|
+
end
|
|
78
|
+
it "should have a link to /admin/posts/1 using display name" do
|
|
79
|
+
trail[2][:name].should == "Hello World"
|
|
80
|
+
trail[2][:path].should == "/admin/posts/1"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "when path '/admin/posts/1/coments/1'" do
|
|
86
|
+
let(:path) { "/admin/posts/1/comments/1" }
|
|
87
|
+
|
|
88
|
+
it "should have 4 items" do
|
|
89
|
+
trail.size.should == 4
|
|
90
|
+
end
|
|
91
|
+
it "should have a link to /admin" do
|
|
92
|
+
trail[0][:name].should == "Admin"
|
|
93
|
+
trail[0][:path].should == "/admin"
|
|
94
|
+
end
|
|
95
|
+
it "should have a link to /admin/posts" do
|
|
96
|
+
trail[1][:name].should == "Posts"
|
|
97
|
+
trail[1][:path].should == "/admin/posts"
|
|
98
|
+
end
|
|
99
|
+
it "should have a link to /admin/posts/1" do
|
|
100
|
+
trail[2][:name].should == "1"
|
|
101
|
+
trail[2][:path].should == "/admin/posts/1"
|
|
102
|
+
end
|
|
103
|
+
it "should have a link to /admin/posts/1/comments" do
|
|
104
|
+
trail[3][:name].should == "Comments"
|
|
105
|
+
trail[3][:path].should == "/admin/posts/1/comments"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Comments" do
|
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
5
|
+
|
|
6
|
+
describe "Configuration" do
|
|
7
|
+
it "should have an array of namespaces which allow comments" do
|
|
8
|
+
application.allow_comments_in.should be_an_instance_of(Array)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should allow comments in the default namespace by default" do
|
|
12
|
+
application.allow_comments_in.should include(application.default_namespace)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe ActiveAdmin::Comment do
|
|
17
|
+
describe "Associations and Validations" do
|
|
18
|
+
it { should belong_to :resource }
|
|
19
|
+
it { should belong_to :author }
|
|
20
|
+
|
|
21
|
+
it { should validate_presence_of :resource_id }
|
|
22
|
+
it { should validate_presence_of :resource_type }
|
|
23
|
+
it { should validate_presence_of :body }
|
|
24
|
+
it { should validate_presence_of :namespace }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe ActiveAdmin::Comments::NamespaceHelper do
|
|
29
|
+
describe "#comments?" do
|
|
30
|
+
it "should have comments if the namespace is in the settings" do
|
|
31
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
32
|
+
ns.comments?.should be_true
|
|
33
|
+
end
|
|
34
|
+
it "should not have comments if the namespace is not in the settings" do
|
|
35
|
+
ns = ActiveAdmin::Namespace.new(application, :not_in_comments)
|
|
36
|
+
ns.comments?.should be_false
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe ActiveAdmin::Comments::ResourceHelper do
|
|
42
|
+
it "should add an attr_accessor :comments to ActiveAdmin::Resource" do
|
|
43
|
+
ns = ActiveAdmin::Namespace.new(application, :admin)
|
|
44
|
+
resource = ActiveAdmin::Resource.new(ns, Post)
|
|
45
|
+
resource.comments.should be_nil
|
|
46
|
+
resource.comments = true
|
|
47
|
+
resource.comments.should be_true
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should not have comment if set to false by in allow_comments_in" do
|
|
51
|
+
ns = ActiveAdmin::Namespace.new(application, application.default_namespace)
|
|
52
|
+
resource = ActiveAdmin::Resource.new(ns, Post)
|
|
53
|
+
resource.comments = false
|
|
54
|
+
resource.comments?.should be_false
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class MockComponentClass < ActiveAdmin::Component; end
|
|
4
|
+
|
|
5
|
+
describe ActiveAdmin::Component do
|
|
6
|
+
|
|
7
|
+
let(:component_class){ MockComponentClass }
|
|
8
|
+
let(:component){ component_class.new }
|
|
9
|
+
|
|
10
|
+
it "should be a subclass of an html div" do
|
|
11
|
+
ActiveAdmin::Component.ancestors.should include(Arbre::HTML::Div)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should render to a div, even as a subclass" do
|
|
15
|
+
component.tag_name.should == 'div'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin, "filters" do
|
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
5
|
+
|
|
6
|
+
describe "before filters" do
|
|
7
|
+
it "should add a new before filter to ActiveAdmin::ResourceController" do
|
|
8
|
+
ActiveAdmin::ResourceController.should_receive(:before_filter).and_return(true)
|
|
9
|
+
application.before_filter :my_filter, :only => :show
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "skip before filters" do
|
|
14
|
+
it "should add a new skip before filter to ActiveAdmin::ResourceController" do
|
|
15
|
+
ActiveAdmin::ResourceController.should_receive(:skip_before_filter).and_return(true)
|
|
16
|
+
application.skip_before_filter :my_filter, :only => :show
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "after filters" do
|
|
21
|
+
it "should add a new after filter to ActiveAdmin::ResourceController" do
|
|
22
|
+
ActiveAdmin::ResourceController.should_receive(:after_filter).and_return(true)
|
|
23
|
+
application.after_filter :my_filter, :only => :show
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "around filters" do
|
|
28
|
+
it "should add a new around filter to ActiveAdmin::ResourceController" do
|
|
29
|
+
ActiveAdmin::ResourceController.should_receive(:around_filter).and_return(true)
|
|
30
|
+
application.around_filter :my_filter, :only => :show
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::CSVBuilder do
|
|
4
|
+
|
|
5
|
+
describe '.default_for_resource using Post' do
|
|
6
|
+
let(:csv_builder) { ActiveAdmin::CSVBuilder.default_for_resource(Post) }
|
|
7
|
+
|
|
8
|
+
it "should return a default csv_builder for Post" do
|
|
9
|
+
csv_builder.should be_a(ActiveAdmin::CSVBuilder)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
specify "the first column should be Id" do
|
|
13
|
+
csv_builder.columns.first.name.should == 'Id'
|
|
14
|
+
csv_builder.columns.first.data.should == :id
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
specify "the following columns should be content_column" do
|
|
18
|
+
csv_builder.columns[1..-1].each_with_index do |column, index|
|
|
19
|
+
column.name.should == Post.content_columns[index].name.titleize
|
|
20
|
+
column.data.should == Post.content_columns[index].name.to_sym
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'when empty' do
|
|
26
|
+
let(:builder){ ActiveAdmin::CSVBuilder.new }
|
|
27
|
+
|
|
28
|
+
it "should have no columns" do
|
|
29
|
+
builder.columns.should == []
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "with a symbol column (:title)" do
|
|
34
|
+
let(:builder) do
|
|
35
|
+
ActiveAdmin::CSVBuilder.new do
|
|
36
|
+
column :title
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should have one colum" do
|
|
41
|
+
builder.columns.size.should == 1
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe "the column" do
|
|
45
|
+
let(:column){ builder.columns.first }
|
|
46
|
+
|
|
47
|
+
it "should have a name of 'Title'" do
|
|
48
|
+
column.name.should == "Title"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should have the data :title" do
|
|
52
|
+
column.data.should == :title
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "with a block and title" do
|
|
58
|
+
let(:builder) do
|
|
59
|
+
ActiveAdmin::CSVBuilder.new do
|
|
60
|
+
column "My title" do
|
|
61
|
+
# nothing
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should have one colum" do
|
|
67
|
+
builder.columns.size.should == 1
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe "the column" do
|
|
71
|
+
let(:column){ builder.columns.first }
|
|
72
|
+
|
|
73
|
+
it "should have a name of 'My title'" do
|
|
74
|
+
column.name.should == "My title"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should have the data :title" do
|
|
78
|
+
column.data.should be_an_instance_of(Proc)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require '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
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Dashboards::Section do
|
|
4
|
+
|
|
5
|
+
def section(options = {})
|
|
6
|
+
name = options.delete(:name) || "Recent Posts"
|
|
7
|
+
ActiveAdmin::Dashboards::Section.new(:admin, name, options){ }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "accessors" do
|
|
11
|
+
it "should have a namespace" do
|
|
12
|
+
section.namespace.should == :admin
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should have a block" do
|
|
16
|
+
section.block.class.should == Proc
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should have a name" do
|
|
20
|
+
section.name.should == 'Recent Posts'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "priority" do
|
|
25
|
+
context "when not set" do
|
|
26
|
+
subject{ section.priority }
|
|
27
|
+
it { should == ActiveAdmin::Dashboards::Section::DEFAULT_PRIORITY }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when set" do
|
|
31
|
+
subject{ section(:priority => 1).priority }
|
|
32
|
+
it { should == 1 }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
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
|
+
|
|
46
|
+
describe "sorting sections" do
|
|
47
|
+
it "should sort by priority then alpha" do
|
|
48
|
+
s1 = section :name => "Woot"
|
|
49
|
+
s2 = section :name => :Alpha
|
|
50
|
+
s3 = section :name => "Zulu", :priority => 1
|
|
51
|
+
s4 = section :name => "Beta", :priority => 100
|
|
52
|
+
[s1,s2,s3,s4].sort.should == [s3, s2, s1, s4]
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Dashboards do
|
|
4
|
+
|
|
5
|
+
after(:each) do
|
|
6
|
+
ActiveAdmin::Dashboards.clear_all_sections!
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "adding sections" do
|
|
10
|
+
before do
|
|
11
|
+
ActiveAdmin::Dashboards.clear_all_sections!
|
|
12
|
+
ActiveAdmin::Dashboards.add_section('Recent Posts')
|
|
13
|
+
end
|
|
14
|
+
it "should add a new section namespaced" do
|
|
15
|
+
ActiveAdmin::Dashboards.sections[:admin].first.should be_an_instance_of(ActiveAdmin::Dashboards::Section)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "adding sections using the build syntax" do
|
|
20
|
+
before do
|
|
21
|
+
ActiveAdmin::Dashboards.clear_all_sections!
|
|
22
|
+
ActiveAdmin::Dashboards.build do
|
|
23
|
+
section "Recent Posts" do
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should add a new section" do
|
|
29
|
+
ActiveAdmin::Dashboards.sections[:admin].first.should be_an_instance_of(ActiveAdmin::Dashboards::Section)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "clearing all sections" do
|
|
34
|
+
before do
|
|
35
|
+
ActiveAdmin::Dashboards.add_section('Recent Posts')
|
|
36
|
+
end
|
|
37
|
+
it "should clear all sections" do
|
|
38
|
+
ActiveAdmin::Dashboards.clear_all_sections!
|
|
39
|
+
ActiveAdmin::Dashboards.sections.keys.should be_empty
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "finding namespaced sections" do
|
|
44
|
+
context "when the namespace exists" do
|
|
45
|
+
before do
|
|
46
|
+
ActiveAdmin::Dashboards.add_section('Recent Posts')
|
|
47
|
+
end
|
|
48
|
+
it "should return an array of sections" do
|
|
49
|
+
ActiveAdmin::Dashboards.sections_for_namespace(:admin).should_not be_empty
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "when the namespace does not exists" do
|
|
54
|
+
it "should return an empty array" do
|
|
55
|
+
ActiveAdmin::Dashboards.sections_for_namespace(:not_a_namespace).should be_empty
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|