andrewroth_activeadmin 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +35 -0
- data/.travis.yml +4 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +301 -0
- data/Gemfile +40 -0
- data/Guardfile +8 -0
- data/LICENSE +25 -0
- data/README.rdoc +113 -0
- data/Rakefile +18 -0
- data/activeadmin.gemspec +28 -0
- data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
- data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
- data/app/assets/images/active_admin/loading.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.js +12 -0
- data/app/assets/javascripts/active_admin/vendor.js +382 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +363 -0
- data/app/assets/stylesheets/active_admin/_forms.css.scss +259 -0
- data/app/assets/stylesheets/active_admin/_header.css.scss +121 -0
- data/app/assets/stylesheets/active_admin/_mixins.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/_typography.css.scss +102 -0
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +125 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +39 -0
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +68 -0
- data/app/assets/stylesheets/active_admin/mixins/_all.css.scss +10 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +27 -0
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +29 -0
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +20 -0
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +165 -0
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +43 -0
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +34 -0
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +21 -0
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +21 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/active_admin/devise/passwords/edit.html.erb +16 -0
- data/app/views/active_admin/devise/passwords/new.html.erb +14 -0
- data/app/views/active_admin/devise/sessions/new.html.erb +18 -0
- data/app/views/active_admin/devise/shared/_links.erb +20 -0
- data/app/views/active_admin/devise/unlocks/new.html.erb +12 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.csv.erb +20 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +35 -0
- data/cucumber.yml +2 -0
- data/docs/0-installation.md +50 -0
- data/docs/1-general-configuration.md +43 -0
- data/docs/2-resource-customization.md +114 -0
- data/docs/3-index-pages.md +55 -0
- data/docs/3-index-pages/index-as-block.md +16 -0
- data/docs/3-index-pages/index-as-blog.md +61 -0
- data/docs/3-index-pages/index-as-grid.md +21 -0
- data/docs/3-index-pages/index-as-table.md +90 -0
- data/docs/4-csv-format.md +14 -0
- data/docs/5-forms.md +39 -0
- data/docs/6-show-screens.md +36 -0
- data/docs/7-sidebars.md +35 -0
- data/docs/8-custom-actions.md +123 -0
- data/features/comments/commenting.feature +112 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -0
- data/features/edit_page.feature +106 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/filters.feature +35 -0
- data/features/index/format_as_csv.feature +46 -0
- data/features/index/formats.feature +12 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +81 -0
- data/features/index/index_blank_slate.feature +56 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +17 -0
- data/features/menu.feature +37 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +127 -0
- data/features/specifying_actions.feature +87 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +77 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +13 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/dashboard_steps.rb +11 -0
- data/features/step_definitions/factory_steps.rb +29 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +35 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/layout_steps.rb +3 -0
- data/features/step_definitions/menu_steps.rb +7 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +7 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +26 -0
- data/features/step_definitions/web_steps.rb +211 -0
- data/features/sti_resource.feature +61 -0
- data/features/support/env.rb +96 -0
- data/features/support/paths.rb +50 -0
- data/features/support/selectors.rb +45 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +82 -0
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/application.rb +231 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/builder.rb +111 -0
- data/lib/active_admin/arbre/context.rb +45 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/html/attributes.rb +20 -0
- data/lib/active_admin/arbre/html/class_list.rb +28 -0
- data/lib/active_admin/arbre/html/collection.rb +27 -0
- data/lib/active_admin/arbre/html/document.rb +42 -0
- data/lib/active_admin/arbre/html/element.rb +151 -0
- data/lib/active_admin/arbre/html/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/html/tag.rb +137 -0
- data/lib/active_admin/arbre/html/text_node.rb +35 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +89 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +38 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/dependency_checker.rb +30 -0
- data/lib/active_admin/deprecation.rb +36 -0
- data/lib/active_admin/devise.rb +54 -0
- data/lib/active_admin/dsl.rb +224 -0
- data/lib/active_admin/engine.rb +4 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +118 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/helpers/scope_chain.rb +23 -0
- data/lib/active_admin/helpers/settings.rb +70 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/locales/bg.yml +40 -0
- data/lib/active_admin/locales/cs.yml +34 -0
- data/lib/active_admin/locales/da.yml +28 -0
- data/lib/active_admin/locales/en.yml +40 -0
- data/lib/active_admin/locales/es.yml +40 -0
- data/lib/active_admin/locales/fr.yml +40 -0
- data/lib/active_admin/locales/it.yml +40 -0
- data/lib/active_admin/locales/ja.yml +40 -0
- data/lib/active_admin/locales/pl.yml +34 -0
- data/lib/active_admin/locales/pt-BR.yml +41 -0
- data/lib/active_admin/locales/ru.yml +40 -0
- data/lib/active_admin/locales/sv-SE.yml +40 -0
- data/lib/active_admin/locales/zh_cn.yml +40 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +206 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/reloader.rb +64 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource.rb +159 -0
- data/lib/active_admin/resource/action_items.rb +88 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource/menu.rb +45 -0
- data/lib/active_admin/resource/naming.rb +50 -0
- data/lib/active_admin/resource/scopes.rb +33 -0
- data/lib/active_admin/resource/sidebars.rb +36 -0
- data/lib/active_admin/resource_controller.rb +105 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +138 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +18 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/sass/active_admin.scss +3 -0
- data/lib/active_admin/sass/css_loader.rb +16 -0
- data/lib/active_admin/sass/helpers.rb +45 -0
- data/lib/active_admin/scope.rb +31 -0
- data/lib/active_admin/sidebar_section.rb +41 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +23 -0
- data/lib/active_admin/view_helpers.rb +22 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +186 -0
- data/lib/active_admin/view_helpers/form_helper.rb +13 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/blank_slate.rb +17 -0
- data/lib/active_admin/views/components/columns.rb +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +69 -0
- data/lib/active_admin/views/components/sidebar_section.rb +28 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +57 -0
- data/lib/active_admin/views/index_as_block.rb +29 -0
- data/lib/active_admin/views/index_as_blog.rb +129 -0
- data/lib/active_admin/views/index_as_grid.rb +70 -0
- data/lib/active_admin/views/index_as_table.rb +164 -0
- data/lib/active_admin/views/pages/base.rb +167 -0
- data/lib/active_admin/views/pages/dashboard.rb +62 -0
- data/lib/active_admin/views/pages/edit.rb +28 -0
- data/lib/active_admin/views/pages/index.rb +91 -0
- data/lib/active_admin/views/pages/layout.rb +26 -0
- data/lib/active_admin/views/pages/new.rb +28 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabbed_navigation.rb +94 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +21 -0
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +427 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +6 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/dashboards.rb +36 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +44 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +103 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/script/local +44 -0
- data/script/use_rails +46 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/default_namespace.rb +77 -0
- data/spec/integration/javascript_spec.rb +20 -0
- data/spec/integration/memory_spec.rb +38 -0
- data/spec/integration/stylesheets_spec.rb +41 -0
- data/spec/spec_helper.rb +167 -0
- data/spec/support/detect_rails_version.rb +10 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/jslint.yml +80 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +33 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/active_admin_spec.rb +17 -0
- data/spec/unit/application_spec.rb +87 -0
- data/spec/unit/arbre/context_spec.rb +35 -0
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +223 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +209 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/controller_filters_spec.rb +34 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- data/spec/unit/devise_spec.rb +66 -0
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +182 -0
- data/spec/unit/form_builder_spec.rb +256 -0
- data/spec/unit/generators/install_rails_3_1_spec.rb +16 -0
- data/spec/unit/helpers/scope_chain_spec.rb +36 -0
- data/spec/unit/helpers/settings_spec.rb +30 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +214 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/rails_spec.rb +43 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/reloader_spec.rb +80 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource/action_items_spec.rb +62 -0
- data/spec/unit/resource/menu_spec.rb +80 -0
- data/spec/unit/resource/naming_spec.rb +75 -0
- data/spec/unit/resource/scopes_spec.rb +30 -0
- data/spec/unit/resource/sidebars_spec.rb +50 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +152 -0
- data/spec/unit/resource_spec.rb +269 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/sass/helpers_spec.rb +47 -0
- data/spec/unit/scope_spec.rb +41 -0
- data/spec/unit/view_factory_spec.rb +19 -0
- data/spec/unit/views/components/attributes_table_spec.rb +100 -0
- data/spec/unit/views/components/blank_slate_spec.rb +15 -0
- data/spec/unit/views/components/columns_spec.rb +75 -0
- data/spec/unit/views/components/panel_spec.rb +29 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/views/components/status_tag_spec.rb +79 -0
- data/spec/unit/views/components/table_for_spec.rb +131 -0
- data/spec/unit/views/pages/layout_spec.rb +22 -0
- data/spec/unit/views/tabbed_navigation_spec.rb +125 -0
- data/tasks/docs.rake +39 -0
- data/tasks/test.rake +57 -0
- data/tasks/yard.rake +6 -0
- metadata +646 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::StatusTag do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
6
|
+
|
|
7
|
+
describe "#status_tag" do
|
|
8
|
+
subject { status_tag(nil) }
|
|
9
|
+
|
|
10
|
+
its(:tag_name) { should == 'span' }
|
|
11
|
+
its(:class_list) { should include('status') }
|
|
12
|
+
|
|
13
|
+
context "when status is 'completed'" do
|
|
14
|
+
subject { status_tag('completed') }
|
|
15
|
+
|
|
16
|
+
its(:tag_name) { should == 'span' }
|
|
17
|
+
its(:class_list) { should include('status') }
|
|
18
|
+
its(:class_list) { should include('completed') }
|
|
19
|
+
its(:content) { should == 'Completed' }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "when status is 'in_progress'" do
|
|
23
|
+
subject { status_tag('in_progress') }
|
|
24
|
+
|
|
25
|
+
its(:class_list) { should include('in_progress') }
|
|
26
|
+
its(:content) { should == 'In Progress' }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "when status is 'In progress'" do
|
|
30
|
+
subject { status_tag('In progress') }
|
|
31
|
+
|
|
32
|
+
its(:class_list) { should include('in_progress') }
|
|
33
|
+
its(:content) { should == 'In Progress' }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "when status is an empty string" do
|
|
37
|
+
subject { status_tag('') }
|
|
38
|
+
|
|
39
|
+
its(:class_list) { should include('status') }
|
|
40
|
+
its(:content) { should == '' }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context "when status is nil" do
|
|
44
|
+
subject { status_tag(nil) }
|
|
45
|
+
|
|
46
|
+
its(:class_list) { should include('status') }
|
|
47
|
+
its(:content) { should == '' }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "when status is 'Active' and type is :ok" do
|
|
51
|
+
subject { status_tag('Active', :ok) }
|
|
52
|
+
|
|
53
|
+
its(:class_list) { should include('status') }
|
|
54
|
+
its(:class_list) { should include('active') }
|
|
55
|
+
its(:class_list) { should include('ok') }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "when status is 'Active' and class is 'ok'" do
|
|
59
|
+
subject { status_tag('Active', :class => 'ok') }
|
|
60
|
+
|
|
61
|
+
its(:class_list) { should include('status') }
|
|
62
|
+
its(:class_list) { should include('active') }
|
|
63
|
+
its(:class_list) { should include('ok') }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "when status is 'So useless', type is :ok, class is 'woot awesome' and id is 'useless'" do
|
|
67
|
+
subject { status_tag('So useless', :ok, :class => 'woot awesome', :id => 'useless') }
|
|
68
|
+
|
|
69
|
+
its(:content) { should == 'So Useless' }
|
|
70
|
+
its(:class_list) { should include('status') }
|
|
71
|
+
its(:class_list) { should include('ok') }
|
|
72
|
+
its(:class_list) { should include('so_useless') }
|
|
73
|
+
its(:class_list) { should include('woot') }
|
|
74
|
+
its(:class_list) { should include('awesome') }
|
|
75
|
+
its(:id) { should == 'useless' }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end # describe "#status_tag"
|
|
79
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::TableFor do
|
|
4
|
+
describe "creating with the dsl" do
|
|
5
|
+
|
|
6
|
+
setup_arbre_context!
|
|
7
|
+
|
|
8
|
+
let(:assigns){ {} }
|
|
9
|
+
let(:helpers){ mock_action_view }
|
|
10
|
+
|
|
11
|
+
let(:collection) do
|
|
12
|
+
[Post.new(:title => "First Post"), Post.new(:title => "Second Post"), Post.new(:title => "Third Post")]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when creating a column with a symbol" do
|
|
16
|
+
let(:table) do
|
|
17
|
+
table_for(collection) do
|
|
18
|
+
column :title
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should create a table header based on the symbol" do
|
|
23
|
+
table.find_by_tag("th").first.content.should == "Title"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should create a table row for each element in the collection" do
|
|
27
|
+
table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
["First Post", "Second Post", "Third Post"].each_with_index do |content, index|
|
|
31
|
+
it "should create a cell with #{content}" do
|
|
32
|
+
table.find_by_tag("td")[index].content.should == content
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when creating many columns with symbols" do
|
|
38
|
+
let(:table) do
|
|
39
|
+
table_for(collection) do
|
|
40
|
+
column :title
|
|
41
|
+
column :created_at
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should create a table header based on the symbol" do
|
|
46
|
+
table.find_by_tag("th").first.content.should == "Title"
|
|
47
|
+
table.find_by_tag("th").last.content.should == "Created At"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should create a table row for each element in the collection" do
|
|
51
|
+
table.find_by_tag("tr").size.should == 4 # 1 for head, 3 for rows
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should create a cell for each column" do
|
|
55
|
+
table.find_by_tag("td").size.should == 6
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "when creating a column with block content" do
|
|
60
|
+
let(:table) do
|
|
61
|
+
table_for(collection) do
|
|
62
|
+
column :title do |post|
|
|
63
|
+
span(post.title)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
[ "<span>First Post</span>",
|
|
69
|
+
"<span>Second Post</span>",
|
|
70
|
+
"<span>Third Post</span>" ].each_with_index do |content, index|
|
|
71
|
+
it "should create a cell with #{content}" do
|
|
72
|
+
table.find_by_tag("td")[index].content.strip.should == content
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "when creating a column with multiple block content" do
|
|
78
|
+
let(:table) do
|
|
79
|
+
table_for(collection) do
|
|
80
|
+
column :title do |post|
|
|
81
|
+
span(post.title)
|
|
82
|
+
span(post.title)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
3.times do |index|
|
|
88
|
+
it "should create a cell with multiple elements in row #{index}" do
|
|
89
|
+
table.find_by_tag("td")[index].find_by_tag("span").size.should == 2
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe "column sorting" do
|
|
96
|
+
|
|
97
|
+
def build_column(*args, &block)
|
|
98
|
+
ActiveAdmin::Views::TableFor::Column.new(*args, &block)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
subject { table_column }
|
|
102
|
+
|
|
103
|
+
context "when default" do
|
|
104
|
+
let(:table_column){ build_column(:username) }
|
|
105
|
+
it { should be_sortable }
|
|
106
|
+
its(:sort_key){ should == "username" }
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
context "when a block given with no sort key" do
|
|
110
|
+
let(:table_column){ build_column("Username"){ } }
|
|
111
|
+
it { should_not be_sortable }
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
context "when a block given with a sort key" do
|
|
115
|
+
let(:table_column){ build_column("Username", :sortable => :username){ } }
|
|
116
|
+
it { should be_sortable }
|
|
117
|
+
its(:sort_key){ should == "username" }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context "when :sortable => false with a symbol" do
|
|
121
|
+
let(:table_column){ build_column(:username, :sortable => false) }
|
|
122
|
+
it { should_not be_sortable }
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
context "when :sortable => false with a symbol and string" do
|
|
126
|
+
let(:table_column){ build_column("Username", :username, :sortable => false) }
|
|
127
|
+
it { should_not be_sortable }
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::Pages::Layout do
|
|
4
|
+
|
|
5
|
+
describe "the page title" do
|
|
6
|
+
|
|
7
|
+
it "should be the @page_title if assigned in the controller" do
|
|
8
|
+
assigns = {:page_title => "My Page Title"}
|
|
9
|
+
layout = ActiveAdmin::Views::Pages::Layout.new(assigns, nil)
|
|
10
|
+
layout.title.should == "My Page Title"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should be the default translation" do
|
|
14
|
+
assigns = {}
|
|
15
|
+
helpers = mock(:params => {:action => 'edit'})
|
|
16
|
+
layout = ActiveAdmin::Views::Pages::Layout.new(assigns, helpers)
|
|
17
|
+
layout.title.should == "Edit"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveAdmin::Views::TabbedNavigation do
|
|
4
|
+
|
|
5
|
+
setup_arbre_context!
|
|
6
|
+
include ActiveAdmin::ViewHelpers
|
|
7
|
+
|
|
8
|
+
let(:menu){ ActiveAdmin::Menu.new }
|
|
9
|
+
let(:tabbed_navigation){ insert_tag(ActiveAdmin::Views::TabbedNavigation, menu) }
|
|
10
|
+
let(:html) { tabbed_navigation.to_s }
|
|
11
|
+
|
|
12
|
+
before do
|
|
13
|
+
helpers.stub!(:admin_logged_in?).and_return(false)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "rendering a menu" do
|
|
17
|
+
|
|
18
|
+
before do
|
|
19
|
+
menu.add "Blog Posts", "/admin/blog-posts"
|
|
20
|
+
menu.add "Reports", "/admin/reports"
|
|
21
|
+
reports = menu["Reports"]
|
|
22
|
+
reports.add "A Sub Reports", "/admin/a-sub-reports"
|
|
23
|
+
reports.add "B Sub Reports", "/admin/b-sub-reports"
|
|
24
|
+
menu.add "Administration", "/admin/administration"
|
|
25
|
+
administration = menu["Administration"]
|
|
26
|
+
administration.add "User administration", '/admin/user-administration', 10, :if => proc { false }
|
|
27
|
+
menu.add "Management", "#"
|
|
28
|
+
management = menu["Management"]
|
|
29
|
+
management.add "Order management", '/admin/order-management', 10, :if => proc { false }
|
|
30
|
+
management.add "Bill management", '/admin/bill-management', 10, :if => :admin_logged_in?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should generate a ul" do
|
|
34
|
+
html.should have_tag("ul")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should generate an li for each item" do
|
|
38
|
+
html.should have_tag("li", :parent => { :tag => "ul" })
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should generate a link for each item" do
|
|
42
|
+
html.should have_tag("a", "Blog Posts", :attributes => { :href => '/admin/blog-posts' })
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should generate a nested list for children" do
|
|
46
|
+
html.should have_tag("ul", :parent => { :tag => "li" })
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should generate a nested list with li for each child" do
|
|
50
|
+
html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "a_sub_reports"})
|
|
51
|
+
html.should have_tag("li", :parent => { :tag => "ul" }, :attributes => {:id => "b_sub_reports"})
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should not generate a link for user administration" do
|
|
55
|
+
html.should_not have_tag("a", "User administration", :attributes => { :href => '/admin/user-administration' })
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should generate the administration parent menu" do
|
|
59
|
+
html.should have_tag("a", "Administration", :attributes => { :href => '/admin/administration' })
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should not generate a link for order management" do
|
|
63
|
+
html.should_not have_tag("a", "Order management", :attributes => { :href => '/admin/order-management' })
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should not generate a link for bill management" do
|
|
67
|
+
html.should_not have_tag("a", "Bill management", :attributes => { :href => '/admin/bill-management' })
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should not generate the management parent menu" do
|
|
71
|
+
html.should_not have_tag("a", "Management", :attributes => { :href => '#' })
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe "marking current item" do
|
|
75
|
+
|
|
76
|
+
it "should add the 'current' class to the li" do
|
|
77
|
+
assigns[:current_tab] = "Blog Posts"
|
|
78
|
+
html.should have_tag("li", :attributes => { :class => "current" })
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should add the 'current' and 'has_nested' classes to the li and 'current' to the sub li" do
|
|
82
|
+
assigns[:current_tab] = "Reports/A Sub Reports"
|
|
83
|
+
html.should have_tag("li", :attributes => { :id => "reports", :class => "current has_nested" })
|
|
84
|
+
html.should have_tag("li", :attributes => { :id => "a_sub_reports", :class => "current" })
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "returning the menu items to display" do
|
|
92
|
+
|
|
93
|
+
it "should be reture one item with no if block" do
|
|
94
|
+
menu.add "Hello World", "/"
|
|
95
|
+
tabbed_navigation.menu_items.should == menu.items
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should not include a menu items with an if block that returns false" do
|
|
99
|
+
menu.add "Don't Show", "/", 10, :if => proc{ false }
|
|
100
|
+
tabbed_navigation.menu_items.should == []
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should not include menu items with an if block that calls a method that returns false" do
|
|
104
|
+
menu.add "Don't Show", "/", 10, :if => :admin_logged_in?
|
|
105
|
+
tabbed_navigation.menu_items.should == []
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "should not display any items that have no children to display" do
|
|
109
|
+
menu.add "Parent", "#" do |p|
|
|
110
|
+
p.add "Child", "/", 10, :if => proc{ false }
|
|
111
|
+
end
|
|
112
|
+
tabbed_navigation.menu_items.should == []
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "should display a parent that has a child to display" do
|
|
116
|
+
menu.add "Parent", "#" do |p|
|
|
117
|
+
p.add "Hidden Child", "/", 10, :if => proc{ false }
|
|
118
|
+
p.add "Child", "/"
|
|
119
|
+
end
|
|
120
|
+
tabbed_navigation.should have(1).menu_items
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
end
|
data/tasks/docs.rake
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
namespace :docs do
|
|
2
|
+
|
|
3
|
+
def rdoc_to_markdown(content)
|
|
4
|
+
content.gsub(/^ ?(=+) /) do |m|
|
|
5
|
+
m.gsub('=', '#')
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def prepare_docstring(content)
|
|
10
|
+
content = rdoc_to_markdown(content)
|
|
11
|
+
"<!-- Please don't edit this file. It will be clobbered. -->\n\n#{content}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def filename_from_module(mod)
|
|
15
|
+
mod.name.to_s.underscore.gsub('_', '-')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def write_docstrings_to(path, mods)
|
|
19
|
+
mods.each do |mod|
|
|
20
|
+
File.open("#{path}/#{filename_from_module(mod)}.md", 'w+') do |f|
|
|
21
|
+
f << prepare_docstring(mod.docstring)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
desc "Update docs in the docs folder"
|
|
27
|
+
task :build do
|
|
28
|
+
require 'yard'
|
|
29
|
+
require 'active_support/all'
|
|
30
|
+
|
|
31
|
+
YARD::Registry.load!
|
|
32
|
+
views = YARD::Registry.at("ActiveAdmin::Views")
|
|
33
|
+
|
|
34
|
+
# Index Types
|
|
35
|
+
index_types = views.children.select{|obj| obj.name.to_s =~ /^IndexAs/ }
|
|
36
|
+
write_docstrings_to "docs/3-index-pages", index_types
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
data/tasks/test.rake
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
desc "Creates a test rails app for the specs to run against"
|
|
2
|
+
task :setup do
|
|
3
|
+
require 'rails/version'
|
|
4
|
+
system("mkdir spec/rails") unless File.exists?("spec/rails")
|
|
5
|
+
system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
namespace :test do
|
|
9
|
+
desc "Run against the important versions of rails"
|
|
10
|
+
task :major_rails_versions do
|
|
11
|
+
current_version = detect_rails_version if File.exists?("Gemfile.lock")
|
|
12
|
+
["3.0.10", "3.1.0"].each do |version|
|
|
13
|
+
puts
|
|
14
|
+
puts
|
|
15
|
+
puts "== Using Rails #{version}"
|
|
16
|
+
cmd "./script/use_rails #{version}"
|
|
17
|
+
cmd "bundle exec rspec spec/unit"
|
|
18
|
+
cmd "bundle exec rspec spec/integration"
|
|
19
|
+
cmd "bundle exec cucumber features"
|
|
20
|
+
end
|
|
21
|
+
cmd "./script/use_rails #{current_version}" if current_version
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Run specs and cukes
|
|
27
|
+
task :test do
|
|
28
|
+
cmd "bundle exec rspec spec/unit"
|
|
29
|
+
cmd "bundle exec rspec spec/integration"
|
|
30
|
+
cmd "bundle exec cucumber features"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
namespace :spec do
|
|
34
|
+
desc "Run specs for all versions of rails"
|
|
35
|
+
task :all do
|
|
36
|
+
(0..6).to_a.each do |v|
|
|
37
|
+
puts "Running for Rails 3.0.#{v}"
|
|
38
|
+
cmd "rm Gemfile.lock" if File.exists?("Gemfile.lock")
|
|
39
|
+
cmd "/usr/bin/env RAILS=3.0.#{v} bundle install"
|
|
40
|
+
cmd "/usr/bin/env RAILS=3.0.#{v} rake spec"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
require 'cucumber/rake/task'
|
|
46
|
+
|
|
47
|
+
namespace :cucumber do
|
|
48
|
+
Cucumber::Rake::Task.new(:all) do |t|
|
|
49
|
+
t.profile = 'default'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
Cucumber::Rake::Task.new(:wip) do |t|
|
|
53
|
+
t.profile = 'wip'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
task :cucumber => "cucumber:all"
|