andrewroth_activeadmin 0.3.4
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 +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -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 +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -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/_utilities.scss +17 -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/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -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 +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -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/filters.feature +35 -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 +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -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 +96 -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 +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/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/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -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 +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -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 +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.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 +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -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 +50 -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 +105 -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 +138 -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 +45 -0
- data/lib/active_admin/scope.rb +31 -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 +17 -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 +69 -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 +57 -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 +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -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 +91 -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/tabbed_navigation.rb +94 -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 +103 -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 +46 -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/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -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/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -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 +209 -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/devise_spec.rb +66 -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 +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -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 +80 -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 +75 -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 +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -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 +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -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,41 @@
|
|
|
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 scope method is :all" do
|
|
16
|
+
let(:scope) { ActiveAdmin::Scope.new :all }
|
|
17
|
+
its(:name) { should == "All"}
|
|
18
|
+
its(:id) { should == "all"}
|
|
19
|
+
# :all does not return a chain but an array of active record
|
|
20
|
+
# instances. We set the scope_method to nil then.
|
|
21
|
+
its(:scope_method) { should == nil }
|
|
22
|
+
its(:scope_block) { should == nil }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context "when a name and scope method" do
|
|
26
|
+
let(:scope) { ActiveAdmin::Scope.new "My Scope", :scope_method }
|
|
27
|
+
its(:name) { should == "My Scope"}
|
|
28
|
+
its(:id) { should == "my_scope"}
|
|
29
|
+
its(:scope_method) { should == :scope_method }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "when a name and scope block" do
|
|
33
|
+
let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
|
|
34
|
+
its(:name) { should == "My Scope"}
|
|
35
|
+
its(:id) { should == "my_scope"}
|
|
36
|
+
its(:scope_method) { should == nil }
|
|
37
|
+
its(:scope_block) { should be_a(Proc)}
|
|
38
|
+
end
|
|
39
|
+
end # describe "creating a scope"
|
|
40
|
+
|
|
41
|
+
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::TabbedNavigation
|
|
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
|
+
|
|
5
|
+
setup_arbre_context!
|
|
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,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::BlankSlate do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
6
|
+
|
|
7
|
+
describe "#blank_slate" do
|
|
8
|
+
subject { blank_slate("There are no Posts yet. <a href=\"/posts/new\">Create one</a></span>") }
|
|
9
|
+
|
|
10
|
+
its(:tag_name) { should eql 'div' }
|
|
11
|
+
its(:class_list) { should include('blank_slate_container') }
|
|
12
|
+
|
|
13
|
+
its(:content) { should include '<span class="blank_slate">There are no Posts yet. <a href="/posts/new">Create one</a></span>' }
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::Columns do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
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,29 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::Panel do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
6
|
+
|
|
7
|
+
let(:the_panel) do
|
|
8
|
+
panel "My Title" do
|
|
9
|
+
span("Hello World")
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should have a title h3" do
|
|
14
|
+
the_panel.find_by_tag("h3").first.content.should == "My Title"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should have a contents div" do
|
|
18
|
+
the_panel.find_by_tag("div").first.class_list.should include("panel_contents")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should add children to the contents div" do
|
|
22
|
+
the_panel.find_by_tag("span").first.parent.should == the_panel.find_by_tag("div").first
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should set the icon" do
|
|
26
|
+
panel("Title", :icon => :arrow_down).find_by_tag("h3").first.content.should include("span class=\"icon")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::SidebarSection do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
6
|
+
|
|
7
|
+
let(:section) do
|
|
8
|
+
ActiveAdmin::SidebarSection.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
|