activeadmin 0.6.0 → 0.6.1
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/.gitignore +5 -1
- data/.travis.yml +1 -1
- data/.yardopts +2 -3
- data/CHANGELOG.md +180 -36
- data/CONTRIBUTING.md +12 -2
- data/Gemfile +9 -3
- data/README.rdoc +38 -65
- data/Rakefile +1 -3
- data/activeadmin.gemspec +10 -11
- data/app/assets/images/active_admin/index_list_icons/block_icon.svg +1 -1
- data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +1 -1
- data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +1 -1
- data/app/assets/images/active_admin/index_list_icons/table_icon.svg +1 -1
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +2 -2
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +2 -2
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +2 -2
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +2 -2
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +2 -1
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +6 -1
- data/app/assets/stylesheets/active_admin/_base.css.scss +29 -34
- data/app/assets/stylesheets/active_admin/_forms.css.scss +65 -62
- data/app/assets/stylesheets/active_admin/_header.css.scss +57 -45
- data/app/assets/stylesheets/active_admin/_typography.css.scss +9 -9
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +5 -5
- data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_comments.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +20 -20
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +16 -16
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +25 -23
- data/app/assets/stylesheets/active_admin/components/_grid.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_index_list.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -10
- data/app/assets/stylesheets/active_admin/components/_panels.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +27 -27
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +10 -10
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +9 -9
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +4 -4
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +4 -7
- data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +5 -5
- data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +6 -6
- data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +1 -1
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +9 -1
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +1 -1
- data/app/assets/stylesheets/active_admin/print.css.scss +2 -8
- data/app/assets/stylesheets/active_admin/structure/_footer.scss +5 -5
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +13 -13
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +14 -14
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/shared/_links.erb +8 -1
- data/app/views/active_admin/resource/index.csv.erb +3 -3
- data/app/views/layouts/active_admin_logged_out.html.erb +5 -3
- data/config/locales/bg.yml +101 -0
- data/{lib/active_admin → config}/locales/ca.yml +24 -7
- data/{lib/active_admin → config}/locales/cs.yml +34 -12
- data/{lib/active_admin → config}/locales/da.yml +29 -7
- data/config/locales/de-CH.yml +117 -0
- data/{lib/active_admin → config}/locales/de.yml +19 -9
- data/config/locales/en-GB.yml +90 -0
- data/{lib/active_admin → config}/locales/en.yml +16 -6
- data/config/locales/es.yml +106 -0
- data/{lib/active_admin/locales/es.yml → config/locales/es_MX.yml} +14 -8
- data/{lib/active_admin → config}/locales/fr.yml +14 -6
- data/{lib/active_admin → config}/locales/he.yml +16 -6
- data/{lib/active_admin → config}/locales/hr.yml +14 -6
- data/{lib/active_admin → config}/locales/hu.yml +31 -6
- data/{lib/active_admin → config}/locales/it.yml +14 -6
- data/{lib/active_admin → config}/locales/ja.yml +32 -7
- data/{lib/active_admin → config}/locales/ko.yml +14 -6
- data/{lib/active_admin → config}/locales/lt.yml +15 -6
- data/{lib/active_admin → config}/locales/lv.yml +14 -6
- data/{lib/active_admin → config}/locales/nl.yml +14 -6
- data/{lib/active_admin → config}/locales/no-NB.yml +14 -6
- data/{lib/active_admin → config}/locales/pl.yml +14 -6
- data/{lib/active_admin → config}/locales/pt-BR.yml +14 -6
- data/{lib/active_admin → config}/locales/pt-PT.yml +14 -6
- data/{lib/active_admin → config}/locales/ro.yml +32 -7
- data/{lib/active_admin → config}/locales/ru.yml +30 -8
- data/{lib/active_admin → config}/locales/sv-SE.yml +14 -6
- data/{lib/active_admin → config}/locales/tr.yml +15 -6
- data/config/locales/uk.yml +100 -0
- data/{lib/active_admin → config}/locales/vi.yml +15 -6
- data/{lib/active_admin → config}/locales/zh-CN.yml +15 -6
- data/{lib/active_admin → config}/locales/zh-TW.yml +15 -6
- data/docs/0-installation.md +22 -18
- data/docs/1-general-configuration.md +1 -1
- data/docs/10-custom-pages.md +3 -3
- data/docs/11-decorators.md +18 -2
- data/docs/12-arbre-components.md +53 -54
- data/docs/13-authorization-adapter.md +31 -10
- data/docs/2-resource-customization.md +16 -1
- data/docs/3-index-pages.md +13 -1
- data/docs/3-index-pages/create-an-index.md +4 -4
- data/docs/3-index-pages/index-as-block.md +1 -1
- data/docs/3-index-pages/index-as-blog.md +1 -1
- data/docs/3-index-pages/index-as-grid.md +1 -1
- data/docs/4-csv-format.md +4 -4
- data/docs/5-forms.md +46 -3
- data/docs/{6-show-screens.md → 6-show-pages.md} +3 -3
- data/docs/8-custom-actions.md +3 -3
- data/docs/9-batch-actions.md +9 -1
- data/features/action_item.feature +6 -6
- data/features/authorization_cancan.feature +1 -1
- data/features/belongs_to.feature +3 -3
- data/features/breadcrumb.feature +2 -2
- data/features/comments/commenting.feature +7 -5
- data/features/dashboard.feature +0 -51
- data/features/favicon.feature +20 -0
- data/features/global_navigation.feature +0 -1
- data/features/index/batch_actions.feature +12 -11
- data/features/index/filters.feature +6 -6
- data/features/index/format_as_csv.feature +4 -5
- data/features/index/index_as_blog.feature +20 -1
- data/features/index/index_as_table.feature +1 -1
- data/features/index/index_blank_slate.feature +3 -3
- data/features/index/index_parameters.feature +4 -10
- data/features/index/index_scope_to.feature +24 -0
- data/features/index/index_scopes.feature +17 -5
- data/features/index/pagination.feature +15 -0
- data/features/registering_pages.feature +1 -1
- data/features/registering_resources.feature +2 -2
- data/features/show/default_content.feature +3 -3
- data/features/sidebar_sections.feature +3 -3
- data/features/specifying_actions.feature +1 -1
- data/features/step_definitions/additional_web_steps.rb +3 -16
- data/features/step_definitions/asset_steps.rb +5 -1
- data/features/step_definitions/attribute_steps.rb +4 -4
- data/features/step_definitions/batch_action_steps.rb +25 -74
- data/features/step_definitions/breadcrumb_steps.rb +1 -3
- data/features/step_definitions/comment_steps.rb +0 -1
- data/features/step_definitions/configuration_steps.rb +53 -69
- data/features/step_definitions/dashboard_steps.rb +2 -2
- data/features/step_definitions/factory_steps.rb +17 -33
- data/features/step_definitions/filter_steps.rb +2 -2
- data/features/step_definitions/format_steps.rb +10 -14
- data/features/step_definitions/index_scope_steps.rb +9 -25
- data/features/step_definitions/index_views_steps.rb +1 -1
- data/features/step_definitions/sidebar_steps.rb +2 -1
- data/features/step_definitions/site_title_steps.rb +1 -1
- data/features/step_definitions/table_steps.rb +6 -1
- data/features/step_definitions/user_steps.rb +23 -38
- data/features/step_definitions/web_steps.rb +18 -147
- data/features/support/env.rb +13 -34
- data/features/support/paths.rb +2 -0
- data/features/users/logging_in.feature +2 -2
- data/features/users/logging_out.feature +0 -12
- data/features/users/resetting_password.feature +1 -1
- data/lib/active_admin.rb +4 -17
- data/lib/active_admin/abstract_view_factory.rb +1 -1
- data/lib/active_admin/application.rb +19 -28
- data/lib/active_admin/asset_registration.rb +7 -25
- data/lib/active_admin/authorization_adapter.rb +9 -5
- data/lib/active_admin/base_controller.rb +2 -2
- data/lib/active_admin/base_controller/authorization.rb +25 -27
- data/lib/active_admin/batch_actions/resource_extension.rb +3 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
- data/lib/active_admin/batch_actions/views/selection_cells.rb +1 -1
- data/lib/active_admin/callbacks.rb +1 -1
- data/lib/active_admin/cancan_adapter.rb +2 -2
- data/lib/active_admin/comments.rb +32 -38
- data/lib/active_admin/comments/comment.rb +6 -8
- data/lib/active_admin/comments/views.rb +0 -1
- data/lib/active_admin/comments/views/active_admin_comments.rb +27 -38
- data/lib/active_admin/csv_builder.rb +4 -6
- data/lib/active_admin/dependency_checker.rb +4 -0
- data/lib/active_admin/deprecation.rb +3 -3
- data/lib/active_admin/dsl.rb +5 -5
- data/lib/active_admin/engine.rb +1 -1
- data/lib/active_admin/filters.rb +2 -1
- data/lib/active_admin/filters/forms.rb +36 -43
- data/lib/active_admin/filters/formtastic_addons.rb +45 -0
- data/lib/active_admin/filters/resource_extension.rb +9 -1
- data/lib/active_admin/form_builder.rb +30 -19
- data/lib/active_admin/helpers/optional_display.rb +11 -13
- data/lib/active_admin/helpers/settings.rb +50 -8
- data/lib/active_admin/inputs/filter_base.rb +5 -18
- data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
- data/lib/active_admin/inputs/filter_boolean_input.rb +6 -14
- data/lib/active_admin/inputs/filter_check_boxes_input.rb +1 -1
- data/lib/active_admin/inputs/filter_numeric_input.rb +2 -47
- data/lib/active_admin/inputs/filter_select_input.rb +32 -10
- data/lib/active_admin/inputs/filter_string_input.rb +12 -14
- data/lib/active_admin/namespace.rb +8 -40
- data/lib/active_admin/page.rb +2 -2
- data/lib/active_admin/page_dsl.rb +1 -1
- data/lib/active_admin/reloader.rb +3 -3
- data/lib/active_admin/resource.rb +16 -23
- data/lib/active_admin/resource/belongs_to.rb +8 -5
- data/lib/active_admin/resource/menu.rb +10 -23
- data/lib/active_admin/resource/naming.rb +3 -3
- data/lib/active_admin/resource/page_presenters.rb +2 -2
- data/lib/active_admin/resource/routes.rb +74 -21
- data/lib/active_admin/resource/scope_to.rb +74 -0
- data/lib/active_admin/resource/scopes.rb +8 -4
- data/lib/active_admin/resource_collection.rb +20 -66
- data/lib/active_admin/resource_controller.rb +12 -16
- data/lib/active_admin/resource_controller/data_access.rb +19 -22
- data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -2
- data/lib/active_admin/resource_controller/scoping.rb +4 -9
- data/lib/active_admin/resource_dsl.rb +5 -32
- data/lib/active_admin/router.rb +34 -47
- data/lib/active_admin/scope.rb +5 -3
- data/lib/active_admin/sidebar_section.rb +1 -1
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +1 -1
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +8 -8
- data/lib/active_admin/view_helpers/display_helper.rb +15 -6
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -2
- data/lib/active_admin/view_helpers/form_helper.rb +6 -1
- data/lib/active_admin/view_helpers/icon_helper.rb +1 -1
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +5 -5
- data/lib/active_admin/view_helpers/title_helper.rb +1 -1
- data/lib/active_admin/views/components/action_list_popover.rb +6 -6
- data/lib/active_admin/views/components/attributes_table.rb +9 -12
- data/lib/active_admin/views/components/blank_slate.rb +4 -4
- data/lib/active_admin/views/components/columns.rb +1 -1
- data/lib/active_admin/views/components/index_list.rb +1 -1
- data/lib/active_admin/views/components/paginated_collection.rb +20 -12
- data/lib/active_admin/views/components/panel.rb +1 -1
- data/lib/active_admin/views/components/scopes.rb +2 -1
- data/lib/active_admin/views/components/sidebar_section.rb +1 -1
- data/lib/active_admin/views/components/status_tag.rb +1 -1
- data/lib/active_admin/views/header.rb +2 -2
- data/lib/active_admin/views/index_as_blog.rb +16 -3
- data/lib/active_admin/views/index_as_table.rb +2 -2
- data/lib/active_admin/views/pages/base.rb +8 -3
- data/lib/active_admin/views/pages/form.rb +2 -2
- data/lib/active_admin/views/pages/index.rb +19 -17
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -1
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +1 -13
- data/lib/generators/active_admin/devise/devise_generator.rb +22 -1
- data/lib/generators/active_admin/install/install_generator.rb +1 -5
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +40 -19
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +18 -18
- data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
- data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
- data/script/use_rails +1 -1
- data/spec/integration/memory_spec.rb +3 -2
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +4 -4
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +1 -1
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +2 -2
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +4 -4
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +1 -1
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +2 -2
- data/spec/spec_helper.rb +16 -6
- data/spec/spec_helper_without_rails.rb +2 -0
- data/spec/support/deferred_garbage_collection.rb +19 -0
- data/spec/support/jslint.yml +1 -1
- data/spec/support/rails_template.rb +29 -27
- data/spec/support/templates/admin/stores.rb +5 -1
- data/spec/unit/abstract_view_factory_spec.rb +1 -1
- data/spec/unit/action_builder_spec.rb +7 -7
- data/spec/unit/active_admin_spec.rb +0 -14
- data/spec/unit/application_spec.rb +16 -17
- data/spec/unit/asset_registration_spec.rb +21 -8
- data/spec/unit/authorization/authorization_adapter_spec.rb +3 -3
- data/spec/unit/authorization/controller_authorization_spec.rb +16 -24
- data/spec/unit/batch_actions/resource_spec.rb +11 -11
- data/spec/unit/belongs_to_spec.rb +1 -1
- data/spec/unit/cancan_adapter_spec.rb +11 -3
- data/spec/unit/comments_spec.rb +10 -28
- data/spec/unit/controller_filters_spec.rb +22 -24
- data/spec/unit/csv_builder_spec.rb +3 -3
- data/spec/unit/devise_spec.rb +10 -10
- data/spec/unit/filters/filter_form_builder_spec.rb +140 -45
- data/spec/unit/filters/resource_spec.rb +20 -19
- data/spec/unit/form_builder_spec.rb +122 -70
- data/spec/unit/menu_item_spec.rb +3 -3
- data/spec/unit/namespace/authorization_spec.rb +4 -8
- data/spec/unit/namespace/register_page_spec.rb +1 -1
- data/spec/unit/namespace/register_resource_spec.rb +12 -7
- data/spec/unit/namespace_spec.rb +4 -10
- data/spec/unit/page_spec.rb +1 -1
- data/spec/unit/resource/menu_spec.rb +1 -1
- data/spec/unit/resource/naming_spec.rb +9 -0
- data/spec/unit/resource/pagination_spec.rb +2 -2
- data/spec/unit/resource/routes_spec.rb +73 -0
- data/spec/unit/resource/scopes_spec.rb +1 -1
- data/spec/unit/resource_collection_spec.rb +95 -43
- data/spec/unit/resource_registration_spec.rb +3 -12
- data/spec/unit/resource_spec.rb +41 -48
- data/spec/unit/routing_spec.rb +10 -64
- data/spec/unit/scope_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +88 -0
- data/spec/unit/view_factory_spec.rb +1 -0
- data/spec/unit/{breadcrumbs_spec.rb → view_helpers/breadcrumbs_spec.rb} +16 -7
- data/spec/unit/view_helpers/display_name_spec.rb +41 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +36 -2
- data/spec/unit/views/components/attributes_table_spec.rb +17 -9
- data/spec/unit/views/components/batch_action_popover_spec.rb +4 -4
- data/spec/unit/views/components/index_list_spec.rb +2 -2
- data/spec/unit/views/components/paginated_collection_spec.rb +42 -0
- data/spec/unit/views/components/panel_spec.rb +8 -0
- data/spec/unit/views/components/site_title_spec.rb +2 -2
- data/spec/unit/views/components/table_for_spec.rb +4 -4
- data/spec/unit/views/pages/form_spec.rb +35 -0
- data/spec/unit/views/pages/layout_spec.rb +1 -1
- data/spec/unit/views/tabbed_navigation_spec.rb +10 -10
- data/tasks/parallel_tests.rake +1 -1
- data/tasks/test.rake +4 -1
- metadata +117 -106
- data/app/assets/stylesheets/active_admin/pages/_dashboard.scss +0 -5
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/dashboards.rb +0 -68
- data/lib/active_admin/dashboards/dashboard_controller.rb +0 -50
- data/lib/active_admin/dashboards/section.rb +0 -34
- data/lib/active_admin/locales/bg.yml +0 -77
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +0 -17
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +0 -26
- data/spec/unit/base_controller_spec.rb +0 -6
- data/spec/unit/dashboard_controller_spec.rb +0 -76
- data/spec/unit/dashboard_section_spec.rb +0 -56
- data/spec/unit/dashboards_spec.rb +0 -59
- data/spec/unit/display_name_spec.rb +0 -29
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
|
|
3
|
-
describe("
|
|
3
|
+
describe("ActiveAdmin.TableCheckboxToggler", function() {
|
|
4
4
|
beforeEach(function() {
|
|
5
5
|
loadFixtures('table_checkboxes.html');
|
|
6
6
|
this.collection = $("#collection");
|
|
7
7
|
this.toggle_all = this.collection.find(".toggle_all");
|
|
8
8
|
this.checkboxes = this.collection.find(":checkbox").not(this.toggle_all);
|
|
9
|
-
return new
|
|
9
|
+
return new ActiveAdmin.TableCheckboxToggler({}, this.collection);
|
|
10
10
|
});
|
|
11
11
|
describe("'selected' class for table row", function() {
|
|
12
12
|
it("should add the class 'selected' to rows when their checkbox is checked ", function() {
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper_without_rails'
|
|
2
2
|
|
|
3
3
|
module ActiveAdminIntegrationSpecHelper
|
|
4
4
|
extend self
|
|
@@ -37,13 +37,13 @@ module ActiveAdminIntegrationSpecHelper
|
|
|
37
37
|
reload_routes!
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
# Sets up a describe block where you can render controller
|
|
40
|
+
# Sets up a describe block where you can render controller
|
|
41
41
|
# actions. Uses the Admin::PostsController as the subject
|
|
42
42
|
# for the describe block
|
|
43
43
|
def describe_with_render(*args, &block)
|
|
44
44
|
describe *args do
|
|
45
45
|
include RSpec::Rails::ControllerExampleGroup
|
|
46
|
-
render_views
|
|
46
|
+
render_views
|
|
47
47
|
# metadata[:behaviour][:describes] = ActiveAdmin.namespaces[:admin].resources['Post'].controller
|
|
48
48
|
module_eval &block
|
|
49
49
|
end
|
|
@@ -73,7 +73,7 @@ module ActiveAdminIntegrationSpecHelper
|
|
|
73
73
|
ActionView::Base.send :include, ActiveAdmin::ViewHelpers
|
|
74
74
|
ActionView::Base.send :include, Rails.application.routes.url_helpers
|
|
75
75
|
ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
|
|
76
|
-
end
|
|
76
|
+
end
|
|
77
77
|
alias_method :action_view, :mock_action_view
|
|
78
78
|
|
|
79
79
|
# A mock resource to register
|
|
@@ -136,11 +136,11 @@ RSpec::Matchers.define :have_tag do |*args|
|
|
|
136
136
|
match_unless_raises Test::Unit::AssertionFailedError do |response|
|
|
137
137
|
tag = args.shift
|
|
138
138
|
content = args.first.is_a?(Hash) ? nil : args.shift
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
options = {
|
|
141
141
|
:tag => tag.to_s
|
|
142
142
|
}.merge(args[0] || {})
|
|
143
|
-
|
|
143
|
+
|
|
144
144
|
options[:content] = content if content
|
|
145
145
|
|
|
146
146
|
begin
|
|
@@ -163,3 +163,13 @@ end
|
|
|
163
163
|
# improve the performance of the specs suite by not logging anything
|
|
164
164
|
# see http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
|
|
165
165
|
Rails.logger.level = 4
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# Improves performance by forcing the garbage collector to run less often.
|
|
169
|
+
unless ENV['DEFER_GC'] == '0' || ENV['DEFER_GC'] == 'false'
|
|
170
|
+
require 'support/deferred_garbage_collection'
|
|
171
|
+
RSpec.configure do |config|
|
|
172
|
+
config.before(:all) { DeferredGarbageCollection.start }
|
|
173
|
+
config.after(:all) { DeferredGarbageCollection.reconsider }
|
|
174
|
+
end
|
|
175
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class DeferredGarbageCollection
|
|
2
|
+
|
|
3
|
+
DEFERRED_GC_THRESHOLD = (ENV['DEFER_GC'] || 15.0).to_f
|
|
4
|
+
|
|
5
|
+
@@last_gc_run = Time.now
|
|
6
|
+
|
|
7
|
+
def self.start
|
|
8
|
+
GC.disable
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.reconsider
|
|
12
|
+
if Time.now - @@last_gc_run >= DEFERRED_GC_THRESHOLD
|
|
13
|
+
GC.enable
|
|
14
|
+
GC.start
|
|
15
|
+
GC.disable
|
|
16
|
+
@@last_gc_run = Time.now
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/spec/support/jslint.yml
CHANGED
|
@@ -1,42 +1,50 @@
|
|
|
1
1
|
# Rails template to build the sample app for specs
|
|
2
2
|
|
|
3
3
|
# Create a cucumber database and environment
|
|
4
|
-
copy_file File.expand_path('../templates/cucumber.rb', __FILE__),
|
|
4
|
+
copy_file File.expand_path('../templates/cucumber.rb', __FILE__), "config/environments/cucumber.rb"
|
|
5
5
|
copy_file File.expand_path('../templates/cucumber_with_reloading.rb', __FILE__), "config/environments/cucumber_with_reloading.rb"
|
|
6
6
|
|
|
7
7
|
gsub_file 'config/database.yml', /^test:.*\n/, "test: &test\n"
|
|
8
8
|
gsub_file 'config/database.yml', /\z/, "\ncucumber:\n <<: *test\n database: db/cucumber.sqlite3"
|
|
9
9
|
gsub_file 'config/database.yml', /\z/, "\ncucumber_with_reloading:\n <<: *test\n database: db/cucumber.sqlite3"
|
|
10
10
|
|
|
11
|
-
# Generate some test models
|
|
12
11
|
generate :model, "post title:string body:text published_at:datetime author_id:integer category_id:integer starred:boolean"
|
|
13
|
-
inject_into_file 'app/models/post.rb',
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
inject_into_file 'app/models/post.rb', %q{
|
|
13
|
+
belongs_to :category
|
|
14
|
+
belongs_to :author, :class_name => 'User'
|
|
15
|
+
accepts_nested_attributes_for :author
|
|
16
|
+
attr_accessible :author if Rails::VERSION::STRING >= '3.2'
|
|
17
|
+
}, :after => 'class Post < ActiveRecord::Base'
|
|
16
18
|
copy_file File.expand_path('../templates/post_decorator.rb', __FILE__), "app/models/post_decorator.rb"
|
|
17
19
|
|
|
18
|
-
# Rails 3.2.3 model generator declare attr_accessible
|
|
19
|
-
inject_into_file 'app/models/post.rb', " attr_accessible :author\n", :before => "end" if Rails::VERSION::STRING >= '3.2'
|
|
20
20
|
generate :model, "user type:string first_name:string last_name:string username:string age:integer"
|
|
21
|
-
inject_into_file 'app/models/user.rb',
|
|
22
|
-
|
|
21
|
+
inject_into_file 'app/models/user.rb', %q{
|
|
22
|
+
has_many :posts, :foreign_key => 'author_id'
|
|
23
|
+
def display_name
|
|
24
|
+
"#{first_name} #{last_name}"
|
|
25
|
+
end
|
|
26
|
+
}, :after => 'class User < ActiveRecord::Base'
|
|
27
|
+
|
|
28
|
+
generate :model, 'publisher --migration=false --parent=User'
|
|
23
29
|
generate :model, 'category name:string description:text'
|
|
24
|
-
inject_into_file 'app/models/category.rb',
|
|
30
|
+
inject_into_file 'app/models/category.rb', %q{
|
|
31
|
+
has_many :posts
|
|
32
|
+
accepts_nested_attributes_for :posts
|
|
33
|
+
}, :after => 'class Category < ActiveRecord::Base'
|
|
25
34
|
generate :model, 'store name:string'
|
|
26
35
|
|
|
27
36
|
# Generate a model with string ids
|
|
28
37
|
generate :model, "tag name:string"
|
|
29
38
|
gsub_file(Dir['db/migrate/*_create_tags.rb'][0], /\:tags\sdo\s.*/, ":tags, :id => false, :primary_key => :id do |t|\n\t\t\tt.string :id\n")
|
|
30
|
-
|
|
39
|
+
inject_into_file 'app/models/tag.rb', %q{
|
|
31
40
|
self.primary_key = :id
|
|
32
41
|
before_create :set_id
|
|
33
|
-
|
|
42
|
+
|
|
34
43
|
private
|
|
35
44
|
def set_id
|
|
36
45
|
self.id = 8.times.inject("") { |s,e| s << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
|
|
37
46
|
end
|
|
38
|
-
|
|
39
|
-
inject_into_file 'app/models/tag.rb', id_model_setup, :after => "class Tag < ActiveRecord::Base\n"
|
|
47
|
+
}, :after => 'class Tag < ActiveRecord::Base'
|
|
40
48
|
|
|
41
49
|
if Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR == 1 #Rails 3.1 Gotcha
|
|
42
50
|
gsub_file 'app/models/tag.rb', /self\.primary_key.*$/, "define_attr_method :primary_key, :id"
|
|
@@ -60,18 +68,8 @@ run "rm -r spec"
|
|
|
60
68
|
|
|
61
69
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
62
70
|
|
|
63
|
-
# we need this routing path, named "logout_path", for testing
|
|
64
|
-
route <<-EOS
|
|
65
|
-
devise_scope :user do
|
|
66
|
-
match '/admin/logout' => 'active_admin/devise/sessions#destroy', :as => :logout
|
|
67
|
-
end
|
|
68
|
-
EOS
|
|
69
|
-
|
|
70
71
|
generate :'active_admin:install'
|
|
71
72
|
|
|
72
|
-
# Setup a root path for devise
|
|
73
|
-
route "root :to => 'admin/dashboard#index'"
|
|
74
|
-
|
|
75
73
|
rake "db:migrate"
|
|
76
74
|
rake "db:test:prepare"
|
|
77
75
|
run "/usr/bin/env RAILS_ENV=cucumber rake db:migrate"
|
|
@@ -88,8 +86,7 @@ setup_parallel_tests_database "cucumber.sqlite3", true
|
|
|
88
86
|
# Somehow, calling parallel_tests tasks from Rails generator using Thor does not work ...
|
|
89
87
|
# RAILS_ENV variable never makes it to parallel_tests tasks.
|
|
90
88
|
# We need to call these tasks in the after set up hook in order to creates cucumber DBs + run migrations on test & cucumber DBs
|
|
91
|
-
create_file 'lib/tasks/parallel.rake'
|
|
92
|
-
<<'RAKE'
|
|
89
|
+
create_file 'lib/tasks/parallel.rake', %q{
|
|
93
90
|
namespace :parallel do
|
|
94
91
|
def run_in_parallel(cmd, options)
|
|
95
92
|
count = "-n #{options[:count]}" if options[:count]
|
|
@@ -108,5 +105,10 @@ namespace :parallel do
|
|
|
108
105
|
run_in_parallel("rake db:schema:load RAILS_ENV=cucumber", args)
|
|
109
106
|
end
|
|
110
107
|
end
|
|
111
|
-
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# If using Devise after 3.1, this is required for the tests to pass:
|
|
111
|
+
require 'devise/version'
|
|
112
|
+
if Devise::VERSION.to_f >= 3.1
|
|
113
|
+
inject_into_file 'config/initializers/devise.rb', "\n config.allow_insecure_token_lookup = true", after: 'Devise.setup do |config|'
|
|
112
114
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe 'defining new actions from registration blocks' do
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
13
13
|
after(:each) do
|
|
14
14
|
controller.clear_member_actions!
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
context "with a block" do
|
|
18
18
|
let(:action!) do
|
|
19
19
|
ActiveAdmin.register Post do
|
|
@@ -22,7 +22,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
it "should create a new public instance method" do
|
|
27
27
|
controller.public_instance_methods.collect(&:to_s).should include("comment")
|
|
28
28
|
end
|
|
@@ -35,7 +35,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
context "without a block" do
|
|
38
|
-
let(:action!) do
|
|
38
|
+
let(:action!) do
|
|
39
39
|
ActiveAdmin.register Post do
|
|
40
40
|
member_action :comment
|
|
41
41
|
end
|
|
@@ -46,7 +46,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
context "with :title" do
|
|
49
|
-
let(:action!) do
|
|
49
|
+
let(:action!) do
|
|
50
50
|
ActiveAdmin.register Post do
|
|
51
51
|
member_action :comment, :title => "My Awesome Comment"
|
|
52
52
|
end
|
|
@@ -86,7 +86,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
context "without a block" do
|
|
89
|
-
let(:action!) do
|
|
89
|
+
let(:action!) do
|
|
90
90
|
ActiveAdmin.register Post do
|
|
91
91
|
collection_action :comments
|
|
92
92
|
end
|
|
@@ -96,7 +96,7 @@ describe 'defining new actions from registration blocks' do
|
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
context "with :title" do
|
|
99
|
-
let(:action!) do
|
|
99
|
+
let(:action!) do
|
|
100
100
|
ActiveAdmin.register Post do
|
|
101
101
|
collection_action :comments, :title => "My Awesome Comments"
|
|
102
102
|
end
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe ActiveAdmin do
|
|
4
|
-
describe "#default_namespace" do
|
|
5
|
-
it "should delegate to ActiveAdmin.application" do
|
|
6
|
-
ActiveAdmin.application.should_receive(:default_namespace)
|
|
7
|
-
|
|
8
|
-
ActiveAdmin.default_namespace
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "should be deprecated" do
|
|
12
|
-
ActiveAdmin::Deprecation.should_receive(:warn)
|
|
13
|
-
|
|
14
|
-
ActiveAdmin.default_namespace
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
4
|
%w(register register_page unload! load! routes).each do |method|
|
|
19
5
|
it "delegates ##{method} to application" do
|
|
20
6
|
ActiveAdmin.application.should_receive(method)
|
|
@@ -48,13 +48,18 @@ describe ActiveAdmin::Application do
|
|
|
48
48
|
application.site_title_image = "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
|
49
49
|
application.site_title_image.should == "http://railscasts.com/assets/episodes/stills/284-active-admin.png?1316476106"
|
|
50
50
|
end
|
|
51
|
+
|
|
52
|
+
it "should store the site's favicon" do
|
|
53
|
+
application.favicon.should == false
|
|
54
|
+
end
|
|
51
55
|
|
|
52
|
-
it "should
|
|
53
|
-
application.
|
|
56
|
+
it "should set the site's favicon" do
|
|
57
|
+
application.favicon = "/a/favicon.ico"
|
|
58
|
+
application.favicon.should == "/a/favicon.ico"
|
|
54
59
|
end
|
|
55
60
|
|
|
56
|
-
it "should have
|
|
57
|
-
application.
|
|
61
|
+
it "should have a view factory" do
|
|
62
|
+
application.view_factory.should be_an_instance_of(ActiveAdmin::ViewFactory)
|
|
58
63
|
end
|
|
59
64
|
|
|
60
65
|
it "should allow comments by default" do
|
|
@@ -80,19 +85,6 @@ describe ActiveAdmin::Application do
|
|
|
80
85
|
end
|
|
81
86
|
end
|
|
82
87
|
|
|
83
|
-
describe "inheritable settings" do
|
|
84
|
-
it "should set csv_options" do
|
|
85
|
-
application.csv_options.should == {}
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
context "when deprecated" do
|
|
89
|
-
it "should set and warn csv_column_separator" do
|
|
90
|
-
ActiveAdmin::Deprecation.should_receive(:warn)
|
|
91
|
-
application.csv_column_separator.should == ','
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
88
|
describe "files in load path" do
|
|
97
89
|
it "should load files in the first level directory" do
|
|
98
90
|
application.files.should include(File.expand_path("app/admin/dashboard.rb", Rails.root))
|
|
@@ -127,6 +119,13 @@ describe ActiveAdmin::Application do
|
|
|
127
119
|
end
|
|
128
120
|
}.to raise_error("found")
|
|
129
121
|
end
|
|
122
|
+
|
|
123
|
+
it "should not pollute the global app" do
|
|
124
|
+
application.namespaces.keys.should be_empty
|
|
125
|
+
application.namespace(:brand_new_ns)
|
|
126
|
+
application.namespaces.keys.should eq [:brand_new_ns]
|
|
127
|
+
ActiveAdmin.application.namespaces.keys.should eq [:admin]
|
|
128
|
+
end
|
|
130
129
|
end
|
|
131
130
|
|
|
132
131
|
describe "#register_page" do
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module MockRegistration
|
|
4
4
|
extend ActiveAdmin::AssetRegistration
|
|
@@ -14,30 +14,43 @@ describe ActiveAdmin::AssetRegistration do
|
|
|
14
14
|
it "should register a stylesheet file" do
|
|
15
15
|
MockRegistration.register_stylesheet "active_admin.css"
|
|
16
16
|
MockRegistration.stylesheets.length.should == 1
|
|
17
|
-
MockRegistration.stylesheets.first.
|
|
17
|
+
MockRegistration.stylesheets.keys.first.should == "active_admin.css"
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "should clear all existing stylesheets" do
|
|
21
21
|
MockRegistration.register_stylesheet "active_admin.css"
|
|
22
22
|
MockRegistration.stylesheets.length.should == 1
|
|
23
23
|
MockRegistration.clear_stylesheets!
|
|
24
|
-
MockRegistration.stylesheets.
|
|
24
|
+
MockRegistration.stylesheets.should be_empty
|
|
25
25
|
end
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
it "should allow media option when registering stylesheet" do
|
|
28
28
|
MockRegistration.register_stylesheet "active_admin.css", :media => :print
|
|
29
|
-
MockRegistration.stylesheets.first
|
|
29
|
+
MockRegistration.stylesheets.values.first[:media].should == :print
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "shouldn't register a stylesheet twice" do
|
|
33
|
+
MockRegistration.register_stylesheet "active_admin.css"
|
|
34
|
+
MockRegistration.register_stylesheet "active_admin.css"
|
|
35
|
+
MockRegistration.stylesheets.length.should == 1
|
|
30
36
|
end
|
|
31
37
|
|
|
38
|
+
|
|
32
39
|
it "should register a javascript file" do
|
|
33
40
|
MockRegistration.register_javascript "active_admin.js"
|
|
34
|
-
MockRegistration.javascripts.should == ["active_admin.js"]
|
|
41
|
+
MockRegistration.javascripts.should == ["active_admin.js"].to_set
|
|
35
42
|
end
|
|
36
43
|
|
|
37
44
|
it "should clear all existing javascripts" do
|
|
38
45
|
MockRegistration.register_javascript "active_admin.js"
|
|
39
|
-
MockRegistration.javascripts.should == ["active_admin.js"]
|
|
46
|
+
MockRegistration.javascripts.should == ["active_admin.js"].to_set
|
|
40
47
|
MockRegistration.clear_javascripts!
|
|
41
|
-
MockRegistration.javascripts.should
|
|
48
|
+
MockRegistration.javascripts.should be_empty
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "shouldn't register a javascript twice" do
|
|
52
|
+
MockRegistration.register_javascript "active_admin.js"
|
|
53
|
+
MockRegistration.register_javascript "active_admin.js"
|
|
54
|
+
MockRegistration.javascripts.length.should == 1
|
|
42
55
|
end
|
|
43
56
|
end
|
|
@@ -16,7 +16,7 @@ describe ActiveAdmin::AuthorizationAdapter do
|
|
|
16
16
|
|
|
17
17
|
it "should return the collection unscoped" do
|
|
18
18
|
collection = stub
|
|
19
|
-
adapter.scope_collection(collection).should == collection
|
|
19
|
+
adapter.scope_collection(collection, ActiveAdmin::Auth::READ).should == collection
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
end
|
|
@@ -24,7 +24,7 @@ describe ActiveAdmin::AuthorizationAdapter do
|
|
|
24
24
|
describe "using #normalized in a subclass" do
|
|
25
25
|
|
|
26
26
|
let(:auth_class) do
|
|
27
|
-
Class.new(ActiveAdmin::AuthorizationAdapter) do
|
|
27
|
+
Class.new(ActiveAdmin::AuthorizationAdapter) do
|
|
28
28
|
|
|
29
29
|
def authorized?(action, subject = nil)
|
|
30
30
|
case subject
|
|
@@ -40,7 +40,7 @@ describe ActiveAdmin::AuthorizationAdapter do
|
|
|
40
40
|
|
|
41
41
|
let(:adapter) { auth_class.new(stub, stub) }
|
|
42
42
|
|
|
43
|
-
it "should match
|
|
43
|
+
it "should match against a class" do
|
|
44
44
|
adapter.authorized?(:read, String).should == true
|
|
45
45
|
end
|
|
46
46
|
|