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,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module MockRegistration
|
|
4
|
+
extend ActiveAdmin::AssetRegistration
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe ActiveAdmin::AssetRegistration do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
MockRegistration.clear_stylesheets!
|
|
11
|
+
MockRegistration.clear_javascripts!
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should register a stylesheet file" do
|
|
15
|
+
MockRegistration.register_stylesheet "active_admin.css"
|
|
16
|
+
MockRegistration.stylesheets.should == ["active_admin.css"]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should clear all existing stylesheets" do
|
|
20
|
+
MockRegistration.register_stylesheet "active_admin.css"
|
|
21
|
+
MockRegistration.stylesheets.should == ["active_admin.css"]
|
|
22
|
+
MockRegistration.clear_stylesheets!
|
|
23
|
+
MockRegistration.stylesheets.should == []
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should register a javascript file" do
|
|
27
|
+
MockRegistration.register_javascript "active_admin.js"
|
|
28
|
+
MockRegistration.javascripts.should == ["active_admin.js"]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should clear all existing javascripts" do
|
|
32
|
+
MockRegistration.register_javascript "active_admin.js"
|
|
33
|
+
MockRegistration.javascripts.should == ["active_admin.js"]
|
|
34
|
+
MockRegistration.clear_javascripts!
|
|
35
|
+
MockRegistration.javascripts.should == []
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class AutoLinkMockResource
|
|
4
|
+
attr_accessor :namespace
|
|
5
|
+
def initialize(namespace)
|
|
6
|
+
@namespace = namespace
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "auto linking resources" do
|
|
11
|
+
include ActiveAdmin::ViewHelpers::ActiveAdminApplicationHelper
|
|
12
|
+
include ActiveAdmin::ViewHelpers::AutoLinkHelper
|
|
13
|
+
include ActiveAdmin::ViewHelpers::DisplayHelper
|
|
14
|
+
|
|
15
|
+
let(:active_admin_config) { AutoLinkMockResource.new(namespace) }
|
|
16
|
+
let(:namespace){ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin) }
|
|
17
|
+
let(:post){ Post.create! :title => "Hello World" }
|
|
18
|
+
|
|
19
|
+
def admin_post_path(post)
|
|
20
|
+
"/admin/posts/#{post.id}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when the resource is not registered" do
|
|
24
|
+
it "should return the display name of the object" do
|
|
25
|
+
auto_link(post).should == "Hello World"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "when the resource is registered" do
|
|
30
|
+
before do
|
|
31
|
+
namespace.register Post
|
|
32
|
+
end
|
|
33
|
+
it "should return a link with the display name of the object" do
|
|
34
|
+
self.should_receive(:link_to).with("Hello World", admin_post_path(post))
|
|
35
|
+
auto_link(post)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
class Resource
|
|
5
|
+
describe BelongsTo do
|
|
6
|
+
|
|
7
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
8
|
+
let(:namespace){ Namespace.new(application, :admin) }
|
|
9
|
+
let(:post){ namespace.register(Post) }
|
|
10
|
+
let(:belongs_to){ BelongsTo.new(post, :user) }
|
|
11
|
+
|
|
12
|
+
it "should have an owner" do
|
|
13
|
+
belongs_to.owner.should == post
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should have a namespace" do
|
|
17
|
+
belongs_to.namespace.should == namespace
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "finding the target" do
|
|
21
|
+
context "when the resource has been registered" do
|
|
22
|
+
let(:user){ namespace.register(User) }
|
|
23
|
+
before { user } # Ensure user is registered
|
|
24
|
+
|
|
25
|
+
it "should return the target resource" do
|
|
26
|
+
belongs_to.target.should == user
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when the resource has not been registered" do
|
|
31
|
+
it "should raise a ActiveAdmin::BelongsTo::TargetNotFound" do
|
|
32
|
+
lambda {
|
|
33
|
+
belongs_to.target
|
|
34
|
+
}.should raise_error(ActiveAdmin::Resource::BelongsTo::TargetNotFound)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should be optional" do
|
|
40
|
+
belongs_to = BelongsTo.new post, :user, :optional => true
|
|
41
|
+
belongs_to.should be_optional
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -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
|