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,88 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin, "Routing" do
|
|
4
|
+
|
|
5
|
+
before :each do
|
|
6
|
+
load_defaults!
|
|
7
|
+
reload_routes!
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
include Rails.application.routes.url_helpers
|
|
11
|
+
|
|
12
|
+
describe "dashboard" do
|
|
13
|
+
context "when in admin namespace" do
|
|
14
|
+
it "should route the admin dashboard" do
|
|
15
|
+
admin_dashboard_path.should == "/admin"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
context "when in root namespace" do
|
|
19
|
+
before(:each) do
|
|
20
|
+
load_resources { ActiveAdmin.register(Post, :namespace => false) }
|
|
21
|
+
end
|
|
22
|
+
it "should route the root dashboard" do
|
|
23
|
+
dashboard_path.should == "/"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "standard resources" do
|
|
29
|
+
context "when in admin namespace" do
|
|
30
|
+
it "should route the index path" do
|
|
31
|
+
admin_posts_path.should == "/admin/posts"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should route the show path" do
|
|
35
|
+
admin_post_path(1).should == "/admin/posts/1"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should route the new path" do
|
|
39
|
+
new_admin_post_path.should == "/admin/posts/new"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should route the edit path" do
|
|
43
|
+
edit_admin_post_path(1).should == "/admin/posts/1/edit"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "when in root namespace" do
|
|
48
|
+
before(:each) do
|
|
49
|
+
load_resources { ActiveAdmin.register(Post, :namespace => false) }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should route the index path" do
|
|
53
|
+
posts_path.should == "/posts"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should route the show path" do
|
|
57
|
+
post_path(1).should == "/posts/1"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should route the new path" do
|
|
61
|
+
new_post_path.should == "/posts/new"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should route the edit path" do
|
|
65
|
+
edit_post_path(1).should == "/posts/1/edit"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe "belongs to resource" do
|
|
71
|
+
it "should route the nested index path" do
|
|
72
|
+
admin_user_posts_path(1).should == "/admin/users/1/posts"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should route the nested show path" do
|
|
76
|
+
admin_user_post_path(1,2).should == "/admin/users/1/posts/2"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should route the nested new path" do
|
|
80
|
+
new_admin_user_post_path(1).should == "/admin/users/1/posts/new"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should route the nested edit path" do
|
|
84
|
+
edit_admin_user_post_path(1,2).should == "/admin/users/1/posts/2/edit"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Sass::Helpers do
|
|
4
|
+
|
|
5
|
+
include ActiveAdmin::Sass::Helpers
|
|
6
|
+
|
|
7
|
+
context "when not using the asset pipeline" do
|
|
8
|
+
|
|
9
|
+
before(:all)do
|
|
10
|
+
@actual_rails_version = Rails::VERSION::MINOR
|
|
11
|
+
silence_warnings { Rails::VERSION::MINOR = 0 }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after(:all) do
|
|
15
|
+
silence_warnings { Rails::VERSION::MINOR = @actual_rails_version }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should generate an image asset path to /images/active_admin" do
|
|
19
|
+
active_admin_image_path(Sass::Script::String.new('test.jpg')).should ==
|
|
20
|
+
Sass::Script::String.new("/images/active_admin/test.jpg", true)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context "when using the asset pipeline" do
|
|
26
|
+
before(:all)do
|
|
27
|
+
@actual_rails_version = Rails::VERSION::MINOR
|
|
28
|
+
silence_warnings { Rails::VERSION::MINOR = 1 }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
after(:all) do
|
|
32
|
+
silence_warnings { Rails::VERSION::MINOR = @actual_rails_version }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
before do
|
|
36
|
+
assets = mock(:enabled => true)
|
|
37
|
+
Rails.application.config.stub!(:assets => assets)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should call the sass-rails asset helper" do
|
|
41
|
+
self.should_receive(:asset_path).with(Sass::Script::String.new("active_admin/test.jpg"), Sass::Script::String.new('image'))
|
|
42
|
+
active_admin_image_path(::Sass::Script::String.new('test.jpg'))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Scope do
|
|
4
|
+
|
|
5
|
+
describe "creating a scope" do
|
|
6
|
+
subject{ scope }
|
|
7
|
+
|
|
8
|
+
context "when just a scope method" do
|
|
9
|
+
let(:scope) { ActiveAdmin::Scope.new :published }
|
|
10
|
+
its(:name) { should == "Published"}
|
|
11
|
+
its(:id) { should == "published"}
|
|
12
|
+
its(:scope_method) { should == :published }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when a name and scope method" do
|
|
16
|
+
let(:scope) { ActiveAdmin::Scope.new "My Scope", :scope_method }
|
|
17
|
+
its(:name) { should == "My Scope"}
|
|
18
|
+
its(:id) { should == "my_scope"}
|
|
19
|
+
its(:scope_method) { should == :scope_method }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "when a name and scope block" do
|
|
23
|
+
let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
|
|
24
|
+
its(:name) { should == "My Scope"}
|
|
25
|
+
its(:id) { should == "my_scope"}
|
|
26
|
+
its(:scope_method) { should == nil }
|
|
27
|
+
its(:scope_block) { should be_a(Proc)}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::TabsRenderer do
|
|
4
|
+
|
|
5
|
+
let(:renderer){ ActiveAdmin::Views::TabsRenderer.new(mock_action_view) }
|
|
6
|
+
let(:menu){ ActiveAdmin::Menu.new }
|
|
7
|
+
let(:html){ renderer.to_html(menu) }
|
|
8
|
+
|
|
9
|
+
# Generate a menu to use
|
|
10
|
+
before do
|
|
11
|
+
menu.add "Blog Posts", "/admin/blog-posts"
|
|
12
|
+
menu.add "Reports", "/admin/reports"
|
|
13
|
+
reports = menu["Reports"]
|
|
14
|
+
reports.add "A Sub Reports", "/admin/a-sub-reports"
|
|
15
|
+
reports.add "B Sub Reports", "/admin/b-sub-reports"
|
|
16
|
+
menu.add "Administration", "/admin/administration"
|
|
17
|
+
administration = menu["Administration"]
|
|
18
|
+
administration.add "User administration", '/admin/user-administration', 10, :if => proc { false }
|
|
19
|
+
menu.add "Management", "#"
|
|
20
|
+
management = menu["Management"]
|
|
21
|
+
management.add "Order management", '/admin/order-management', 10, :if => proc { false }
|
|
22
|
+
management.add "Bill management", '/admin/bill-management', 10, :if => :admin_logged_in?
|
|
23
|
+
|
|
24
|
+
renderer.stub!(:admin_logged_in?).and_return(false)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should generate a ul" do
|
|
28
|
+
html.should have_tag("ul")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should generate an li for each item" do
|
|
32
|
+
html.should have_tag("li", :parent => { :tag => "ul" })
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should generate a link for each item" do
|
|
36
|
+
html.should have_tag("a", "Blog Posts", :attributes => { :href => '/admin/blog-posts' })
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should generate a " do
|
|
40
|
+
html.should have_tag("a", "Blog Posts", :attributes => { :href => '/admin/blog-posts' })
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should generate a nested list for children" do
|
|
44
|
+
html.should have_tag("ul", :parent => { :tag => "li" })
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should generate a nested list with li for each child" do
|
|
48
|
+
html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "a_sub_reports"})
|
|
49
|
+
html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "b_sub_reports"})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should not generate a link for user administration" do
|
|
53
|
+
html.should_not have_tag("a", "User administration", :attributes => { :href => '/admin/user-administration' })
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should generate the administration parent menu" do
|
|
57
|
+
html.should have_tag("a", "Administration", :attributes => { :href => '/admin/administration' })
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should not generate a link for order management" do
|
|
61
|
+
html.should_not have_tag("a", "Order management", :attributes => { :href => '/admin/order-management' })
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should not generate a link for bill management" do
|
|
65
|
+
html.should_not have_tag("a", "Bill management", :attributes => { :href => '/admin/bill-management' })
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should not generate the management parent menu" do
|
|
69
|
+
html.should_not have_tag("a", "Management", :attributes => { :href => '#' })
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe "marking current item" do
|
|
73
|
+
it "should add the 'current' class to the li" do
|
|
74
|
+
renderer.instance_variable_set :@current_tab, "Blog Posts"
|
|
75
|
+
html.should have_tag("li", :attributes => { :class => "current" })
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
|
|
79
|
+
renderer.instance_variable_set :@current_tab, "Reports/A Sub Reports"
|
|
80
|
+
html.should have_tag("li", :attributes => { :id => "reports", :class => "current has_nested" })
|
|
81
|
+
html.should have_tag("li", :attributes => { :id => "a_sub_reports", :class => "current" })
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
def it_should_have_view(key, value)
|
|
4
|
+
it "should have #{value} for view key '#{key}'" do
|
|
5
|
+
subject.send(key).should == value
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe ActiveAdmin::ViewFactory do
|
|
10
|
+
|
|
11
|
+
it_should_have_view :global_navigation, ActiveAdmin::Views::TabsRenderer
|
|
12
|
+
it_should_have_view :action_items, ActiveAdmin::Views::ActionItems
|
|
13
|
+
it_should_have_view :header, ActiveAdmin::Views::HeaderRenderer
|
|
14
|
+
it_should_have_view :blank_slate, ActiveAdmin::Views::BlankSlate
|
|
15
|
+
|
|
16
|
+
it_should_have_view :dashboard_page, ActiveAdmin::Views::Pages::Dashboard
|
|
17
|
+
it_should_have_view :layout, ActiveAdmin::Views::Pages::Layout
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -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,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::BlankSlate do
|
|
4
|
+
include Arbre::HTML
|
|
5
|
+
|
|
6
|
+
let(:assigns){ {} }
|
|
7
|
+
|
|
8
|
+
let(:helpers) { action_view }
|
|
9
|
+
|
|
10
|
+
describe "#blank_slate" do
|
|
11
|
+
subject { blank_slate("Posts", "/posts/new") }
|
|
12
|
+
|
|
13
|
+
its(:tag_name) { should eql 'div' }
|
|
14
|
+
its(:class_list) { should include('blank_slate_container') }
|
|
15
|
+
|
|
16
|
+
describe "content" do
|
|
17
|
+
subject { blank_slate("Posts", "/posts/new").content }
|
|
18
|
+
|
|
19
|
+
context "when url passed in" do
|
|
20
|
+
it { should include '<span class="blank_slate">There are no Posts yet. <a href="/posts/new">Create one</a></span>' }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when no url passed in" do
|
|
24
|
+
subject { blank_slate("Posts").content }
|
|
25
|
+
|
|
26
|
+
it { should include '<span class="blank_slate">There are no Posts yet.</span>' }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
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
|