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
@@ -1,25 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActiveAdmin, "filters" do
|
4
|
+
let(:application){ ActiveAdmin::Application.new }
|
4
5
|
|
5
6
|
describe "before filters" do
|
6
7
|
it "should add a new before filter to ActiveAdmin::ResourceController" do
|
7
8
|
ActiveAdmin::ResourceController.should_receive(:before_filter).and_return(true)
|
8
|
-
|
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
|
9
17
|
end
|
10
18
|
end
|
11
19
|
|
12
20
|
describe "after filters" do
|
13
21
|
it "should add a new after filter to ActiveAdmin::ResourceController" do
|
14
22
|
ActiveAdmin::ResourceController.should_receive(:after_filter).and_return(true)
|
15
|
-
|
23
|
+
application.after_filter :my_filter, :only => :show
|
16
24
|
end
|
17
25
|
end
|
18
26
|
|
19
27
|
describe "around filters" do
|
20
28
|
it "should add a new around filter to ActiveAdmin::ResourceController" do
|
21
29
|
ActiveAdmin::ResourceController.should_receive(:around_filter).and_return(true)
|
22
|
-
|
30
|
+
application.around_filter :my_filter, :only => :show
|
23
31
|
end
|
24
32
|
end
|
25
33
|
|
@@ -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,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::Devise::Controller do
|
4
|
+
|
5
|
+
let(:controller_class) do
|
6
|
+
klass = Class.new do
|
7
|
+
def self.layout(*); end
|
8
|
+
def self.helper(*); end
|
9
|
+
end
|
10
|
+
klass.send(:include, ActiveAdmin::Devise::Controller)
|
11
|
+
klass
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:controller) { controller_class.new }
|
15
|
+
|
16
|
+
it "should set the root path to the default namespace" do
|
17
|
+
controller.root_path.should == "/admin"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should set the root path to '/' when no default namespace" do
|
21
|
+
ActiveAdmin.application.stub!(:default_namespace => false)
|
22
|
+
controller.root_path.should == "/"
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#config" do
|
26
|
+
let(:config) { ActiveAdmin::Devise.config }
|
27
|
+
|
28
|
+
describe ":sign_out_via option" do
|
29
|
+
|
30
|
+
subject { config[:sign_out_via] }
|
31
|
+
|
32
|
+
context "when Devise does not implement sign_out_via (version < 1.2)" do
|
33
|
+
before do
|
34
|
+
::Devise.should_receive(:respond_to?).with(:sign_out_via).and_return(false)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not contain any customization for sign_out_via" do
|
38
|
+
config.should_not have_key(:sign_out_via)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when Devise implements sign_out_via (version >= 1.2)" do
|
43
|
+
before do
|
44
|
+
::Devise.should_receive(:respond_to?).with(:sign_out_via).and_return(true)
|
45
|
+
::Devise.stub!(:sign_out_via) { :delete }
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should contain the application.logout_link_method" do
|
49
|
+
::Devise.should_receive(:sign_out_via).and_return(:delete)
|
50
|
+
ActiveAdmin.application.should_receive(:logout_link_method).and_return(:get)
|
51
|
+
|
52
|
+
config[:sign_out_via].should include(:get)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should contain Devise's logout_via_method(s)" do
|
56
|
+
::Devise.should_receive(:sign_out_via).and_return([:delete, :post])
|
57
|
+
ActiveAdmin.application.should_receive(:logout_link_method).and_return(:get)
|
58
|
+
|
59
|
+
config[:sign_out_via].should == [:delete, :post, :get]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end # describe ":sign_out_via option"
|
64
|
+
end # describe "#config"
|
65
|
+
|
66
|
+
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "display names" do
|
4
4
|
|
5
|
-
include ActiveAdmin::ViewHelpers
|
5
|
+
include ActiveAdmin::ViewHelpers
|
6
6
|
|
7
7
|
[:display_name, :full_name, :name, :username, :login, :title, :email, :to_s].each do |m|
|
8
8
|
it "should return #{m} if defined" do
|
@@ -22,7 +22,7 @@ describe "display names" do
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
display_name(c.new).should == "My Name"
|
25
|
-
ActiveAdmin.should_not_receive(:display_name_methods)
|
25
|
+
ActiveAdmin.application.should_not_receive(:display_name_methods)
|
26
26
|
display_name(c.new).should == "My Name"
|
27
27
|
end
|
28
28
|
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
|
4
4
|
describe ActiveAdmin::ViewHelpers::FilterFormHelper do
|
5
|
-
|
6
|
-
|
5
|
+
|
6
|
+
setup_arbre_context!
|
7
7
|
|
8
8
|
# Setup an ActionView::Base object which can be used for
|
9
9
|
# generating the form for.
|
@@ -29,7 +29,7 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
|
|
29
29
|
let(:body) { filter :title }
|
30
30
|
|
31
31
|
it "should generate a form which submits via get" do
|
32
|
-
body.should have_tag("form", :attributes => { :method => 'get' })
|
32
|
+
body.should have_tag("form", :attributes => { :method => 'get', :class => 'filter_form' })
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should generate a filter button" do
|
@@ -76,6 +76,9 @@ describe ActiveAdmin::ViewHelpers::FilterFormHelper do
|
|
76
76
|
it "should generate a date greater than" do
|
77
77
|
body.should have_tag("input", :attributes => { :name => "q[created_at_gte]", :class => "datepicker"})
|
78
78
|
end
|
79
|
+
it "should generate a seperator" do
|
80
|
+
body.should have_tag("span", :attributes => { :class => "seperator"})
|
81
|
+
end
|
79
82
|
it "should generate a date less than" do
|
80
83
|
body.should have_tag("input", :attributes => { :name => "q[created_at_lte]", :class => "datepicker"})
|
81
84
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActiveAdmin::FormBuilder do
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
setup_arbre_context!
|
6
6
|
|
7
7
|
# Setup an ActionView::Base object which can be used for
|
8
8
|
# generating the form for.
|
@@ -28,6 +28,7 @@ describe ActiveAdmin::FormBuilder do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def build_form(options = {}, &block)
|
31
|
+
options.merge!({:url => posts_path})
|
31
32
|
active_admin_form_for Post.new, options, &block
|
32
33
|
end
|
33
34
|
|
@@ -63,6 +64,23 @@ describe ActiveAdmin::FormBuilder do
|
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
67
|
+
context "when polymorphic relationship" do
|
68
|
+
|
69
|
+
let(:body) do
|
70
|
+
comment = ActiveAdmin::Comment.new
|
71
|
+
|
72
|
+
active_admin_form_for comment, :url => "admins/comments" do |f|
|
73
|
+
f.inputs :resource
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should not generate any field" do
|
79
|
+
body.should have_tag("form", :attributes => { :method => 'post' })
|
80
|
+
body.should_not have_tag("select")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
66
84
|
describe "passing in options" do
|
67
85
|
let :body do
|
68
86
|
build_form :html => { :multipart => true } do |f|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
if Rails.version[0..2] == '3.1'
|
5
|
+
describe "Installing in Rails 3.1" do
|
6
|
+
|
7
|
+
it "should add active_admin.css to app/assets/stylesheets/" do
|
8
|
+
File.exists?(Rails.root + "app/assets/stylesheets/active_admin.css.scss").should be_true
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should add active_admin.js to app/assets/javascripts" do
|
12
|
+
File.exists?(Rails.root + "app/assets/javascripts/active_admin.js").should be_true
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveAdmin::ScopeChain do
|
4
|
+
|
5
|
+
include ActiveAdmin::ScopeChain
|
6
|
+
|
7
|
+
describe "#scope_chain" do
|
8
|
+
let(:relation) { mock }
|
9
|
+
|
10
|
+
context "when Scope has a scope method" do
|
11
|
+
let(:scope) { ActiveAdmin::Scope.new :published }
|
12
|
+
|
13
|
+
it "should call the method on the relation and return it" do
|
14
|
+
relation.should_receive(:published).and_return(:scoped_relation)
|
15
|
+
scope_chain(scope, relation).should == :scoped_relation
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context "when Scope has the scope method method ':all'" do
|
20
|
+
let(:scope) { ActiveAdmin::Scope.new :all }
|
21
|
+
|
22
|
+
it "should return the relation" do
|
23
|
+
scope_chain(scope, relation).should == relation
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when Scope has a name and a scope block" do
|
28
|
+
let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| :scoped_relation } }
|
29
|
+
|
30
|
+
it "should instance_exec the block and return it" do
|
31
|
+
scope_chain(scope, relation).should == :scoped_relation
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'active_admin/helpers/settings'
|
3
|
+
|
4
|
+
describe ActiveAdmin::Settings do
|
5
|
+
|
6
|
+
# A Class with settings module included
|
7
|
+
let(:klass) do
|
8
|
+
Class.new do
|
9
|
+
include ActiveAdmin::Settings
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should add a new setting with a default" do
|
14
|
+
klass.setting :my_setting, "Hello World"
|
15
|
+
klass.default_settings[:my_setting].should == "Hello World"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should initialize the defaults" do
|
19
|
+
klass.setting :my_setting, "Hello World"
|
20
|
+
klass.new.my_setting.should == "Hello World"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should support settings of nil" do
|
24
|
+
klass.setting :my_setting, :some_val
|
25
|
+
inst = klass.new
|
26
|
+
inst.my_setting = nil
|
27
|
+
inst.my_setting.should == nil
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/unit/menu_item_spec.rb
CHANGED
@@ -27,6 +27,12 @@ module ActiveAdmin
|
|
27
27
|
item = MenuItem.new("Dashboard", "/admin", 10, :if => block )
|
28
28
|
item.display_if_block.should == block
|
29
29
|
end
|
30
|
+
|
31
|
+
it "should have a default display if block always returning true" do
|
32
|
+
item = MenuItem.new("Dashboard", "/admin")
|
33
|
+
item.display_if_block.should be_instance_of(Proc)
|
34
|
+
item.display_if_block.call(self).should == true
|
35
|
+
end
|
30
36
|
|
31
37
|
describe "url generation and caching" do
|
32
38
|
it "should generate a url if it is a symbol" do
|
data/spec/unit/namespace_spec.rb
CHANGED
@@ -2,8 +2,14 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe ActiveAdmin::Namespace do
|
4
4
|
|
5
|
+
let(:application){ ActiveAdmin::Application.new }
|
6
|
+
|
5
7
|
context "when new" do
|
6
|
-
let(:namespace){ ActiveAdmin::Namespace.new(:admin) }
|
8
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
9
|
+
|
10
|
+
it "should have an application instance" do
|
11
|
+
namespace.application.should == application
|
12
|
+
end
|
7
13
|
|
8
14
|
it "should have a name" do
|
9
15
|
namespace.name.should == :admin
|
@@ -20,7 +26,7 @@ describe ActiveAdmin::Namespace do
|
|
20
26
|
|
21
27
|
describe "registering a resource" do
|
22
28
|
|
23
|
-
let(:namespace){ ActiveAdmin::Namespace.new(:admin) }
|
29
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
24
30
|
|
25
31
|
context "with no configuration" do
|
26
32
|
before do
|
@@ -53,11 +59,12 @@ describe ActiveAdmin::Namespace do
|
|
53
59
|
end
|
54
60
|
|
55
61
|
context "with a resource that's namespaced" do
|
62
|
+
|
56
63
|
before do
|
57
64
|
module ::Mock; class Resource; def self.has_many(arg1, arg2); end; end; end
|
58
65
|
namespace.register Mock::Resource
|
59
66
|
end
|
60
|
-
|
67
|
+
|
61
68
|
it "should store the namespaced registered configuration" do
|
62
69
|
namespace.resources.keys.should include('MockResource')
|
63
70
|
end
|
@@ -71,23 +78,33 @@ describe ActiveAdmin::Namespace do
|
|
71
78
|
it "should use the resource as the model in the controller" do
|
72
79
|
Admin::MockResourcesController.resource_class.should == Mock::Resource
|
73
80
|
end
|
81
|
+
|
74
82
|
end
|
75
83
|
|
76
84
|
describe "finding resource instances" do
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
namespace.resource_for(Post).should == @post_resource
|
84
|
-
end
|
85
|
+
|
86
|
+
let(:namespace){ ActiveAdmin::Namespace.new(application, :admin) }
|
87
|
+
|
88
|
+
it "should return the resource when its been registered" do
|
89
|
+
post = namespace.register Post
|
90
|
+
namespace.resource_for(Post).should == post
|
85
91
|
end
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
92
|
+
|
93
|
+
it 'should return nil when the resource has not been registered' do
|
94
|
+
namespace.resource_for(Post).should == nil
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return the parent when the parent class has been registered and the child has not" do
|
98
|
+
user = namespace.register User
|
99
|
+
namespace.resource_for(Publisher).should == user
|
90
100
|
end
|
101
|
+
|
102
|
+
it "should return the resource if it and it's parent were registered" do
|
103
|
+
user = namespace.register User
|
104
|
+
publisher = namespace.register Publisher
|
105
|
+
namespace.resource_for(Publisher).should == publisher
|
106
|
+
end
|
107
|
+
|
91
108
|
end
|
92
109
|
|
93
110
|
describe "adding to the menu" do
|
@@ -118,8 +135,40 @@ describe ActiveAdmin::Namespace do
|
|
118
135
|
end
|
119
136
|
|
120
137
|
describe "disabling the menu" do
|
121
|
-
|
122
|
-
|
138
|
+
before do
|
139
|
+
namespace.register Category do
|
140
|
+
menu false
|
141
|
+
end
|
142
|
+
namespace.load_menu!
|
143
|
+
end
|
144
|
+
it "should not create a menu item" do
|
145
|
+
namespace.menu["Categories"].should be_nil
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "setting menu priority" do
|
150
|
+
before do
|
151
|
+
namespace.register Category do
|
152
|
+
menu :priority => 2
|
153
|
+
end
|
154
|
+
namespace.load_menu!
|
155
|
+
end
|
156
|
+
it "should have a custom priority of 2" do
|
157
|
+
namespace.menu["Categories"].priority.should == 2
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "setting a condition for displaying" do
|
162
|
+
before do
|
163
|
+
namespace.register Category do
|
164
|
+
menu :if => proc { false }
|
165
|
+
end
|
166
|
+
namespace.load_menu!
|
167
|
+
end
|
168
|
+
it "should have a proc returning false" do
|
169
|
+
namespace.menu["Categories"].display_if_block.should be_instance_of(Proc)
|
170
|
+
namespace.menu["Categories"].display_if_block.call.should == false
|
171
|
+
end
|
123
172
|
end
|
124
173
|
|
125
174
|
describe "adding as a belongs to" do
|
@@ -149,13 +198,13 @@ describe ActiveAdmin::Namespace do
|
|
149
198
|
describe "dashboard controller name" do
|
150
199
|
context "when namespaced" do
|
151
200
|
it "should be namespaced" do
|
152
|
-
namespace = ActiveAdmin::Namespace.new(:admin)
|
201
|
+
namespace = ActiveAdmin::Namespace.new(application, :admin)
|
153
202
|
namespace.dashboard_controller_name.should == "Admin::DashboardController"
|
154
203
|
end
|
155
204
|
end
|
156
205
|
context "when not namespaced" do
|
157
206
|
it "should not be namespaced" do
|
158
|
-
namespace = ActiveAdmin::Namespace.new(:root)
|
207
|
+
namespace = ActiveAdmin::Namespace.new(application, :root)
|
159
208
|
namespace.dashboard_controller_name.should == "DashboardController"
|
160
209
|
end
|
161
210
|
end
|