activeadmin 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- data/.gitignore +34 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +177 -0
- data/Gemfile +21 -32
- data/Guardfile +8 -0
- data/README.rdoc +75 -14
- data/Rakefile +7 -100
- data/activeadmin.gemspec +21 -353
- data/{lib/generators/active_admin/install/templates/images → 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/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/loading.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/nested_menu_arrow_dark.gif +0 -0
- data/{lib/generators/active_admin/install/templates/images → app/assets/images/active_admin}/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/{lib/generators/active_admin/install/templates/active_admin_vendor.js → app/assets/javascripts/active_admin/vendor.js} +0 -0
- data/{lib/active_admin/stylesheets/active_admin.scss → app/assets/stylesheets/active_admin/_base.css.scss} +58 -82
- data/{lib/active_admin/stylesheets/active_admin/_forms.scss → app/assets/stylesheets/active_admin/_forms.css.scss} +94 -5
- data/{lib/active_admin/stylesheets/active_admin/_header.scss → app/assets/stylesheets/active_admin/_header.css.scss} +13 -11
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/{lib/active_admin/stylesheets/active_admin/_typography.scss → app/assets/stylesheets/active_admin/_typography.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/_comments.scss → app/assets/stylesheets/active_admin/components/_comments.css.scss} +0 -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/{lib/active_admin/stylesheets/active_admin/mixins/_all.scss → app/assets/stylesheets/active_admin/mixins/_all.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss → app/assets/stylesheets/active_admin/mixins/_buttons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss → app/assets/stylesheets/active_admin/mixins/_gradients.css.scss} +8 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_icons.scss → app/assets/stylesheets/active_admin/mixins/_icons.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_reset.scss → app/assets/stylesheets/active_admin/mixins/_reset.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss → app/assets/stylesheets/active_admin/mixins/_rounded.css.scss} +0 -0
- data/{lib/active_admin/stylesheets/active_admin/mixins/_sections.scss → app/assets/stylesheets/active_admin/mixins/_sections.css.scss} +9 -2
- data/{lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss → app/assets/stylesheets/active_admin/mixins/_shadows.css.scss} +1 -1
- data/{lib/active_admin/stylesheets/active_admin/mixins/_variables.scss → app/assets/stylesheets/active_admin/mixins/_variables.css.scss} +12 -3
- data/{lib/active_admin/views/templates/active_admin_dashboard → app/views/active_admin/dashboard}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/reset_password_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/mailer/unlock_instructions.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/edit.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/passwords/new.html.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/sessions/new.html.erb +1 -1
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/shared/_links.erb +0 -0
- data/{lib/active_admin/views/templates → app/views}/active_admin/devise/unlocks/new.html.erb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/edit.html.arb +0 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/index.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/new.html.arb +0 -0
- data/{lib/active_admin/views/templates/active_admin_default → app/views/active_admin/resource}/show.html.arb +0 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/{lib/active_admin/views/templates → app/views}/layouts/active_admin_logged_out.html.erb +8 -4
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -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 +90 -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 +31 -4
- data/features/edit_page.feature +30 -1
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +2 -0
- data/features/index/index_as_block.feature +1 -1
- data/features/index/index_as_grid.feature +1 -1
- data/features/index/index_as_table.feature +2 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/pagination.feature +0 -6
- data/features/registering_assets.feature +2 -2
- data/features/sidebar_sections.feature +7 -8
- data/features/specifying_actions.feature +72 -1
- data/features/step_definitions/action_item_steps.rb +2 -2
- data/features/step_definitions/additional_web_steps.rb +26 -16
- data/features/step_definitions/attribute_steps.rb +5 -7
- data/features/step_definitions/configuration_steps.rb +9 -9
- data/features/step_definitions/factory_steps.rb +4 -3
- data/features/step_definitions/format_steps.rb +29 -1
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +2 -2
- data/features/step_definitions/sidebar_steps.rb +1 -5
- data/features/step_definitions/user_steps.rb +8 -2
- data/features/step_definitions/web_steps.rb +82 -90
- data/features/sti_resource.feature +12 -0
- data/features/support/env.rb +12 -10
- data/features/support/paths.rb +2 -0
- data/features/support/selectors.rb +45 -0
- data/lib/active_admin.rb +33 -263
- data/lib/active_admin/application.rb +228 -0
- data/lib/active_admin/arbre.rb +10 -10
- data/lib/active_admin/arbre/{html.rb → builder.rb} +29 -2
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/{attributes.rb → html/attributes.rb} +0 -0
- data/lib/active_admin/arbre/{class_list.rb → html/class_list.rb} +0 -0
- data/lib/active_admin/arbre/{collection.rb → html/collection.rb} +0 -0
- data/lib/active_admin/arbre/{document.rb → html/document.rb} +0 -0
- data/lib/active_admin/arbre/{element.rb → html/element.rb} +6 -6
- data/lib/active_admin/arbre/{html5_elements.rb → html/html5_elements.rb} +0 -0
- data/lib/active_admin/arbre/{tag.rb → html/tag.rb} +0 -0
- data/lib/active_admin/arbre/{text_node.rb → html/text_node.rb} +0 -0
- data/lib/active_admin/asset_registration.rb +1 -1
- data/lib/active_admin/callbacks.rb +5 -3
- data/lib/active_admin/comments.rb +3 -3
- data/lib/active_admin/comments/comment.rb +6 -0
- data/lib/active_admin/comments/configuration.rb +8 -6
- data/lib/active_admin/comments/namespace_helper.rb +1 -1
- data/lib/active_admin/comments/views/active_admin_comments.rb +1 -1
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +1 -1
- data/lib/active_admin/dashboards/dashboard_controller.rb +3 -10
- data/lib/active_admin/dependency_checker.rb +28 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +14 -3
- data/lib/active_admin/dsl.rb +26 -4
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/form_builder.rb +18 -9
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -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 +39 -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/zh_cn.yml +40 -0
- data/lib/active_admin/menu_item.rb +6 -0
- data/lib/active_admin/namespace.rb +14 -5
- data/lib/active_admin/reloader.rb +30 -0
- data/lib/active_admin/renderer.rb +1 -1
- data/lib/active_admin/resource.rb +45 -88
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +46 -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 +32 -37
- data/lib/active_admin/resource_controller/action_builder.rb +1 -1
- data/lib/active_admin/resource_controller/actions.rb +66 -40
- data/lib/active_admin/resource_controller/callbacks.rb +1 -1
- data/lib/active_admin/resource_controller/collection.rb +9 -14
- data/lib/active_admin/resource_controller/filters.rb +1 -1
- data/lib/active_admin/resource_controller/form.rb +1 -1
- data/lib/active_admin/resource_controller/menu.rb +1 -1
- data/lib/active_admin/resource_controller/page_configurations.rb +2 -2
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/resource_controller/sidebars.rb +1 -21
- 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 +16 -2
- 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 +1 -1
- data/lib/active_admin/view_factory.rb +5 -3
- data/lib/active_admin/view_helpers.rb +1 -2
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/filter_form_helper.rb +26 -14
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/attributes_table.rb +2 -2
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +1 -3
- data/lib/active_admin/views/components/paginated_collection.rb +26 -8
- data/lib/active_admin/views/components/scopes.rb +13 -8
- data/lib/active_admin/views/components/sidebar_section.rb +1 -3
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +25 -6
- data/lib/active_admin/views/header_renderer.rb +20 -4
- data/lib/active_admin/views/index_as_block.rb +12 -7
- data/lib/active_admin/views/index_as_blog.rb +61 -21
- data/lib/active_admin/views/index_as_grid.rb +22 -1
- data/lib/active_admin/views/index_as_table.rb +97 -6
- data/lib/active_admin/views/pages/base.rb +20 -9
- data/lib/active_admin/views/pages/dashboard.rb +7 -4
- data/lib/active_admin/views/pages/edit.rb +3 -2
- data/lib/active_admin/views/pages/index.rb +30 -5
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +3 -2
- data/lib/active_admin/views/pages/show.rb +1 -1
- data/lib/active_admin/views/tabbed_navigation.rb +94 -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/install/install_generator.rb +2 -4
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +26 -4
- data/lib/generators/active_admin/install/templates/dashboards.rb +4 -2
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +2 -2
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +1 -1
- 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 +21 -11
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +1 -1
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +1 -1
- data/spec/support/rails_template_with_data.rb +2 -1
- data/spec/support/templates/cucumber.rb +0 -4
- data/spec/unit/active_admin_spec.rb +8 -44
- data/spec/unit/application_spec.rb +78 -0
- data/spec/unit/arbre/context_spec.rb +22 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +2 -2
- data/spec/unit/arbre/html/element_spec.rb +2 -3
- data/spec/unit/arbre/html/tag_attributes_spec.rb +2 -2
- data/spec/unit/arbre/html/tag_spec.rb +2 -2
- data/spec/unit/arbre/html_spec.rb +2 -3
- data/spec/unit/auto_link_spec.rb +2 -1
- data/spec/unit/belongs_to_spec.rb +2 -1
- data/spec/unit/comments_spec.rb +43 -39
- data/spec/unit/controller_filters_spec.rb +11 -3
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +2 -2
- data/spec/unit/filter_form_builder_spec.rb +6 -3
- data/spec/unit/form_builder_spec.rb +20 -2
- 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 +6 -0
- data/spec/unit/namespace_spec.rb +68 -19
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +18 -27
- data/spec/unit/reloader_spec.rb +28 -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 +64 -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 +1 -1
- data/spec/unit/resource_controller_spec.rb +29 -24
- data/spec/unit/resource_spec.rb +78 -94
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +11 -1
- data/spec/unit/view_factory_spec.rb +4 -1
- data/spec/unit/{components → views/components}/attributes_table_spec.rb +2 -2
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/{components → views/components}/columns_spec.rb +2 -2
- data/spec/unit/{components → views/components}/panel_spec.rb +1 -3
- data/spec/unit/{components → views/components}/sidebar_section_spec.rb +3 -3
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/{components → views/components}/table_for_spec.rb +2 -1
- 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 +55 -0
- data/tasks/yard.rake +6 -0
- metadata +310 -189
- data/CHANGELOG.rdoc +0 -76
- data/lib/active_admin/action_items.rb +0 -37
- data/lib/active_admin/sidebar.rb +0 -39
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +0 -13
- data/lib/active_admin/view_helpers/status_tag_helper.rb +0 -13
- data/lib/active_admin/view_helpers/table_helper.rb +0 -12
- data/lib/active_admin/views/tabs_renderer.rb +0 -52
- data/lib/active_admin/views/templates/active_admin_default/index.csv.erb +0 -2
- data/lib/active_admin/views/templates/layouts/active_admin.html.erb +0 -39
- data/lib/generators/active_admin/install/templates/active_admin.js +0 -51
- data/spec/controllers/index_as_csv_spec.rb +0 -35
- data/spec/unit/action_items_spec.rb +0 -27
- data/spec/unit/tabs_renderer_spec.rb +0 -56
@@ -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
|
@@ -1,67 +1,58 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "Registering an object to administer" do
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
4
5
|
|
5
6
|
context "with no configuration" do
|
6
|
-
let(:namespace) { ActiveAdmin::Namespace.new(:admin) }
|
7
|
+
let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
|
7
8
|
it "should call register on the namespace" do
|
8
|
-
|
9
|
+
application.namespaces[namespace.name] = namespace
|
9
10
|
namespace.should_receive(:register)
|
10
11
|
|
11
|
-
|
12
|
+
application.register Category
|
12
13
|
end
|
13
14
|
|
14
15
|
it "should dispatch a Resource::RegisterEvent" do
|
15
16
|
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
|
16
|
-
|
17
|
+
application.register Category
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
21
|
context "with a different namespace" do
|
21
22
|
it "should call register on the namespace" do
|
22
|
-
namespace = ActiveAdmin::Namespace.new(:hello_world)
|
23
|
-
|
23
|
+
namespace = ActiveAdmin::Namespace.new(application, :hello_world)
|
24
|
+
application.namespaces[namespace.name] = namespace
|
24
25
|
namespace.should_receive(:register)
|
25
26
|
|
26
|
-
|
27
|
-
end
|
28
|
-
it "should generate a path to the dashboard" do
|
29
|
-
ActiveAdmin.register Category, :namespace => :hello_world
|
30
|
-
reload_routes!
|
31
|
-
Rails.application.routes.url_helpers.methods.collect(&:to_s).should include("hello_world_dashboard_path")
|
27
|
+
application.register Category, :namespace => :hello_world
|
32
28
|
end
|
33
29
|
it "should generate a menu item for the dashboard" do
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
37
33
|
end
|
38
34
|
it "should generate a Namespace::RegisterEvent and a Resource::RegisterEvent" do
|
39
35
|
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Namespace::RegisterEvent, an_instance_of(ActiveAdmin::Namespace))
|
40
36
|
ActiveAdmin::Event.should_receive(:dispatch).with(ActiveAdmin::Resource::RegisterEvent, an_instance_of(ActiveAdmin::Resource))
|
41
|
-
|
37
|
+
application.register Category, :namespace => :not_yet_created
|
42
38
|
end
|
43
39
|
end
|
44
40
|
|
45
41
|
context "with no namespace" do
|
46
42
|
it "should call register on the root namespace" do
|
47
|
-
namespace = ActiveAdmin::Namespace.new(:root)
|
48
|
-
|
43
|
+
namespace = ActiveAdmin::Namespace.new(application, :root)
|
44
|
+
application.namespaces[namespace.name] = namespace
|
49
45
|
namespace.should_receive(:register)
|
50
46
|
|
51
|
-
|
47
|
+
application.register Category, :namespace => false
|
52
48
|
end
|
53
49
|
|
54
50
|
it "should generate a menu item for the dashboard" do
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
58
54
|
end
|
59
55
|
|
60
|
-
it "should generate a path to the dashboard" do
|
61
|
-
ActiveAdmin.register Category, :namespace => false
|
62
|
-
reload_routes!
|
63
|
-
Rails.application.routes.url_helpers.methods.collect(&:to_s).should include("dashboard_path")
|
64
|
-
end
|
65
56
|
end
|
66
57
|
|
67
58
|
context "when being registered multiple times" do
|
@@ -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,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,64 @@
|
|
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
|
+
context "I18n" do
|
54
|
+
before do
|
55
|
+
I18n.stub(:translate) { 'Categorie' }
|
56
|
+
end
|
57
|
+
it "should return the plural version defined in the i18n if available" do
|
58
|
+
config.plural_resource_name.should == "Categorie"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module ActiveAdmin
|
4
|
+
describe Resource, "Scopes" 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 "adding a scope" do
|
16
|
+
|
17
|
+
it "should add a scope" do
|
18
|
+
config.scope :published
|
19
|
+
config.scopes.first.should be_a(ActiveAdmin::Scope)
|
20
|
+
config.scopes.first.name.should == "Published"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should retrive a scope by its id" do
|
24
|
+
config.scope :published
|
25
|
+
config.get_scope_by_id(:published).name.should == "Published"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Resource::Sidebars do
|
4
|
+
|
5
|
+
let(:resource) do
|
6
|
+
namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
|
7
|
+
namespace.register(Post)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:sidebar) { ActiveAdmin::SidebarSection.new(:help) }
|
11
|
+
|
12
|
+
describe "adding a new sidebar section" do
|
13
|
+
|
14
|
+
before do
|
15
|
+
resource.clear_sidebar_sections!
|
16
|
+
resource.sidebar_sections << sidebar
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should add a sidebar section" do
|
20
|
+
resource.should have(1).sidebar_sections
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "retrieving sections for a controller action" do
|
26
|
+
|
27
|
+
let(:only_index){ ActiveAdmin::SidebarSection.new(:help, :only => :index) }
|
28
|
+
let(:only_show){ ActiveAdmin::SidebarSection.new(:help, :only => :show) }
|
29
|
+
|
30
|
+
before do
|
31
|
+
resource.clear_sidebar_sections!
|
32
|
+
resource.sidebar_sections << only_index
|
33
|
+
resource.sidebar_sections << only_show
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should only return the relevant action items" do
|
37
|
+
resource.should have(2).sidebar_sections
|
38
|
+
resource.sidebar_sections_for("index").should == [only_index]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "default sidebar sections" do
|
44
|
+
|
45
|
+
it "should have a filters section by default" do
|
46
|
+
resource.sidebar_sections.first.name.should == :filters
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|