activeadmin 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.circleci/config.yml +467 -0
- data/.gitignore +2 -5
- data/.rspec +1 -0
- data/.rspec_parallel +2 -0
- data/.rubocop.yml +25 -7
- data/.simplecov +4 -6
- data/CHANGELOG.md +175 -83
- data/CODE_OF_CONDUCT.md +64 -12
- data/CONTRIBUTING.md +77 -40
- data/Gemfile +7 -55
- data/Gemfile.common +53 -0
- data/Gemfile.lock +431 -0
- data/README.md +39 -18
- data/Rakefile +1 -32
- data/app/assets/stylesheets/active_admin/_forms.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_scopes.scss +3 -0
- data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
- data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
- data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
- data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
- data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +1 -1
- data/bin/install_chromedriver.sh +17 -0
- data/config/locales/de.yml +10 -0
- data/config/locales/en.yml +19 -1
- data/config/locales/es.yml +20 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/it.yml +4 -0
- data/config/locales/nb.yml +15 -5
- data/config/locales/nl.yml +11 -0
- data/config/locales/pl.yml +71 -3
- data/config/locales/ru.yml +2 -0
- data/config/locales/tr.yml +9 -0
- data/config/locales/zh-CN.yml +33 -5
- data/config/mdl_style.rb +2 -0
- data/cucumber.yml +7 -3
- data/docs/.gitignore +1 -0
- data/docs/1-general-configuration.md +16 -1
- data/docs/10-custom-pages.md +14 -0
- data/docs/12-arbre-components.md +28 -1
- data/docs/13-authorization-adapter.md +36 -17
- data/docs/2-resource-customization.md +8 -3
- data/docs/3-index-pages.md +17 -0
- data/docs/3-index-pages/custom-index.md +1 -1
- data/docs/3-index-pages/index-as-blog.md +1 -1
- data/docs/3-index-pages/index-as-table.md +5 -5
- data/docs/5-forms.md +16 -2
- data/docs/8-custom-actions.md +11 -0
- data/docs/Gemfile +2 -0
- data/docs/Gemfile.lock +249 -0
- data/docs/_config.yml +1 -1
- data/docs/_includes/toc.html +1 -1
- data/docs/_includes/top-menu.html +9 -1
- data/docs/documentation.md +1 -1
- data/docs/images/tidelift.svg +14 -0
- data/docs/stylesheets/main.css +26 -2
- data/gemfiles/rails_42.gemfile +2 -2
- data/gemfiles/rails_42.gemfile.lock +410 -0
- data/gemfiles/rails_50.gemfile +2 -2
- data/gemfiles/rails_50.gemfile.lock +424 -0
- data/gemfiles/rails_51.gemfile +2 -2
- data/gemfiles/rails_51.gemfile.lock +423 -0
- data/lib/active_admin/abstract_view_factory.rb +13 -51
- data/lib/active_admin/application.rb +42 -142
- data/lib/active_admin/application_settings.rb +39 -0
- data/lib/active_admin/base_controller/authorization.rb +1 -2
- data/lib/active_admin/batch_actions/controller.rb +1 -1
- data/lib/active_admin/dependency.rb +8 -0
- data/lib/active_admin/deprecation.rb +0 -25
- data/lib/active_admin/dynamic_setting.rb +38 -0
- data/lib/active_admin/dynamic_settings_node.rb +28 -0
- data/lib/active_admin/engine.rb +5 -0
- data/lib/active_admin/filters/active_filter.rb +1 -1
- data/lib/active_admin/filters/resource_extension.rb +1 -1
- data/lib/active_admin/form_builder.rb +95 -60
- data/lib/active_admin/inputs/datepicker_input.rb +7 -0
- data/lib/active_admin/menu.rb +2 -8
- data/lib/active_admin/menu_item.rb +3 -31
- data/lib/active_admin/namespace.rb +18 -6
- data/lib/active_admin/namespace_settings.rb +107 -0
- data/lib/active_admin/orm/active_record/comments.rb +11 -0
- data/lib/active_admin/orm/active_record/comments/comment.rb +1 -1
- data/lib/active_admin/resource/action_items.rb +6 -1
- data/lib/active_admin/resource_controller/decorators.rb +3 -3
- data/lib/active_admin/resource_controller/scoping.rb +1 -1
- data/lib/active_admin/router.rb +89 -84
- data/lib/active_admin/scope.rb +5 -1
- data/lib/active_admin/settings_node.rb +19 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/views/components/active_admin_form.rb +2 -3
- data/lib/active_admin/views/components/menu.rb +32 -0
- data/lib/active_admin/views/components/menu_item.rb +58 -0
- data/lib/active_admin/views/components/scopes.rb +11 -4
- data/lib/active_admin/views/components/sidebar.rb +13 -0
- data/lib/active_admin/views/components/site_title.rb +5 -6
- data/lib/active_admin/views/components/table_for.rb +1 -10
- data/lib/active_admin/views/components/tabs.rb +4 -1
- data/lib/active_admin/views/footer.rb +2 -6
- data/lib/active_admin/views/header.rb +3 -15
- data/lib/active_admin/views/index_as_blog.rb +1 -1
- data/lib/active_admin/views/index_as_grid.rb +25 -25
- data/lib/active_admin/views/index_as_table.rb +6 -6
- data/lib/active_admin/views/pages/base.rb +27 -53
- data/lib/active_admin/views/tabbed_navigation.rb +4 -59
- data/lib/bug_report_templates/active_admin_master.rb +2 -3
- data/tasks/application_generator.rb +48 -0
- data/tasks/gemfiles.rake +8 -0
- data/tasks/lint.rake +96 -7
- data/tasks/local.rake +10 -8
- data/tasks/test.rake +30 -16
- metadata +26 -440
- data/.travis.yml +0 -51
- data/features/action_item.feature +0 -73
- data/features/authorization.feature +0 -64
- data/features/authorization_cancan.feature +0 -52
- data/features/authorization_pundit.feature +0 -37
- data/features/belongs_to.feature +0 -124
- data/features/breadcrumb.feature +0 -75
- data/features/comments/commenting.feature +0 -178
- data/features/comments/viewing_index.feature +0 -19
- data/features/create_another.feature +0 -55
- data/features/dashboard.feature +0 -16
- data/features/decorators.feature +0 -43
- data/features/development_reloading.feature +0 -28
- data/features/edit_page.feature +0 -116
- data/features/favicon.feature +0 -20
- data/features/first_boot.feature +0 -16
- data/features/footer.feature +0 -28
- data/features/global_navigation.feature +0 -29
- data/features/i18n.feature +0 -55
- data/features/index/batch_actions.feature +0 -218
- data/features/index/filters.feature +0 -250
- data/features/index/format_as_csv.feature +0 -220
- data/features/index/formats.feature +0 -88
- data/features/index/index_as_block.feature +0 -15
- data/features/index/index_as_blog.feature +0 -69
- data/features/index/index_as_grid.feature +0 -45
- data/features/index/index_as_table.feature +0 -291
- data/features/index/index_blank_slate.feature +0 -83
- data/features/index/index_parameters.feature +0 -75
- data/features/index/index_scope_to.feature +0 -56
- data/features/index/index_scopes.feature +0 -285
- data/features/index/page_title.feature +0 -41
- data/features/index/pagination.feature +0 -63
- data/features/index/switch_index_view.feature +0 -73
- data/features/menu.feature +0 -72
- data/features/meta_tags.feature +0 -21
- data/features/new_page.feature +0 -136
- data/features/registering_assets.feature +0 -38
- data/features/registering_pages.feature +0 -237
- data/features/registering_resources.feature +0 -33
- data/features/renamed_resource.feature +0 -30
- data/features/root_to.feature +0 -17
- data/features/show/attributes_table_title.feature +0 -54
- data/features/show/columns.feature +0 -40
- data/features/show/default_content.feature +0 -44
- data/features/show/page_title.feature +0 -58
- data/features/show/tabs.feature +0 -33
- data/features/sidebar_sections.feature +0 -210
- data/features/site_title.feature +0 -47
- data/features/specifying_actions.feature +0 -118
- data/features/step_definitions/action_item_steps.rb +0 -7
- data/features/step_definitions/action_link_steps.rb +0 -19
- data/features/step_definitions/additional_web_steps.rb +0 -81
- data/features/step_definitions/asset_steps.rb +0 -15
- data/features/step_definitions/attribute_steps.rb +0 -18
- data/features/step_definitions/attributes_table_title_steps.rb +0 -11
- data/features/step_definitions/batch_action_steps.rb +0 -81
- data/features/step_definitions/blog_steps.rb +0 -3
- data/features/step_definitions/breadcrumb_steps.rb +0 -3
- data/features/step_definitions/column_steps.rb +0 -8
- data/features/step_definitions/comment_steps.rb +0 -32
- data/features/step_definitions/configuration_steps.rb +0 -100
- data/features/step_definitions/dashboard_steps.rb +0 -15
- data/features/step_definitions/factory_steps.rb +0 -35
- data/features/step_definitions/filter_steps.rb +0 -47
- data/features/step_definitions/flash_steps.rb +0 -11
- data/features/step_definitions/footer_steps.rb +0 -11
- data/features/step_definitions/format_steps.rb +0 -56
- data/features/step_definitions/i18n_steps.rb +0 -11
- data/features/step_definitions/index_scope_steps.rb +0 -29
- data/features/step_definitions/index_views_steps.rb +0 -3
- data/features/step_definitions/layout_steps.rb +0 -3
- data/features/step_definitions/member_link_steps.rb +0 -7
- data/features/step_definitions/menu_steps.rb +0 -11
- data/features/step_definitions/meta_tag_steps.rb +0 -3
- data/features/step_definitions/pagination_steps.rb +0 -15
- data/features/step_definitions/sidebar_steps.rb +0 -11
- data/features/step_definitions/site_title_steps.rb +0 -17
- data/features/step_definitions/tab_steps.rb +0 -8
- data/features/step_definitions/table_steps.rb +0 -116
- data/features/step_definitions/user_steps.rb +0 -52
- data/features/step_definitions/web_steps.rb +0 -86
- data/features/sti_resource.feature +0 -65
- data/features/strong_parameters.feature +0 -69
- data/features/support/env.rb +0 -122
- data/features/support/paths.rb +0 -73
- data/features/support/regular_env.rb +0 -7
- data/features/support/reload_env.rb +0 -7
- data/features/support/selectors.rb +0 -45
- data/features/users/logging_in.feature +0 -36
- data/features/users/logging_out.feature +0 -13
- data/features/users/resetting_password.feature +0 -34
- data/gemfiles/rails_52.gemfile +0 -11
- data/lib/active_admin/helpers/settings.rb +0 -114
- data/spec/bug_report_templates_spec.rb +0 -26
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +0 -50
- data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +0 -25
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +0 -34
- data/spec/javascripts/fixtures/checkboxes.html +0 -9
- data/spec/javascripts/fixtures/flashes.html +0 -2
- data/spec/javascripts/fixtures/table_checkboxes.html +0 -17
- data/spec/javascripts/helpers/SpecHelper.js +0 -3
- data/spec/javascripts/support/jasmine.yml +0 -74
- data/spec/javascripts/support/jasmine_runner.rb +0 -19
- data/spec/rails_helper.rb +0 -59
- data/spec/requests/default_namespace_spec.rb +0 -81
- data/spec/requests/memory_spec.rb +0 -25
- data/spec/requests/stylesheets_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -1
- data/spec/support/active_admin_integration_spec_helper.rb +0 -73
- data/spec/support/active_admin_request_helpers.rb +0 -39
- data/spec/support/rails_template.rb +0 -153
- data/spec/support/rails_template_with_data.rb +0 -327
- data/spec/support/templates/admin/stores.rb +0 -7
- data/spec/support/templates/en.yml +0 -8
- data/spec/support/templates/manifest.js +0 -3
- data/spec/support/templates/policies/active_admin/comment_policy.rb +0 -9
- data/spec/support/templates/policies/active_admin/page_policy.rb +0 -18
- data/spec/support/templates/policies/admin_user_policy.rb +0 -11
- data/spec/support/templates/policies/application_policy.rb +0 -44
- data/spec/support/templates/policies/category_policy.rb +0 -7
- data/spec/support/templates/policies/post_policy.rb +0 -15
- data/spec/support/templates/policies/store_policy.rb +0 -11
- data/spec/support/templates/policies/user_policy.rb +0 -11
- data/spec/support/templates/post_decorator.rb +0 -24
- data/spec/unit/abstract_view_factory_spec.rb +0 -78
- data/spec/unit/action_builder_spec.rb +0 -158
- data/spec/unit/active_admin_spec.rb +0 -11
- data/spec/unit/application_spec.rb +0 -184
- data/spec/unit/asset_registration_spec.rb +0 -81
- data/spec/unit/authorization/authorization_adapter_spec.rb +0 -61
- data/spec/unit/authorization/controller_authorization_spec.rb +0 -43
- data/spec/unit/authorization/index_overriding_spec.rb +0 -23
- data/spec/unit/auto_link_spec.rb +0 -93
- data/spec/unit/batch_actions/resource_spec.rb +0 -84
- data/spec/unit/batch_actions/settings_spec.rb +0 -61
- data/spec/unit/belongs_to_spec.rb +0 -76
- data/spec/unit/cancan_adapter_spec.rb +0 -43
- data/spec/unit/comments_spec.rb +0 -176
- data/spec/unit/component_spec.rb +0 -18
- data/spec/unit/config_shared_examples.rb +0 -59
- data/spec/unit/controller_filters_spec.rb +0 -41
- data/spec/unit/csv_builder_spec.rb +0 -313
- data/spec/unit/dependency_spec.rb +0 -135
- data/spec/unit/devise_spec.rb +0 -110
- data/spec/unit/dsl_spec.rb +0 -120
- data/spec/unit/filters/active_filter_spec.rb +0 -189
- data/spec/unit/filters/active_spec.rb +0 -24
- data/spec/unit/filters/filter_form_builder_spec.rb +0 -524
- data/spec/unit/filters/resource_spec.rb +0 -128
- data/spec/unit/form_builder_spec.rb +0 -990
- data/spec/unit/generators/install_spec.rb +0 -31
- data/spec/unit/helpers/collection_spec.rb +0 -68
- data/spec/unit/helpers/output_safety_helper_spec.rb +0 -79
- data/spec/unit/helpers/scope_chain_spec.rb +0 -35
- data/spec/unit/helpers/settings_spec.rb +0 -30
- data/spec/unit/i18n_spec.rb +0 -29
- data/spec/unit/localizers/resource_localizer_spec.rb +0 -36
- data/spec/unit/menu_collection_spec.rb +0 -62
- data/spec/unit/menu_item_spec.rb +0 -141
- data/spec/unit/menu_spec.rb +0 -71
- data/spec/unit/namespace/authorization_spec.rb +0 -27
- data/spec/unit/namespace/register_page_spec.rb +0 -99
- data/spec/unit/namespace/register_resource_spec.rb +0 -162
- data/spec/unit/namespace_spec.rb +0 -124
- data/spec/unit/order_clause_spec.rb +0 -81
- data/spec/unit/page_controller_spec.rb +0 -5
- data/spec/unit/page_spec.rb +0 -128
- data/spec/unit/pretty_format_spec.rb +0 -82
- data/spec/unit/pundit_adapter_spec.rb +0 -98
- data/spec/unit/resource/action_items_spec.rb +0 -69
- data/spec/unit/resource/attributes_spec.rb +0 -49
- data/spec/unit/resource/includes_spec.rb +0 -21
- data/spec/unit/resource/menu_spec.rb +0 -18
- data/spec/unit/resource/naming_spec.rb +0 -122
- data/spec/unit/resource/ordering_spec.rb +0 -35
- data/spec/unit/resource/page_presenters_spec.rb +0 -44
- data/spec/unit/resource/pagination_spec.rb +0 -38
- data/spec/unit/resource/routes_spec.rb +0 -125
- data/spec/unit/resource/scopes_spec.rb +0 -50
- data/spec/unit/resource/sidebars_spec.rb +0 -43
- data/spec/unit/resource_collection_spec.rb +0 -175
- data/spec/unit/resource_controller/data_access_spec.rb +0 -234
- data/spec/unit/resource_controller/decorators_spec.rb +0 -94
- data/spec/unit/resource_controller/sidebars_spec.rb +0 -37
- data/spec/unit/resource_controller_spec.rb +0 -273
- data/spec/unit/resource_registration_spec.rb +0 -61
- data/spec/unit/resource_spec.rb +0 -320
- data/spec/unit/routing_spec.rb +0 -211
- data/spec/unit/scope_spec.rb +0 -209
- data/spec/unit/settings_spec.rb +0 -117
- data/spec/unit/view_factory_spec.rb +0 -19
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +0 -253
- data/spec/unit/view_helpers/display_helper_spec.rb +0 -203
- data/spec/unit/view_helpers/download_format_links_helper_spec.rb +0 -39
- data/spec/unit/view_helpers/fields_for_spec.rb +0 -50
- data/spec/unit/view_helpers/flash_helper_spec.rb +0 -24
- data/spec/unit/view_helpers/form_helper_spec.rb +0 -42
- data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -138
- data/spec/unit/views/components/attributes_table_spec.rb +0 -271
- data/spec/unit/views/components/batch_action_selector_spec.rb +0 -43
- data/spec/unit/views/components/blank_slate_spec.rb +0 -27
- data/spec/unit/views/components/columns_spec.rb +0 -187
- data/spec/unit/views/components/index_list_spec.rb +0 -49
- data/spec/unit/views/components/index_table_for_spec.rb +0 -127
- data/spec/unit/views/components/paginated_collection_spec.rb +0 -249
- data/spec/unit/views/components/panel_spec.rb +0 -58
- data/spec/unit/views/components/sidebar_section_spec.rb +0 -68
- data/spec/unit/views/components/site_title_spec.rb +0 -76
- data/spec/unit/views/components/status_tag_spec.rb +0 -265
- data/spec/unit/views/components/table_for_spec.rb +0 -436
- data/spec/unit/views/components/tabs_spec.rb +0 -67
- data/spec/unit/views/components/unsupported_browser_spec.rb +0 -41
- data/spec/unit/views/index_as_blog_spec.rb +0 -76
- data/spec/unit/views/pages/form_spec.rb +0 -54
- data/spec/unit/views/pages/index_spec.rb +0 -60
- data/spec/unit/views/pages/layout_spec.rb +0 -59
- data/spec/unit/views/pages/show_spec.rb +0 -32
- data/spec/unit/views/tabbed_navigation_spec.rb +0 -158
- data/tasks/parallel_tests.rake +0 -66
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveAdmin::Application, type: :request do
|
4
|
-
|
5
|
-
include Rails.application.routes.url_helpers
|
6
|
-
|
7
|
-
let(:resource) { ActiveAdmin.register Category }
|
8
|
-
|
9
|
-
[false, nil].each do |value|
|
10
|
-
|
11
|
-
describe "with a #{value} default namespace" do
|
12
|
-
|
13
|
-
around do |example|
|
14
|
-
with_custom_default_namespace(value) { example.call }
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should generate resource paths" do
|
18
|
-
expect(resource.route_collection_path).to eq "/categories"
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should generate a log out path" do
|
22
|
-
expect(destroy_admin_user_session_path).to eq "/logout"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should generate a log in path" do
|
26
|
-
expect(new_admin_user_session_path).to eq "/login"
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "with a test default namespace" do
|
34
|
-
|
35
|
-
around do |example|
|
36
|
-
with_custom_default_namespace(:test) { example.call }
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should generate resource paths" do
|
40
|
-
expect(resource.route_collection_path).to eq "/test/categories"
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should generate a log out path" do
|
44
|
-
expect(destroy_admin_user_session_path).to eq "/test/logout"
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should generate a log in path" do
|
48
|
-
expect(new_admin_user_session_path).to eq "/test/login"
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "with a namespace with underscores in the name" do
|
54
|
-
|
55
|
-
around do |example|
|
56
|
-
with_custom_default_namespace(:abc_123) { example.call }
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should generate resource paths" do
|
60
|
-
expect(resource.route_collection_path).to eq "/abc_123/categories"
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should generate a log out path" do
|
64
|
-
expect(destroy_admin_user_session_path).to eq "/abc_123/logout"
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should generate a log in path" do
|
68
|
-
expect(new_admin_user_session_path).to eq "/abc_123/login"
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def with_custom_default_namespace(namespace)
|
76
|
-
application = ActiveAdmin::Application.new
|
77
|
-
application.default_namespace = namespace
|
78
|
-
|
79
|
-
with_temp_application(application) { yield }
|
80
|
-
end
|
81
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe "Memory Leak", type: :request, if: RUBY_ENGINE == 'ruby' do
|
4
|
-
before do
|
5
|
-
load_defaults!
|
6
|
-
end
|
7
|
-
|
8
|
-
def count_instances_of(klass)
|
9
|
-
ObjectSpace.each_object(klass) { }
|
10
|
-
end
|
11
|
-
|
12
|
-
[ActiveAdmin::Namespace, ActiveAdmin::Resource].each do |klass|
|
13
|
-
it "should not leak #{klass}" do
|
14
|
-
previously_disabled = GC.enable
|
15
|
-
GC.start
|
16
|
-
count = count_instances_of(klass)
|
17
|
-
|
18
|
-
load_defaults!
|
19
|
-
|
20
|
-
GC.start
|
21
|
-
GC.disable if previously_disabled
|
22
|
-
expect(count_instances_of klass).to be <= count
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rails_helper'
|
2
|
-
|
3
|
-
RSpec.describe "Stylesheets", type: :request do
|
4
|
-
|
5
|
-
require "sprockets"
|
6
|
-
|
7
|
-
let(:css) do
|
8
|
-
assets = Rails.application.assets
|
9
|
-
assets.find_asset("active_admin.css")
|
10
|
-
end
|
11
|
-
it "should successfully render the scss stylesheets using sprockets" do
|
12
|
-
expect(css).to_not eq nil
|
13
|
-
end
|
14
|
-
it "should not have any syntax errors" do
|
15
|
-
expect(css.to_s).to_not include("Syntax error:")
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'simplecov' if ENV["COVERAGE"] == "true"
|
@@ -1,73 +0,0 @@
|
|
1
|
-
module ActiveAdminIntegrationSpecHelper
|
2
|
-
extend self
|
3
|
-
|
4
|
-
def load_defaults!
|
5
|
-
ActiveAdmin.unload!
|
6
|
-
ActiveAdmin.load!
|
7
|
-
ActiveAdmin.register(Category)
|
8
|
-
ActiveAdmin.register(User)
|
9
|
-
ActiveAdmin.register(Post){ belongs_to :user, optional: true }
|
10
|
-
reload_menus!
|
11
|
-
end
|
12
|
-
|
13
|
-
def reload_menus!
|
14
|
-
ActiveAdmin.application.namespaces.each{|n| n.reset_menu! }
|
15
|
-
end
|
16
|
-
|
17
|
-
# Sometimes we need to reload the routes within
|
18
|
-
# the application to test them out
|
19
|
-
def reload_routes!
|
20
|
-
Rails.application.reload_routes!
|
21
|
-
end
|
22
|
-
|
23
|
-
# Helper method to load resources and ensure that Active Admin is
|
24
|
-
# setup with the new configurations.
|
25
|
-
#
|
26
|
-
# Eg:
|
27
|
-
# load_resources do
|
28
|
-
# ActiveAdmin.register(Post)
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
def load_resources
|
32
|
-
ActiveAdmin.unload!
|
33
|
-
yield
|
34
|
-
reload_menus!
|
35
|
-
reload_routes!
|
36
|
-
end
|
37
|
-
|
38
|
-
def arbre(assigns = {}, helpers = mock_action_view, &block)
|
39
|
-
Arbre::Context.new(assigns, helpers, &block)
|
40
|
-
end
|
41
|
-
|
42
|
-
def render_arbre_component(assigns = {}, helpers = mock_action_view, &block)
|
43
|
-
arbre(assigns, helpers, &block).children.first
|
44
|
-
end
|
45
|
-
|
46
|
-
# Returns a fake action view instance to use with our renderers
|
47
|
-
def mock_action_view(assigns = {})
|
48
|
-
controller = ActionView::TestCase::TestController.new
|
49
|
-
#this line needed because of rails bug https://github.com/rails/rails/commit/d8e98897b5703ac49bf0764da71a06d64ecda9b0
|
50
|
-
controller.params = ActionController::Parameters.new
|
51
|
-
MockActionView.new(ActionController::Base.view_paths, assigns, controller)
|
52
|
-
end
|
53
|
-
alias_method :action_view, :mock_action_view
|
54
|
-
|
55
|
-
# A mock action view to test view helpers
|
56
|
-
class MockActionView < ::ActionView::Base
|
57
|
-
include ActiveAdmin::ViewHelpers
|
58
|
-
include Rails.application.routes.url_helpers
|
59
|
-
end
|
60
|
-
|
61
|
-
def with_translation(translation)
|
62
|
-
# If no translations have been loaded, any later calls to `I18n.t` will
|
63
|
-
# cause the full translation hash to be loaded, possibly overwritting what
|
64
|
-
# we've loaded via `store_translations`. We use this hack to prevent that.
|
65
|
-
# TODO: Might not be necessary anymore once
|
66
|
-
# https://github.com/svenfuchs/i18n/pull/353 lands.
|
67
|
-
I18n.backend.send(:init_translations)
|
68
|
-
I18n.backend.store_translations I18n.locale, translation
|
69
|
-
yield
|
70
|
-
ensure
|
71
|
-
I18n.backend.reload!
|
72
|
-
end
|
73
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require "action_dispatch"
|
2
|
-
require "capybara/rails"
|
3
|
-
require "capybara/dsl"
|
4
|
-
|
5
|
-
module ActiveAdminRequestHelpers
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
include ActionDispatch::Integration::Runner
|
9
|
-
include RSpec::Rails::TestUnitAssertionAdapter
|
10
|
-
include ActionDispatch::Assertions
|
11
|
-
include Capybara::DSL
|
12
|
-
include RSpec::Matchers
|
13
|
-
|
14
|
-
def app
|
15
|
-
::Rails.application
|
16
|
-
end
|
17
|
-
|
18
|
-
def last_response
|
19
|
-
page
|
20
|
-
end
|
21
|
-
|
22
|
-
included do
|
23
|
-
before do
|
24
|
-
@router = ::Rails.application.routes
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def with_temp_application(application)
|
29
|
-
original_application = ActiveAdmin.application
|
30
|
-
ActiveAdmin.application = application
|
31
|
-
load_defaults!
|
32
|
-
reload_routes!
|
33
|
-
|
34
|
-
yield
|
35
|
-
|
36
|
-
ensure
|
37
|
-
ActiveAdmin.application = original_application
|
38
|
-
end
|
39
|
-
end
|
@@ -1,153 +0,0 @@
|
|
1
|
-
# Rails template to build the sample app for specs
|
2
|
-
|
3
|
-
copy_file File.expand_path('../templates/manifest.js', __FILE__), 'app/assets/config/manifest.js', force: true
|
4
|
-
|
5
|
-
create_file 'app/assets/stylesheets/some-random-css.css'
|
6
|
-
create_file 'app/assets/javascripts/some-random-js.js'
|
7
|
-
create_file 'app/assets/images/a/favicon.ico'
|
8
|
-
|
9
|
-
generate :model, 'post title:string body:text published_date:date author_id:integer ' +
|
10
|
-
'position:integer custom_category_id:integer starred:boolean foo_id:integer'
|
11
|
-
create_file 'app/models/post.rb', <<-RUBY.strip_heredoc, force: true
|
12
|
-
class Post < ActiveRecord::Base
|
13
|
-
belongs_to :category, foreign_key: :custom_category_id
|
14
|
-
belongs_to :author, class_name: 'User'
|
15
|
-
has_many :taggings
|
16
|
-
accepts_nested_attributes_for :author
|
17
|
-
accepts_nested_attributes_for :taggings, allow_destroy: true
|
18
|
-
|
19
|
-
ransacker :custom_title_searcher do |parent|
|
20
|
-
parent.table[:title]
|
21
|
-
end
|
22
|
-
|
23
|
-
ransacker :custom_created_at_searcher do |parent|
|
24
|
-
parent.table[:created_at]
|
25
|
-
end
|
26
|
-
|
27
|
-
ransacker :custom_searcher_numeric, type: :numeric do
|
28
|
-
# nothing to see here
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
RUBY
|
33
|
-
copy_file File.expand_path('../templates/post_decorator.rb', __FILE__), 'app/models/post_decorator.rb'
|
34
|
-
|
35
|
-
generate :model, 'blog/post title:string body:text published_date:date author_id:integer ' +
|
36
|
-
'position:integer custom_category_id:integer starred:boolean foo_id:integer'
|
37
|
-
create_file 'app/models/blog/post.rb', <<-RUBY.strip_heredoc, force: true
|
38
|
-
class Blog::Post < ActiveRecord::Base
|
39
|
-
belongs_to :category, foreign_key: :custom_category_id
|
40
|
-
belongs_to :author, class_name: 'User'
|
41
|
-
has_many :taggings
|
42
|
-
accepts_nested_attributes_for :author
|
43
|
-
accepts_nested_attributes_for :taggings, allow_destroy: true
|
44
|
-
|
45
|
-
end
|
46
|
-
RUBY
|
47
|
-
|
48
|
-
generate :model, 'profile user_id:integer bio:text'
|
49
|
-
|
50
|
-
generate :model, 'user type:string first_name:string last_name:string username:string age:integer'
|
51
|
-
create_file 'app/models/user.rb', <<-RUBY.strip_heredoc, force: true
|
52
|
-
class User < ActiveRecord::Base
|
53
|
-
class VIP < self
|
54
|
-
end
|
55
|
-
has_many :posts, foreign_key: 'author_id'
|
56
|
-
has_one :profile
|
57
|
-
accepts_nested_attributes_for :profile, allow_destroy: true
|
58
|
-
accepts_nested_attributes_for :posts, allow_destroy: true
|
59
|
-
|
60
|
-
ransacker :age_in_five_years, type: :numeric, formatter: proc { |v| v.to_i - 5 } do |parent|
|
61
|
-
parent.table[:age]
|
62
|
-
end
|
63
|
-
|
64
|
-
def display_name
|
65
|
-
"\#{first_name} \#{last_name}"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
RUBY
|
69
|
-
|
70
|
-
create_file 'app/models/profile.rb', <<-RUBY.strip_heredoc, force: true
|
71
|
-
class Profile < ActiveRecord::Base
|
72
|
-
belongs_to :user
|
73
|
-
end
|
74
|
-
RUBY
|
75
|
-
|
76
|
-
generate :model, 'publisher --migration=false --parent=User'
|
77
|
-
|
78
|
-
generate :model, 'category name:string description:text'
|
79
|
-
create_file 'app/models/category.rb', <<-RUBY.strip_heredoc, force: true
|
80
|
-
class Category < ActiveRecord::Base
|
81
|
-
has_many :posts, foreign_key: :custom_category_id
|
82
|
-
has_many :authors, through: :posts
|
83
|
-
accepts_nested_attributes_for :posts
|
84
|
-
end
|
85
|
-
RUBY
|
86
|
-
|
87
|
-
generate :model, 'store name:string'
|
88
|
-
|
89
|
-
generate :model, 'tag name:string'
|
90
|
-
create_file 'app/models/tag.rb', <<-RUBY.strip_heredoc, force: true
|
91
|
-
class Tag < ActiveRecord::Base
|
92
|
-
end
|
93
|
-
RUBY
|
94
|
-
|
95
|
-
generate :model, 'tagging post_id:integer tag_id:integer position:integer'
|
96
|
-
create_file 'app/models/tagging.rb', <<-RUBY.strip_heredoc, force: true
|
97
|
-
class Tagging < ActiveRecord::Base
|
98
|
-
belongs_to :post
|
99
|
-
belongs_to :tag
|
100
|
-
|
101
|
-
delegate :name, to: :tag, prefix: true
|
102
|
-
end
|
103
|
-
RUBY
|
104
|
-
|
105
|
-
gsub_file 'config/environments/test.rb', / config.cache_classes = true/, <<-RUBY
|
106
|
-
|
107
|
-
config.cache_classes = !ENV['CLASS_RELOADING']
|
108
|
-
config.action_mailer.default_url_options = {host: 'example.com'}
|
109
|
-
config.assets.precompile += %w( some-random-css.css some-random-js.js a/favicon.ico )
|
110
|
-
|
111
|
-
config.active_record.maintain_test_schema = false
|
112
|
-
|
113
|
-
if Rails::VERSION::MAJOR >= 5
|
114
|
-
config.active_record.belongs_to_required_by_default = false
|
115
|
-
end
|
116
|
-
|
117
|
-
RUBY
|
118
|
-
|
119
|
-
# Add our local Active Admin to the application
|
120
|
-
gem 'activeadmin', path: '../..'
|
121
|
-
gem 'devise'
|
122
|
-
|
123
|
-
run 'bundle install'
|
124
|
-
|
125
|
-
# Setup Active Admin
|
126
|
-
generate 'active_admin:install'
|
127
|
-
|
128
|
-
# Force strong parameters to raise exceptions
|
129
|
-
inject_into_file 'config/application.rb', <<-RUBY, after: 'class Application < Rails::Application'
|
130
|
-
|
131
|
-
config.action_controller.action_on_unpermitted_parameters = :raise
|
132
|
-
|
133
|
-
RUBY
|
134
|
-
|
135
|
-
# Add some translations
|
136
|
-
append_file 'config/locales/en.yml', File.read(File.expand_path('../templates/en.yml', __FILE__))
|
137
|
-
|
138
|
-
# Add predefined admin resources
|
139
|
-
directory File.expand_path('../templates/admin', __FILE__), 'app/admin'
|
140
|
-
|
141
|
-
# Add predefined policies
|
142
|
-
directory File.expand_path('../templates/policies', __FILE__), 'app/policies'
|
143
|
-
|
144
|
-
if ENV['RAILS_ENV'] != 'test'
|
145
|
-
inject_into_file 'config/routes.rb', "\n root to: redirect('admin')", after: /.*routes.draw do/
|
146
|
-
end
|
147
|
-
|
148
|
-
rake "db:drop db:create db:migrate", env: 'development'
|
149
|
-
rake "db:drop db:create db:migrate", env: 'test'
|
150
|
-
|
151
|
-
if ENV['INSTALL_PARALLEL']
|
152
|
-
inject_into_file 'config/database.yml', "<%= ENV['TEST_ENV_NUMBER'] %>", after: 'test.sqlite3'
|
153
|
-
end
|
@@ -1,327 +0,0 @@
|
|
1
|
-
apply File.expand_path("../rails_template.rb", __FILE__)
|
2
|
-
|
3
|
-
inject_into_file 'config/initializers/active_admin.rb', <<-RUBY, after: "ActiveAdmin.setup do |config|\n"
|
4
|
-
|
5
|
-
config.comments_menu = { parent: 'Administrative' }
|
6
|
-
RUBY
|
7
|
-
|
8
|
-
inject_into_file 'app/admin/admin_users.rb', <<-RUBY, after: "ActiveAdmin.register AdminUser do\n"
|
9
|
-
|
10
|
-
menu parent: "Administrative", priority: 1
|
11
|
-
RUBY
|
12
|
-
|
13
|
-
generate :'active_admin:page', 'KitchenSink'
|
14
|
-
|
15
|
-
gsub_file 'app/admin/kitchen_sink.rb', /^ *content.*?end/m, <<-RUBY
|
16
|
-
|
17
|
-
sidebar "Sample Sidebar" do
|
18
|
-
para "Sidebars can also be used on custom pages."
|
19
|
-
para do
|
20
|
-
a "Active Admin", href: "https://github.com/activeadmin/activeadmin"
|
21
|
-
text_node "is a Ruby on Rails framework for"
|
22
|
-
em "creating elegant backends"
|
23
|
-
text_node "for"
|
24
|
-
strong "website administration."
|
25
|
-
end
|
26
|
-
para do
|
27
|
-
abbr "HTML", title: "HyperText Markup Language"
|
28
|
-
text_node "is the most basic building block of the Web."
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
content do
|
33
|
-
columns do
|
34
|
-
column do
|
35
|
-
panel "Panel title" do
|
36
|
-
h1 "This is an h1"
|
37
|
-
h2 "This is an h2"
|
38
|
-
h3 "This is an h3"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
column do
|
42
|
-
table_for User.all do
|
43
|
-
column :id
|
44
|
-
column :display_name
|
45
|
-
column :username
|
46
|
-
column :age
|
47
|
-
column :updated_at
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
tabs do
|
53
|
-
tab :first do
|
54
|
-
ul do
|
55
|
-
li "List item"
|
56
|
-
li "Another list item"
|
57
|
-
li "Last item"
|
58
|
-
end
|
59
|
-
ol do
|
60
|
-
li "First list item"
|
61
|
-
li "Second list item"
|
62
|
-
li "Third list item"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
tab :second do
|
66
|
-
para "A popular quote."
|
67
|
-
blockquote do
|
68
|
-
text_node "&ldqou;Be yourself; everyone else is already taken.&rdqou;".html_safe
|
69
|
-
cite "― Oscar Wilde"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
tab :third do
|
73
|
-
para "Third tab content."
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
RUBY
|
78
|
-
|
79
|
-
%w{Post User Category Tag}.each do |type|
|
80
|
-
generate :'active_admin:resource', type
|
81
|
-
end
|
82
|
-
|
83
|
-
inject_into_file 'app/admin/categories.rb', <<-RUBY, after: "ActiveAdmin.register Category do\n"
|
84
|
-
|
85
|
-
config.create_another = true
|
86
|
-
|
87
|
-
permit_params [:name, :description]
|
88
|
-
RUBY
|
89
|
-
|
90
|
-
inject_into_file 'app/admin/users.rb', <<-RUBY, after: "ActiveAdmin.register User do\n"
|
91
|
-
|
92
|
-
config.create_another = true
|
93
|
-
|
94
|
-
permit_params [:first_name, :last_name, :username, :age]
|
95
|
-
|
96
|
-
index as: :grid do |user|
|
97
|
-
div for: user do
|
98
|
-
resource_selection_cell user
|
99
|
-
h2 link_to(user.display_name, admin_user_path(user)), style: 'margin-bottom: 0'
|
100
|
-
para do
|
101
|
-
strong user.username, style: 'text-transform: uppercase; font-size: 10px;'
|
102
|
-
br
|
103
|
-
em user.age
|
104
|
-
text_node 'years old'
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
show do
|
110
|
-
attributes_table do
|
111
|
-
row :id
|
112
|
-
row :first_name
|
113
|
-
row :last_name
|
114
|
-
row :username
|
115
|
-
row :age
|
116
|
-
row :created_at
|
117
|
-
row :updated_at
|
118
|
-
end
|
119
|
-
|
120
|
-
panel 'Posts' do
|
121
|
-
table_for(user.posts.includes(:category).order(:updated_at).limit(10)) do
|
122
|
-
column :id do |post|
|
123
|
-
link_to post.id, admin_post_path(post)
|
124
|
-
end
|
125
|
-
column :title
|
126
|
-
column :published_date
|
127
|
-
column :category
|
128
|
-
column :created_at
|
129
|
-
column :updated_at
|
130
|
-
end
|
131
|
-
para do
|
132
|
-
link_to "View all posts", admin_posts_path('q[author_id_eq]' => user.id)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
RUBY
|
137
|
-
|
138
|
-
inject_into_file 'app/admin/posts.rb', <<-'RUBY', after: "ActiveAdmin.register Post do\n"
|
139
|
-
|
140
|
-
permit_params :custom_category_id, :author_id, :title, :body, :published_date, :position, :starred, taggings_attributes: [ :id, :tag_id, :name, :position, :_destroy ]
|
141
|
-
|
142
|
-
includes :author, :category, :taggings
|
143
|
-
|
144
|
-
scope :all, default: true
|
145
|
-
|
146
|
-
scope :drafts do |posts|
|
147
|
-
posts.where(["published_date IS NULL"])
|
148
|
-
end
|
149
|
-
|
150
|
-
scope :scheduled do |posts|
|
151
|
-
posts.where(["posts.published_date IS NOT NULL AND posts.published_date > ?", Time.now.utc])
|
152
|
-
end
|
153
|
-
|
154
|
-
scope :published do |posts|
|
155
|
-
posts.where(["posts.published_date IS NOT NULL AND posts.published_date < ?", Time.now.utc])
|
156
|
-
end
|
157
|
-
|
158
|
-
scope :my_posts do |posts|
|
159
|
-
posts.where(author_id: current_admin_user.id)
|
160
|
-
end
|
161
|
-
|
162
|
-
batch_action :set_starred, form: { starred: :checkbox } do |ids, inputs|
|
163
|
-
Post.where(id: ids).update_all(starred: inputs['starred'].present?)
|
164
|
-
redirect_to collection_path, notice: "The posts have been updated."
|
165
|
-
end
|
166
|
-
|
167
|
-
index do
|
168
|
-
selectable_column
|
169
|
-
id_column
|
170
|
-
column :title
|
171
|
-
column :published_date
|
172
|
-
column :author
|
173
|
-
column :category
|
174
|
-
column :starred
|
175
|
-
column :position
|
176
|
-
column :created_at
|
177
|
-
column :updated_at
|
178
|
-
end
|
179
|
-
|
180
|
-
sidebar :author, only: :show do
|
181
|
-
attributes_table_for post.author do
|
182
|
-
row :id do |author|
|
183
|
-
link_to author.id, admin_user_path(author)
|
184
|
-
end
|
185
|
-
row :first_name
|
186
|
-
row :last_name
|
187
|
-
row :username
|
188
|
-
row :age
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
member_action :toggle_starred, method: :put do
|
193
|
-
resource.update(starred: !resource.starred)
|
194
|
-
redirect_to resource_path, notice: "Post updated."
|
195
|
-
end
|
196
|
-
|
197
|
-
action_item :toggle_starred, only: :show do
|
198
|
-
link_to 'Toggle Starred', toggle_starred_admin_post_path(post), method: :put
|
199
|
-
end
|
200
|
-
|
201
|
-
show do |post|
|
202
|
-
attributes_table do
|
203
|
-
row :id
|
204
|
-
row :title
|
205
|
-
row :published_date
|
206
|
-
row :author
|
207
|
-
row :body
|
208
|
-
row :category
|
209
|
-
row :starred
|
210
|
-
row :position
|
211
|
-
row :created_at
|
212
|
-
row :updated_at
|
213
|
-
end
|
214
|
-
|
215
|
-
columns do
|
216
|
-
column do
|
217
|
-
panel 'Tags' do
|
218
|
-
table_for(post.taggings.order(:position)) do
|
219
|
-
column :id do |tagging|
|
220
|
-
link_to tagging.tag_id, admin_tag_path(tagging.tag)
|
221
|
-
end
|
222
|
-
column :tag, &:tag_name
|
223
|
-
column :position
|
224
|
-
column :updated_at
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
column do
|
229
|
-
panel 'Category' do
|
230
|
-
attributes_table_for post.category do
|
231
|
-
row :id do |category|
|
232
|
-
link_to category.id, admin_category_path(category)
|
233
|
-
end
|
234
|
-
row :description
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
form do |f|
|
242
|
-
columns do
|
243
|
-
column do
|
244
|
-
f.inputs 'Details' do
|
245
|
-
f.input :title
|
246
|
-
f.input :author
|
247
|
-
f.input :published_date,
|
248
|
-
hint: f.object.persisted? && "Created at #{f.object.created_at}"
|
249
|
-
f.input :custom_category_id
|
250
|
-
f.input :category
|
251
|
-
f.input :position
|
252
|
-
f.input :starred
|
253
|
-
end
|
254
|
-
end
|
255
|
-
column do
|
256
|
-
f.inputs 'Content' do
|
257
|
-
f.input :body
|
258
|
-
end
|
259
|
-
end
|
260
|
-
end
|
261
|
-
f.inputs "Tags" do
|
262
|
-
f.has_many :taggings, sortable: :position do |t|
|
263
|
-
t.input :tag
|
264
|
-
t.input :_destroy, as: :boolean
|
265
|
-
end
|
266
|
-
end
|
267
|
-
para "Press cancel to return to the list without saving."
|
268
|
-
f.actions
|
269
|
-
end
|
270
|
-
RUBY
|
271
|
-
|
272
|
-
inject_into_file 'app/admin/tags.rb', <<-RUBY, after: "ActiveAdmin.register Tag do\n"
|
273
|
-
|
274
|
-
config.create_another = true
|
275
|
-
|
276
|
-
permit_params [:name]
|
277
|
-
|
278
|
-
index do
|
279
|
-
selectable_column
|
280
|
-
id_column
|
281
|
-
column :name
|
282
|
-
column :created_at
|
283
|
-
actions dropdown: true do |tag|
|
284
|
-
item "Preview", admin_tag_path(tag)
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
RUBY
|
289
|
-
|
290
|
-
append_file "db/seeds.rb", "\n\n" + <<-RUBY.strip_heredoc
|
291
|
-
users = ["Jimi Hendrix", "Jimmy Page", "Yngwie Malmsteen", "Eric Clapton", "Kirk Hammett"].collect do |name|
|
292
|
-
first, last = name.split(" ")
|
293
|
-
User.create! first_name: first,
|
294
|
-
last_name: last,
|
295
|
-
username: [first,last].join('-').downcase,
|
296
|
-
age: rand(80)
|
297
|
-
end
|
298
|
-
|
299
|
-
categories = ["Rock", "Pop Rock", "Alt-Country", "Blues", "Dub-Step"].collect do |name|
|
300
|
-
Category.create! name: name
|
301
|
-
end
|
302
|
-
|
303
|
-
published_at_values = [Time.now.utc - 5.days, Time.now.utc - 1.day, nil, Time.now.utc + 3.days]
|
304
|
-
|
305
|
-
1_000.times do |i|
|
306
|
-
user = users[i % users.size]
|
307
|
-
cat = categories[i % categories.size]
|
308
|
-
published = published_at_values[i % published_at_values.size]
|
309
|
-
Post.create title: "Blog Post \#{i}",
|
310
|
-
body: "Blog post \#{i} is written by \#{user.username} about \#{cat.name}",
|
311
|
-
category: cat,
|
312
|
-
published_date: published,
|
313
|
-
author: user,
|
314
|
-
starred: true
|
315
|
-
end
|
316
|
-
|
317
|
-
800.times do |i|
|
318
|
-
ActiveAdmin::Comment.create!(
|
319
|
-
namespace: :admin,
|
320
|
-
author: AdminUser.first,
|
321
|
-
body: "Test comment #{i}",
|
322
|
-
resource: categories.sample,
|
323
|
-
)
|
324
|
-
end
|
325
|
-
RUBY
|
326
|
-
|
327
|
-
rake 'db:seed'
|