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,35 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "#pretty_format" do
|
|
4
|
+
include ActiveAdmin::ViewHelpers::DisplayHelper
|
|
5
|
+
|
|
6
|
+
context "when a String is passed in" do
|
|
7
|
+
it "should return the String passed in" do
|
|
8
|
+
pretty_format("hello").should == "hello"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context "when a Date or a Time is passed in" do
|
|
13
|
+
it "should return a localized Date or Time with long format" do
|
|
14
|
+
t = Time.now
|
|
15
|
+
self.should_receive(:localize).with(t, {:format => :long}) { "Just Now!" }
|
|
16
|
+
pretty_format(t).should == "Just Now!"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "when an ActiveRecord object is passed in" do
|
|
21
|
+
it "should delegate to auto_link" do
|
|
22
|
+
post = Post.new
|
|
23
|
+
self.should_receive(:auto_link).with(post) { "model name" }
|
|
24
|
+
pretty_format(post).should == "model name"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "when something else is passed in" do
|
|
29
|
+
it "should delegate to display_name" do
|
|
30
|
+
something = Class.new.new
|
|
31
|
+
self.should_receive(:display_name).with(something) { "I'm not famous" }
|
|
32
|
+
pretty_format(something).should == "I'm not famous"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin do
|
|
4
|
+
|
|
5
|
+
describe "use_asset_pipeline?" do
|
|
6
|
+
|
|
7
|
+
before(:each) do
|
|
8
|
+
@orig_rails_version = Rails::VERSION::MINOR
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
after(:each) do
|
|
12
|
+
silence_warnings { Rails::VERSION::MINOR = @orig_rails_version }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should be false when using rails 3.0.x" do
|
|
16
|
+
silence_warnings { Rails::VERSION::MINOR = 0 }
|
|
17
|
+
ActiveAdmin.use_asset_pipeline?.should be_false
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "when rails 3.1.x" do
|
|
21
|
+
before(:each) do
|
|
22
|
+
@orig_rails_app = Rails.application.dup
|
|
23
|
+
silence_warnings { Rails::VERSION::MINOR = 1 }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
after(:each) do
|
|
27
|
+
Rails.application = @orig_rails_app
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should be false without asset pipeline enabled" do
|
|
31
|
+
assets = mock(:enabled => false)
|
|
32
|
+
Rails.application.config.stub!(:assets => assets)
|
|
33
|
+
ActiveAdmin.use_asset_pipeline?.should be_false
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should be true with asset pipeline enabled" do
|
|
37
|
+
assets = mock(:enabled => true)
|
|
38
|
+
Rails.application.config.stub!(:assets => assets)
|
|
39
|
+
ActiveAdmin.use_asset_pipeline?.should be_true
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "Registering an object to administer" do
|
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
5
|
+
|
|
6
|
+
context "with no configuration" do
|
|
7
|
+
let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
|
|
8
|
+
it "should call register on the namespace" do
|
|
9
|
+
application.namespaces[namespace.name] = namespace
|
|
10
|
+
namespace.should_receive(:register)
|
|
11
|
+
|
|
12
|
+
application.register Category
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should dispatch a Resource::RegisterEvent" do
|
|
16
|
+
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
|
|
17
|
+
application.register Category
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "with a different namespace" do
|
|
22
|
+
it "should call register on the namespace" do
|
|
23
|
+
namespace = ActiveAdmin::Namespace.new(application, :hello_world)
|
|
24
|
+
application.namespaces[namespace.name] = namespace
|
|
25
|
+
namespace.should_receive(:register)
|
|
26
|
+
|
|
27
|
+
application.register Category, :namespace => :hello_world
|
|
28
|
+
end
|
|
29
|
+
it "should generate a menu item for the dashboard" do
|
|
30
|
+
application.register Category, :namespace => :hello_world
|
|
31
|
+
application.namespaces[:hello_world].load_menu!
|
|
32
|
+
application.namespaces[:hello_world].menu['Dashboard'].instance_variable_get("@url").should == :hello_world_dashboard_path
|
|
33
|
+
end
|
|
34
|
+
it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
|
|
35
|
+
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
|
|
36
|
+
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
|
|
37
|
+
application.register Category, :namespace => :not_yet_created
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context "with no namespace" do
|
|
42
|
+
it "should call register on the root namespace" do
|
|
43
|
+
namespace = ActiveAdmin::Namespace.new(application, :root)
|
|
44
|
+
application.namespaces[namespace.name] = namespace
|
|
45
|
+
namespace.should_receive(:register)
|
|
46
|
+
|
|
47
|
+
application.register Category, :namespace => false
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should generate a menu item for the dashboard" do
|
|
51
|
+
application.register Category, :namespace => false
|
|
52
|
+
application.namespaces[:root].load_menu!
|
|
53
|
+
application.namespaces[:root].menu['Dashboard'].instance_variable_get("@url").should == :dashboard_path
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "when being registered multiple times" do
|
|
59
|
+
it "should run the dsl in the same config object" do
|
|
60
|
+
config_1 = ActiveAdmin.register(Category) { filter :name }
|
|
61
|
+
config_2 = ActiveAdmin.register(Category) { filter :id }
|
|
62
|
+
config_1.should == config_2
|
|
63
|
+
config_1.controller.filters_config.size.should == 2
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "with different resource classes" do
|
|
67
|
+
it "should raise an ActiveAdmin::ResourceMismatch" do
|
|
68
|
+
lambda {
|
|
69
|
+
ActiveAdmin.register Category
|
|
70
|
+
ActiveAdmin.register Post, :as => "Category"
|
|
71
|
+
}.should raise_error(ActiveAdmin::ResourceMismatchError)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
# Ensure we have both constants to play with
|
|
4
|
+
begin
|
|
5
|
+
ActionDispatch::Reloader
|
|
6
|
+
rescue
|
|
7
|
+
module ActionDispatch; module Reloader; end; end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
begin
|
|
11
|
+
ActionDispatch::Callbacks
|
|
12
|
+
rescue
|
|
13
|
+
module ActionDispatch; module Callbacks; end; end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
describe ActiveAdmin::Reloader do
|
|
18
|
+
|
|
19
|
+
it "should use ActionDispatch::Reloader if rails 3.1" do
|
|
20
|
+
reloader = ActiveAdmin::Reloader.new '3.1.0'
|
|
21
|
+
reloader.reloader_class.should == ActionDispatch::Reloader
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should use ActionDispatch::Callbacks if rails 3.0" do
|
|
25
|
+
reloader = ActiveAdmin::Reloader.new '3.0.0'
|
|
26
|
+
reloader.reloader_class.should == ActionDispatch::Callbacks
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
include ActiveAdmin
|
|
4
|
+
|
|
5
|
+
describe ActiveAdmin::Renderer do
|
|
6
|
+
|
|
7
|
+
context "when initiailizing from a view" do
|
|
8
|
+
it "should have a view" do
|
|
9
|
+
view = action_view
|
|
10
|
+
renderer = Renderer.new(view)
|
|
11
|
+
renderer.view.should == view
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should assign all local variables from the view" do
|
|
15
|
+
Renderer.new(action_view(:foo => "bar")).send(:instance_variable_get, "@foo").should == "bar"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should assing an instance variable to the view" do
|
|
19
|
+
view = action_view
|
|
20
|
+
renderer = Renderer.new(view)
|
|
21
|
+
renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
|
|
22
|
+
view.instance_variable_get("@my_ivar").should == 'Hello World'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "when initializing from another renderer" do
|
|
27
|
+
it "should have the view" do
|
|
28
|
+
view = action_view
|
|
29
|
+
renderer = Renderer.new(Renderer.new(view))
|
|
30
|
+
renderer.view.should == view
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should assign local variables from the renderer" do
|
|
34
|
+
view = action_view(:foo => 'bar')
|
|
35
|
+
renderer = Renderer.new(Renderer.new(view))
|
|
36
|
+
renderer.send(:instance_variable_get, "@foo").should == 'bar'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should assing an instance variable to the view" do
|
|
40
|
+
view = action_view
|
|
41
|
+
renderer = Renderer.new(Renderer.new(view))
|
|
42
|
+
renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
|
|
43
|
+
view.instance_variable_get("@my_ivar").should == 'Hello World'
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "when initializing from some other object" do
|
|
48
|
+
it "should initialize successfully" do
|
|
49
|
+
lambda {
|
|
50
|
+
Renderer.new "Hello World"
|
|
51
|
+
}.should_not raise_exception
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "rendering HAML" do
|
|
56
|
+
before do
|
|
57
|
+
@haml_renderer = Class.new(Renderer)
|
|
58
|
+
@haml_renderer.class_eval do
|
|
59
|
+
def hello_world
|
|
60
|
+
"Hello World"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
it "should render haml within the context of the renderer" do
|
|
65
|
+
@haml_renderer.class_eval do
|
|
66
|
+
def to_html
|
|
67
|
+
haml <<-HAML
|
|
68
|
+
%p
|
|
69
|
+
=hello_world
|
|
70
|
+
HAML
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
@renderer = @haml_renderer.new(action_view)
|
|
74
|
+
@renderer.to_html.should == "<p>\n Hello World\n</p>\n"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should allow for indentation at the start of the template" do
|
|
78
|
+
@haml_renderer.class_eval do
|
|
79
|
+
def to_html
|
|
80
|
+
haml <<-HAML
|
|
81
|
+
%p
|
|
82
|
+
=hello_world
|
|
83
|
+
HAML
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
@renderer = @haml_renderer.new(action_view)
|
|
87
|
+
@renderer.to_html.should == "<p>\n Hello World\n</p>\n"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "#call_method_or_proc_on" do
|
|
92
|
+
let(:renderer){ Renderer.new(action_view) }
|
|
93
|
+
let(:obj){ "Hello World" }
|
|
94
|
+
it "should return nil if no symbol or proc given" do
|
|
95
|
+
renderer.send(:call_method_or_proc_on, obj, 1).should == nil
|
|
96
|
+
end
|
|
97
|
+
it "should call the method if a symbol is given" do
|
|
98
|
+
renderer.send(:call_method_or_proc_on, obj, :size).should == obj.size
|
|
99
|
+
end
|
|
100
|
+
it "should call the method if a string is given" do
|
|
101
|
+
renderer.send(:call_method_or_proc_on, obj, "size").should == obj.size
|
|
102
|
+
end
|
|
103
|
+
it "should call the proc with the object if a proc is given" do
|
|
104
|
+
p = Proc.new{|string| string.size }
|
|
105
|
+
renderer.send(:call_method_or_proc_on, obj, p).should == obj.size
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Resource::ActionItems do
|
|
4
|
+
|
|
5
|
+
let(:resource) do
|
|
6
|
+
namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
|
|
7
|
+
namespace.register(Post)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "adding a new action item" do
|
|
11
|
+
|
|
12
|
+
before do
|
|
13
|
+
resource.clear_action_items!
|
|
14
|
+
resource.add_action_item do
|
|
15
|
+
# Empty ...
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should add an action item" do
|
|
20
|
+
resource.action_items.size.should == 1
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should store an instance of ActionItem" do
|
|
24
|
+
resource.action_items.first.should be_an_instance_of(ActiveAdmin::ActionItem)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should store the block in the action item" do
|
|
28
|
+
resource.action_items.first.block.should_not be_nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "setting an action item to only display on specific controller actions" do
|
|
34
|
+
|
|
35
|
+
before do
|
|
36
|
+
resource.clear_action_items!
|
|
37
|
+
resource.add_action_item :only => :index do
|
|
38
|
+
raise StandardError
|
|
39
|
+
end
|
|
40
|
+
resource.add_action_item :only => :show do
|
|
41
|
+
# Empty ...
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should return only relevant action items" do
|
|
46
|
+
resource.action_items_for(:index).size.should == 1
|
|
47
|
+
lambda {
|
|
48
|
+
resource.action_items_for(:index).first.call
|
|
49
|
+
}.should raise_exception(StandardError)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "default action items" do
|
|
55
|
+
|
|
56
|
+
it "should have 3 action items" do
|
|
57
|
+
resource.action_items.size.should == 3
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
describe Resource, "Menu" do
|
|
5
|
+
|
|
6
|
+
before { load_defaults! }
|
|
7
|
+
|
|
8
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
9
|
+
let(:namespace){ Namespace.new(application, :admin) }
|
|
10
|
+
|
|
11
|
+
def config(options = {})
|
|
12
|
+
@config ||= Resource.new(namespace, Category, options)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#include_in_menu?" do
|
|
16
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
|
17
|
+
subject{ resource }
|
|
18
|
+
|
|
19
|
+
context "when regular resource" do
|
|
20
|
+
let(:resource){ namespace.register(Post) }
|
|
21
|
+
it { should be_include_in_menu }
|
|
22
|
+
end
|
|
23
|
+
context "when belongs to" do
|
|
24
|
+
let(:resource){ namespace.register(Post){ belongs_to :author } }
|
|
25
|
+
it { should_not be_include_in_menu }
|
|
26
|
+
end
|
|
27
|
+
context "when belongs to optional" do
|
|
28
|
+
let(:resource){ namespace.register(Post){ belongs_to :author, :optional => true} }
|
|
29
|
+
it { should be_include_in_menu }
|
|
30
|
+
end
|
|
31
|
+
context "when menu set to false" do
|
|
32
|
+
let(:resource){ namespace.register(Post){ menu false } }
|
|
33
|
+
it { should_not be_include_in_menu }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe "menu item name" do
|
|
38
|
+
it "should be the resource name when not set" do
|
|
39
|
+
config.menu_item_name.should == "Categories"
|
|
40
|
+
end
|
|
41
|
+
it "should be settable" do
|
|
42
|
+
config.menu :label => "My Label"
|
|
43
|
+
config.menu_item_name.should == "My Label"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "parent menu item name" do
|
|
48
|
+
it "should be nil when not set" do
|
|
49
|
+
config.parent_menu_item_name.should == nil
|
|
50
|
+
end
|
|
51
|
+
it "should return the name if set" do
|
|
52
|
+
config.tap do |c|
|
|
53
|
+
c.menu :parent => "Blog"
|
|
54
|
+
end.parent_menu_item_name.should == "Blog"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe "menu item priority" do
|
|
59
|
+
it "should be 10 when not set" do
|
|
60
|
+
config.menu_item_priority.should == 10
|
|
61
|
+
end
|
|
62
|
+
it "should be settable" do
|
|
63
|
+
config.menu :priority => 2
|
|
64
|
+
config.menu_item_priority.should == 2
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "menu item display if" do
|
|
69
|
+
it "should be a proc always returning true if not set" do
|
|
70
|
+
config.menu_item_display_if.should be_instance_of(Proc)
|
|
71
|
+
config.menu_item_display_if.call.should == true
|
|
72
|
+
end
|
|
73
|
+
it "should be settable" do
|
|
74
|
+
config.menu :if => proc { false }
|
|
75
|
+
config.menu_item_display_if.call.should == false
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module ActiveAdmin
|
|
4
|
+
describe Resource, "Naming" do
|
|
5
|
+
|
|
6
|
+
before { load_defaults! }
|
|
7
|
+
|
|
8
|
+
let(:application){ ActiveAdmin::Application.new }
|
|
9
|
+
let(:namespace){ Namespace.new(application, :admin) }
|
|
10
|
+
|
|
11
|
+
def config(options = {})
|
|
12
|
+
@config ||= Resource.new(namespace, Category, options)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
describe "underscored resource name" do
|
|
17
|
+
context "when class" do
|
|
18
|
+
it "should be the underscored singular resource name" do
|
|
19
|
+
config.underscored_resource_name.should == "category"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
context "when a class in a module" do
|
|
23
|
+
it "should underscore the module and the class" do
|
|
24
|
+
module ::Mock; class Resource; end; end
|
|
25
|
+
Resource.new(namespace, Mock::Resource).underscored_resource_name.should == "mock_resource"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
context "when you pass the 'as' option" do
|
|
29
|
+
it "should underscore the passed through string and singulralize" do
|
|
30
|
+
config(:as => "Blog Categories").underscored_resource_name.should == "blog_category"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "camelized resource name" do
|
|
36
|
+
it "should return a camelized version of the underscored resource name" do
|
|
37
|
+
config(:as => "Blog Categories").camelized_resource_name.should == "BlogCategory"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "resource name" do
|
|
42
|
+
it "should return a pretty name" do
|
|
43
|
+
config.resource_name.should == "Category"
|
|
44
|
+
end
|
|
45
|
+
it "should return the plural version" do
|
|
46
|
+
config.plural_resource_name.should == "Categories"
|
|
47
|
+
end
|
|
48
|
+
context "when the :as option is given" do
|
|
49
|
+
it "should return the custom name" do
|
|
50
|
+
config(:as => "My Category").resource_name.should == "My Category"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|