activeadmin 0.4.4 → 0.5.0.pre
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 +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +50 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +10 -4
- data/Guardfile +0 -1
- data/LICENSE +1 -1
- data/README.rdoc +19 -8
- data/Rakefile +10 -1
- data/activeadmin.gemspec +2 -1
- data/app/assets/javascripts/active_admin/application.js +3 -9
- data/app/assets/javascripts/active_admin/base.js +1 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
- data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
- data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
- data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
- data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
- data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
- data/app/views/active_admin/devise/shared/_links.erb +6 -6
- data/app/views/active_admin/page/index.html.arb +1 -1
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.csv.erb +1 -1
- data/app/views/active_admin/resource/index.html.arb +1 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +1 -1
- data/app/views/layouts/active_admin.html.arb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/cucumber.yml +1 -1
- data/docs/0-installation.md +10 -1
- data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
- data/docs/2-resource-customization.md +19 -1
- data/docs/3-index-pages.md +31 -0
- data/docs/4-csv-format.md +9 -0
- data/docs/6-show-screens.md +1 -1
- data/docs/9-batch-actions.md +161 -0
- data/features/dashboard.feature +31 -8
- data/features/development_reloading.feature +1 -1
- data/features/edit_page.feature +3 -3
- data/features/i18n.feature +35 -0
- data/features/index/batch_actions.feature +98 -0
- data/features/index/filters.feature +26 -0
- data/features/index/format_as_csv.feature +35 -0
- data/features/index/index_as_table.feature +30 -2
- data/features/index/index_blank_slate.feature +8 -3
- data/features/index/index_scopes.feature +130 -24
- data/features/index/page_title.feature +12 -0
- data/features/new_page.feature +3 -3
- data/features/registering_pages.feature +61 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +1 -1
- data/features/show/page_title.feature +14 -0
- data/features/sidebar_sections.feature +26 -0
- data/features/site_title.feature +1 -1
- data/features/specifying_actions.feature +7 -6
- data/features/step_definitions/action_link_steps.rb +1 -1
- data/features/step_definitions/additional_web_steps.rb +7 -1
- data/features/step_definitions/batch_action_steps.rb +94 -0
- data/features/step_definitions/configuration_steps.rb +30 -8
- data/features/step_definitions/factory_steps.rb +12 -0
- data/features/step_definitions/format_steps.rb +6 -2
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +114 -0
- data/features/step_definitions/user_steps.rb +30 -4
- data/features/support/env.rb +54 -15
- data/features/support/paths.rb +2 -0
- data/features/users/logging_in.feature +1 -1
- data/features/users/logging_out.feature +2 -1
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +46 -7
- data/lib/active_admin/application.rb +30 -15
- data/lib/active_admin/base_controller/menu.rb +3 -3
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +25 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/comments.rb +5 -2
- data/lib/active_admin/comments/comment.rb +4 -3
- data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
- data/lib/active_admin/component.rb +1 -18
- data/lib/active_admin/csv_builder.rb +8 -3
- data/lib/active_admin/dashboards.rb +21 -4
- data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
- data/lib/active_admin/dependency_checker.rb +1 -1
- data/lib/active_admin/dsl.rb +61 -4
- data/lib/active_admin/engine.rb +1 -1
- data/lib/active_admin/filters.rb +8 -0
- data/lib/active_admin/filters/dsl.rb +12 -0
- data/lib/active_admin/filters/forms.rb +93 -0
- data/lib/active_admin/filters/resource_extension.rb +92 -0
- data/lib/active_admin/form_builder.rb +88 -33
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -1
- data/lib/active_admin/inputs/filter_select_input.rb +1 -1
- data/lib/active_admin/locales/bg.yml +37 -1
- data/lib/active_admin/locales/ca.yml +36 -0
- data/lib/active_admin/locales/cs.yml +36 -0
- data/lib/active_admin/locales/da.yml +36 -0
- data/lib/active_admin/locales/de.yml +42 -0
- data/lib/active_admin/locales/en.yml +27 -2
- data/lib/active_admin/locales/es.yml +45 -4
- data/lib/active_admin/locales/fr.yml +22 -0
- data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
- data/lib/active_admin/locales/hr.yml +49 -5
- data/lib/active_admin/locales/hu.yml +21 -0
- data/lib/active_admin/locales/it.yml +36 -1
- data/lib/active_admin/locales/ja.yml +36 -0
- data/lib/active_admin/locales/ko.yml +36 -1
- data/lib/active_admin/locales/lv.yml +28 -2
- data/lib/active_admin/locales/nl.yml +42 -1
- data/lib/active_admin/locales/no-NB.yml +15 -0
- data/lib/active_admin/locales/pl.yml +45 -1
- data/lib/active_admin/locales/pt-BR.yml +36 -1
- data/lib/active_admin/locales/ro.yml +67 -0
- data/lib/active_admin/locales/ru.yml +43 -3
- data/lib/active_admin/locales/sv-SE.yml +41 -1
- data/lib/active_admin/locales/tr.yml +80 -0
- data/lib/active_admin/locales/vi.yml +80 -0
- data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
- data/lib/active_admin/locales/zh-TW.yml +36 -1
- data/lib/active_admin/menu.rb +55 -30
- data/lib/active_admin/menu_builder.rb +65 -0
- data/lib/active_admin/menu_item.rb +55 -14
- data/lib/active_admin/namespace.rb +25 -55
- data/lib/active_admin/page.rb +15 -10
- data/lib/active_admin/resource.rb +9 -0
- data/lib/active_admin/resource/action_items.rb +4 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +19 -21
- data/lib/active_admin/resource/naming.rb +55 -45
- data/lib/active_admin/resource/sidebars.rb +0 -13
- data/lib/active_admin/resource_collection.rb +10 -10
- data/lib/active_admin/resource_controller.rb +5 -5
- data/lib/active_admin/resource_controller/actions.rb +2 -0
- data/lib/active_admin/resource_controller/collection.rb +13 -4
- data/lib/active_admin/resource_dsl.rb +12 -6
- data/lib/active_admin/router.rb +27 -8
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +2 -6
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +18 -13
- data/lib/active_admin/view_helpers.rb +0 -2
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/fields_for.rb +44 -0
- data/lib/active_admin/view_helpers/form_helper.rb +6 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -2
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/paginated_collection.rb +13 -14
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +8 -13
- data/lib/active_admin/views/components/sidebar_section.rb +1 -1
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +4 -4
- data/lib/active_admin/views/components/table_for.rb +18 -18
- data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
- data/lib/active_admin/views/footer.rb +18 -0
- data/lib/active_admin/views/header.rb +31 -0
- data/lib/active_admin/views/index_as_block.rb +3 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -0
- data/lib/active_admin/views/index_as_grid.rb +2 -0
- data/lib/active_admin/views/index_as_table.rb +19 -6
- data/lib/active_admin/views/pages/base.rb +14 -48
- data/lib/active_admin/views/pages/form.rb +3 -3
- data/lib/active_admin/views/pages/index.rb +56 -24
- data/lib/active_admin/views/pages/layout.rb +2 -2
- data/lib/active_admin/views/pages/page.rb +10 -4
- data/lib/active_admin/views/pages/show.rb +11 -8
- data/lib/active_admin/views/tabbed_navigation.rb +3 -3
- data/lib/active_admin/views/title_bar.rb +50 -0
- data/lib/active_admin/views/utility_nav.rb +41 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
- data/lib/generators/active_admin/install/install_generator.rb +10 -10
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
- data/spec/integration/memory_spec.rb +1 -11
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +13 -13
- data/spec/spec_helper_without_rails.rb +2 -3
- data/spec/support/detect_rails_version.rb +16 -10
- data/spec/support/rails_template.rb +13 -1
- data/spec/support/templates/admin/stores.rb +1 -0
- data/spec/support/templates/en.yml +6 -0
- data/spec/unit/action_builder_spec.rb +38 -0
- data/spec/unit/application_spec.rb +12 -16
- data/spec/unit/base_controller_shared_examples.rb +3 -6
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/breadcrumbs_spec.rb +33 -0
- data/spec/unit/comments_spec.rb +6 -0
- data/spec/unit/config_shared_examples.rb +17 -64
- data/spec/unit/csv_builder_spec.rb +12 -2
- data/spec/unit/dashboard_controller_spec.rb +11 -5
- data/spec/unit/dsl_include_spec.rb +20 -0
- data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
- data/spec/unit/filters/resource_spec.rb +60 -0
- data/spec/unit/form_builder_spec.rb +180 -28
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/menu_item_spec.rb +48 -53
- data/spec/unit/menu_spec.rb +46 -32
- data/spec/unit/namespace/register_page_spec.rb +0 -6
- data/spec/unit/namespace/register_resource_spec.rb +1 -8
- data/spec/unit/namespace_spec.rb +8 -2
- data/spec/unit/page_spec.rb +20 -8
- data/spec/unit/resource/naming_spec.rb +27 -26
- data/spec/unit/resource/sidebars_spec.rb +0 -7
- data/spec/unit/resource_collection_spec.rb +11 -11
- data/spec/unit/resource_controller/collection_spec.rb +23 -1
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +43 -0
- data/spec/unit/resource_registration_spec.rb +2 -13
- data/spec/unit/resource_spec.rb +0 -42
- data/spec/unit/routing_spec.rb +60 -14
- data/spec/unit/scope_spec.rb +7 -0
- data/spec/unit/view_factory_spec.rb +9 -6
- data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +32 -20
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +5 -3
- data/spec/unit/views/components/columns_spec.rb +32 -22
- data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
- data/spec/unit/views/components/panel_spec.rb +11 -6
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +17 -10
- data/spec/unit/views/components/table_for_spec.rb +37 -17
- data/spec/unit/views/pages/layout_spec.rb +51 -10
- data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
- data/tasks/js.rake +32 -0
- data/tasks/test.rake +1 -1
- metadata +233 -200
- data/lib/active_admin/arbre.rb +0 -22
- data/lib/active_admin/arbre/builder.rb +0 -125
- data/lib/active_admin/arbre/context.rb +0 -45
- data/lib/active_admin/arbre/html/attributes.rb +0 -20
- data/lib/active_admin/arbre/html/class_list.rb +0 -24
- data/lib/active_admin/arbre/html/collection.rb +0 -27
- data/lib/active_admin/arbre/html/document.rb +0 -42
- data/lib/active_admin/arbre/html/element.rb +0 -161
- data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
- data/lib/active_admin/arbre/html/tag.rb +0 -145
- data/lib/active_admin/arbre/html/text_node.rb +0 -35
- data/lib/active_admin/filter_form_builder.rb +0 -53
- data/lib/active_admin/renderer.rb +0 -87
- data/lib/active_admin/resource_controller/filters.rb +0 -58
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
- data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
- data/lib/active_admin/views/header_renderer.rb +0 -82
- data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
- data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
- data/spec/unit/arbre/context_spec.rb +0 -35
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
- data/spec/unit/arbre/html/element_spec.rb +0 -236
- data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
- data/spec/unit/arbre/html/tag_spec.rb +0 -63
- data/spec/unit/arbre/html_spec.rb +0 -228
- data/spec/unit/renderer_spec.rb +0 -126
data/spec/unit/menu_spec.rb
CHANGED
@@ -1,52 +1,66 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper_without_rails'
|
2
|
+
require 'active_admin/menu'
|
3
|
+
require 'active_admin/menu_item'
|
4
|
+
|
5
|
+
include ActiveAdmin
|
2
6
|
|
3
7
|
describe ActiveAdmin::Menu do
|
4
8
|
|
5
9
|
context "with no items" do
|
6
|
-
|
7
|
-
|
10
|
+
|
11
|
+
it "should have an empty item collection" do
|
12
|
+
menu = Menu.new
|
13
|
+
menu.items.should be_empty
|
8
14
|
end
|
9
|
-
|
15
|
+
|
10
16
|
it "should accept new items" do
|
11
|
-
menu =
|
12
|
-
|
13
|
-
menu.
|
14
|
-
menu.items.first.
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should default new items to the priority of 10" do
|
18
|
-
menu = ActiveAdmin::Menu.new
|
19
|
-
menu.add "Dashboard", "/admin"
|
20
|
-
menu.items.first.priority.should == 10
|
17
|
+
menu = Menu.new
|
18
|
+
item = MenuItem.new
|
19
|
+
menu.add item
|
20
|
+
menu.items.first.should == item
|
21
21
|
end
|
22
|
+
|
22
23
|
end
|
23
|
-
|
24
|
+
|
24
25
|
context "with many item" do
|
25
26
|
let(:menu) do
|
26
|
-
|
27
|
-
m.add "Dashboard"
|
28
|
-
m.add "Blog"
|
29
|
-
m.add "Users", "/admin/users"
|
30
|
-
m.add "Settings", "/admin/settings" do |s|
|
31
|
-
s.add "Admin Settings", "/admin/settings/admin" do |as|
|
32
|
-
s.add "User Settings", "/admin/settings/users"
|
33
|
-
end
|
34
|
-
end
|
27
|
+
Menu.new do |m|
|
28
|
+
m.add MenuItem.new(:label => "Dashboard")
|
29
|
+
m.add MenuItem.new(:label => "Blog")
|
35
30
|
end
|
36
31
|
end
|
37
32
|
|
38
33
|
it "should give access to the menu item as an array" do
|
39
|
-
menu['Dashboard'].
|
34
|
+
menu['Dashboard'].label.should == 'Dashboard'
|
40
35
|
end
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
end
|
37
|
+
|
38
|
+
describe Menu::ItemCollection do
|
39
|
+
|
40
|
+
let(:collection) { Menu::ItemCollection.new }
|
41
|
+
|
42
|
+
it "should initialize" do
|
43
|
+
collection.should be_empty
|
44
44
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
|
46
|
+
describe "#find_by_id" do
|
47
|
+
let(:menu_item) { MenuItem.new(:id => "an_id") }
|
48
|
+
|
49
|
+
before do
|
50
|
+
collection.push menu_item
|
51
|
+
end
|
52
|
+
|
53
|
+
it "retrieve an item id" do
|
54
|
+
MenuItem.should_receive(:generate_item_id).with("an_id").and_return("an_id")
|
55
|
+
collection.find_by_id("an_id").should == menu_item
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns nil when no matching ids" do
|
59
|
+
collection.find_by_id("not matching").should == nil
|
60
|
+
end
|
61
|
+
|
48
62
|
end
|
49
|
-
|
63
|
+
|
50
64
|
end
|
51
65
|
|
52
66
|
end
|
@@ -20,7 +20,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should create a menu item" do
|
23
|
-
namespace.load_menu!
|
24
23
|
namespace.menu["Status"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
25
24
|
end
|
26
25
|
end # context "with no configuration"
|
@@ -39,7 +38,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
39
38
|
describe "adding as a top level item" do
|
40
39
|
before do
|
41
40
|
namespace.register_page "Status"
|
42
|
-
namespace.load_menu!
|
43
41
|
end
|
44
42
|
|
45
43
|
it "should add a new menu item" do
|
@@ -52,7 +50,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
52
50
|
namespace.register_page "Status" do
|
53
51
|
menu :parent => 'Extra'
|
54
52
|
end
|
55
|
-
namespace.load_menu!
|
56
53
|
end
|
57
54
|
it "should generate the parent menu item" do
|
58
55
|
namespace.menu['Extra'].should_not be_nil
|
@@ -67,7 +64,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
67
64
|
namespace.register_page "Status" do
|
68
65
|
menu false
|
69
66
|
end
|
70
|
-
namespace.load_menu!
|
71
67
|
end
|
72
68
|
it "should not create a menu item" do
|
73
69
|
namespace.menu["Status"].should be_nil
|
@@ -79,7 +75,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
79
75
|
namespace.register_page "Status" do
|
80
76
|
menu :priority => 2
|
81
77
|
end
|
82
|
-
namespace.load_menu!
|
83
78
|
end
|
84
79
|
it "should have a custom priority of 2" do
|
85
80
|
namespace.menu["Status"].priority.should == 2
|
@@ -91,7 +86,6 @@ describe ActiveAdmin::Namespace, "registering a page" do
|
|
91
86
|
namespace.register_page "Status" do
|
92
87
|
menu :if => proc { false }
|
93
88
|
end
|
94
|
-
namespace.load_menu!
|
95
89
|
end
|
96
90
|
it "should have a proc returning false" do
|
97
91
|
namespace.menu["Status"].display_if_block.should be_instance_of(Proc)
|
@@ -20,7 +20,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
20
20
|
defined?(Admin::DashboardController).should be_true
|
21
21
|
end
|
22
22
|
it "should create a menu item" do
|
23
|
-
namespace.load_menu!
|
24
23
|
namespace.menu["Categories"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
25
24
|
namespace.menu["Categories"].url.should == :admin_categories_path
|
26
25
|
end
|
@@ -43,13 +42,12 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
43
42
|
end
|
44
43
|
|
45
44
|
it "should store the namespaced registered configuration" do
|
46
|
-
namespace.resources.keys.should include('
|
45
|
+
namespace.resources.keys.should include('Mock::Resource')
|
47
46
|
end
|
48
47
|
it "should create a new controller in the default namespace" do
|
49
48
|
defined?(Admin::MockResourcesController).should be_true
|
50
49
|
end
|
51
50
|
it "should create a menu item" do
|
52
|
-
namespace.load_menu!
|
53
51
|
namespace.menu["Mock Resources"].should be_an_instance_of(ActiveAdmin::MenuItem)
|
54
52
|
end
|
55
53
|
|
@@ -88,7 +86,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
88
86
|
describe "adding as a top level item" do
|
89
87
|
before do
|
90
88
|
namespace.register Category
|
91
|
-
namespace.load_menu!
|
92
89
|
end
|
93
90
|
it "should add a new menu item" do
|
94
91
|
namespace.menu['Categories'].should_not be_nil
|
@@ -100,7 +97,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
100
97
|
namespace.register Category do
|
101
98
|
menu :parent => 'Blog'
|
102
99
|
end
|
103
|
-
namespace.load_menu!
|
104
100
|
end
|
105
101
|
it "should generate the parent menu item" do
|
106
102
|
namespace.menu['Blog'].should_not be_nil
|
@@ -115,7 +111,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
115
111
|
namespace.register Category do
|
116
112
|
menu false
|
117
113
|
end
|
118
|
-
namespace.load_menu!
|
119
114
|
end
|
120
115
|
it "should not create a menu item" do
|
121
116
|
namespace.menu["Categories"].should be_nil
|
@@ -127,7 +122,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
127
122
|
namespace.register Category do
|
128
123
|
menu :priority => 2
|
129
124
|
end
|
130
|
-
namespace.load_menu!
|
131
125
|
end
|
132
126
|
it "should have a custom priority of 2" do
|
133
127
|
namespace.menu["Categories"].priority.should == 2
|
@@ -139,7 +133,6 @@ describe ActiveAdmin::Namespace, "registering a resource" do
|
|
139
133
|
namespace.register Category do
|
140
134
|
menu :if => proc { false }
|
141
135
|
end
|
142
|
-
namespace.load_menu!
|
143
136
|
end
|
144
137
|
it "should have a proc returning false" do
|
145
138
|
namespace.menu["Categories"].display_if_block.should be_instance_of(Proc)
|
data/spec/unit/namespace_spec.rb
CHANGED
@@ -19,8 +19,14 @@ describe ActiveAdmin::Namespace do
|
|
19
19
|
namespace.resources.resources.should be_empty
|
20
20
|
end
|
21
21
|
|
22
|
-
it "should have
|
23
|
-
|
22
|
+
it "should not have any menu item" do
|
23
|
+
if ActiveAdmin::Dashboards.built?
|
24
|
+
# DEPRECATED behavior. If a dashboard was built while running this
|
25
|
+
# spec, then an item gets added to the menu
|
26
|
+
namespace.menu.should have(1).item
|
27
|
+
else
|
28
|
+
namespace.menu.items.should be_empty
|
29
|
+
end
|
24
30
|
end
|
25
31
|
end # context "when new"
|
26
32
|
|
data/spec/unit/page_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require File.expand_path('config_shared_examples', File.dirname(__FILE__))
|
3
5
|
|
@@ -11,36 +13,46 @@ module ActiveAdmin
|
|
11
13
|
let(:namespace){ Namespace.new(application, :admin) }
|
12
14
|
|
13
15
|
def config(options = {})
|
14
|
-
@config ||=
|
16
|
+
@config ||= namespace.register_page("Chocolate I lØve You!", options)
|
15
17
|
end
|
16
18
|
|
17
19
|
describe "controller name" do
|
18
20
|
it "should return a namespaced controller name" do
|
19
|
-
config.controller_name.should == "Admin::
|
21
|
+
config.controller_name.should == "Admin::ChocolateILoveYouController"
|
20
22
|
end
|
21
23
|
context "when non namespaced controller" do
|
22
24
|
let(:namespace){ ActiveAdmin::Namespace.new(application, :root) }
|
23
25
|
it "should return a non namespaced controller name" do
|
24
|
-
config.controller_name.should == "
|
26
|
+
config.controller_name.should == "ChocolateILoveYouController"
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
29
31
|
describe "#resource_name" do
|
30
32
|
it "returns the name" do
|
31
|
-
config.resource_name.should == "
|
33
|
+
config.resource_name.should == "Chocolate I lØve You!"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "returns the singular, lowercase name" do
|
37
|
+
config.resource_name.singular.should == "chocolate i lØve you!"
|
32
38
|
end
|
33
39
|
end
|
34
40
|
|
35
|
-
describe "#
|
41
|
+
describe "#plural_resource_label" do
|
36
42
|
it "returns the singular name" do
|
37
|
-
config.
|
43
|
+
config.plural_resource_label.should == "Chocolate I lØve You!"
|
38
44
|
end
|
39
45
|
end
|
40
46
|
|
41
47
|
describe "#underscored_resource_name" do
|
42
|
-
it "returns the
|
43
|
-
config.underscored_resource_name.should == "
|
48
|
+
it "returns the resource name underscored" do
|
49
|
+
config.underscored_resource_name.should == "chocolate_i_love_you"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#camelized_resource_name" do
|
54
|
+
it "returns the resource name camel case" do
|
55
|
+
config.camelized_resource_name.should == "ChocolateILoveYou"
|
44
56
|
end
|
45
57
|
end
|
46
58
|
|
@@ -12,64 +12,65 @@ module ActiveAdmin
|
|
12
12
|
@config ||= Resource.new(namespace, Category, options)
|
13
13
|
end
|
14
14
|
|
15
|
+
module ::Mock class Resource < ActiveRecord::Base; end; end
|
16
|
+
module NoActiveModel class Resource; end; end
|
15
17
|
|
16
|
-
describe "
|
18
|
+
describe "singular resource name" do
|
17
19
|
context "when class" do
|
18
|
-
it "should be the underscored
|
19
|
-
config.
|
20
|
+
it "should be the underscored singular resource name" do
|
21
|
+
config.resource_name.singular.should == "category"
|
20
22
|
end
|
21
23
|
end
|
22
24
|
context "when a class in a module" do
|
23
25
|
it "should underscore the module and the class" do
|
24
|
-
|
25
|
-
Resource.new(namespace, Mock::Resource).underscored_resource_name.should == "mock_resource"
|
26
|
+
Resource.new(namespace, Mock::Resource).resource_name.singular.should == "mock_resource"
|
26
27
|
end
|
27
28
|
end
|
28
29
|
context "when you pass the 'as' option" do
|
29
30
|
it "should underscore the passed through string" do
|
30
|
-
config(:as => "Blog Category").
|
31
|
+
config(:as => "Blog Category").resource_name.singular.should == "blog_category"
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
|
-
describe "
|
36
|
-
it "should return a camelized version of the underscored resource name" do
|
37
|
-
config(:as => "Blog category").camelized_resource_name.should == "BlogCategory"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "resource name" do
|
36
|
+
describe "resource label" do
|
42
37
|
it "should return a pretty name" do
|
43
|
-
config.
|
38
|
+
config.resource_label.should == "Category"
|
44
39
|
end
|
45
40
|
|
46
41
|
it "should return the plural version" do
|
47
|
-
config.
|
42
|
+
config.plural_resource_label.should == "Categories"
|
48
43
|
end
|
49
44
|
|
50
45
|
context "when the :as option is given" do
|
51
46
|
it "should return the custom name" do
|
52
|
-
config(:as => "My Category").
|
47
|
+
config(:as => "My Category").resource_label.should == "My Category"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "when a class in a module" do
|
52
|
+
it "should include the module and the class" do
|
53
|
+
Resource.new(namespace, Mock::Resource).resource_label.should == "Mock Resource"
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should include the module and the pluralized class" do
|
57
|
+
Resource.new(namespace, Mock::Resource).plural_resource_label.should == "Mock Resources"
|
53
58
|
end
|
54
59
|
end
|
55
60
|
|
56
61
|
describe "I18n integration" do
|
57
|
-
describe "singular
|
62
|
+
describe "singular label" do
|
58
63
|
it "should return the titleized model_name.human" do
|
59
|
-
|
64
|
+
config.resource_name.should_receive(:human).and_return "Da category"
|
60
65
|
|
61
|
-
config.
|
66
|
+
config.resource_label.should == "Da category"
|
62
67
|
end
|
63
68
|
end
|
64
69
|
|
65
|
-
describe "plural
|
70
|
+
describe "plural label" do
|
66
71
|
it "should return the titleized plural version defined by i18n if available" do
|
67
|
-
|
68
|
-
|
69
|
-
I18n.should_receive(:translate!).
|
70
|
-
with("activerecord.models.category.other").
|
71
|
-
and_return("Da categories")
|
72
|
-
config.plural_resource_name.should == "Da Categories"
|
72
|
+
I18n.should_receive(:translate).at_least(:once).and_return("Da categories")
|
73
|
+
config.plural_resource_label.should == "Da categories"
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
@@ -12,19 +12,19 @@ describe ActiveAdmin::ResourceCollection do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should be enumerable" do
|
15
|
-
resource = mock(:
|
15
|
+
resource = mock(:resource_name => "MyResource")
|
16
16
|
collection.add(resource)
|
17
17
|
collection.each{|r| r.should == resource }
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should return the available keys" do
|
21
|
-
resource = mock(:
|
21
|
+
resource = mock(:resource_name => "MyResource")
|
22
22
|
collection.add resource
|
23
|
-
collection.keys.should == [resource.
|
23
|
+
collection.keys.should == [resource.resource_name]
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "adding a new resource" do
|
27
|
-
let(:resource){ mock(:
|
27
|
+
let(:resource){ mock(:resource_name => "MyResource") }
|
28
28
|
|
29
29
|
it "should return the resource" do
|
30
30
|
collection.add(resource).should == resource
|
@@ -37,13 +37,13 @@ describe ActiveAdmin::ResourceCollection do
|
|
37
37
|
|
38
38
|
it "should be available by name" do
|
39
39
|
collection.add(resource)
|
40
|
-
collection.find_by_key(resource.
|
40
|
+
collection.find_by_key(resource.resource_name).should == resource
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
describe "adding a new resource when the key already exists" do
|
45
|
-
let(:stored_resource){ mock(:
|
46
|
-
let(:resource){ mock(:
|
45
|
+
let(:stored_resource){ mock(:resource_name => "MyResource") }
|
46
|
+
let(:resource){ mock(:resource_name => "MyResource") }
|
47
47
|
|
48
48
|
before do
|
49
49
|
collection.add(stored_resource)
|
@@ -60,8 +60,8 @@ describe ActiveAdmin::ResourceCollection do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
describe "adding an existing resource key with a different resource class" do
|
63
|
-
let(:stored_resource){ mock(:
|
64
|
-
let(:resource){ mock(:
|
63
|
+
let(:stored_resource){ mock(:resource_name => "MyResource", :resource_class => mock) }
|
64
|
+
let(:resource){ mock(:resource_name => "MyResource", :resource_class => mock) }
|
65
65
|
|
66
66
|
it "should raise a ActiveAdmin::ResourceMismatchError" do
|
67
67
|
collection.add(stored_resource)
|
@@ -75,9 +75,9 @@ describe ActiveAdmin::ResourceCollection do
|
|
75
75
|
describe "#find_by_resource_class" do
|
76
76
|
|
77
77
|
let(:base_class){ mock(:to_s => "BaseClass")}
|
78
|
-
let(:resource_from_base_class){ mock(:
|
78
|
+
let(:resource_from_base_class){ mock(:resource_name => "MyBaseClassResource", :resource_class => base_class )}
|
79
79
|
let(:resource_class){ mock(:base_class => base_class, :to_s => "ResourceClass") }
|
80
|
-
let(:resource){ mock(:
|
80
|
+
let(:resource){ mock(:resource_name => "MyResource", :resource_class => resource_class) }
|
81
81
|
|
82
82
|
it "should find a resource when it's in the collection" do
|
83
83
|
collection.add resource
|