sufia 6.0.0 → 6.1.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -5
- data/CONTRIBUTING.md +4 -4
- data/Gemfile +2 -1
- data/History.md +69 -0
- data/README.md +84 -4
- data/SUFIA_VERSION +1 -1
- data/app/assets/images/zotero.png +0 -0
- data/app/assets/javascripts/sufia/featured_works.js +20 -3
- data/app/assets/stylesheets/generic_files.css.erb +2 -2
- data/app/assets/stylesheets/sufia.css.scss +2 -2
- data/app/assets/stylesheets/sufia/_buttons.scss +2 -2
- data/app/assets/stylesheets/sufia/_collections.scss +4 -4
- data/app/assets/stylesheets/sufia/_dashboard.scss +1 -1
- data/app/assets/stylesheets/sufia/_file-listing.scss +3 -0
- data/app/assets/stylesheets/sufia/_modal.scss +4 -0
- data/app/assets/stylesheets/sufia/_settings.scss +4 -3
- data/app/assets/stylesheets/sufia/_styles.scss +4 -0
- data/app/controllers/admin/stats_controller.rb +68 -0
- data/app/controllers/api/items_controller.rb +78 -0
- data/app/controllers/api/zotero_controller.rb +70 -0
- data/app/controllers/authorities_controller.rb +6 -5
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +2 -1
- data/app/controllers/concerns/sufia/breadcrumbs.rb +1 -1
- data/app/controllers/concerns/sufia/depositors_controller_behavior.rb +11 -0
- data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller/local_ingest_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller_behavior.rb +23 -11
- data/app/controllers/concerns/sufia/my_controller_behavior.rb +1 -7
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +1 -2
- data/app/controllers/my/collections_controller.rb +1 -0
- data/app/controllers/my/files_controller.rb +1 -1
- data/app/helpers/sufia/sufia_helper_behavior.rb +28 -16
- data/app/models/my_search_builder.rb +4 -0
- data/app/search_builders/sufia/my_search_builder_behavior.rb +20 -0
- data/app/search_builders/sufia/search_builder.rb +1 -1
- data/app/views/admin/stats/index.html.erb +68 -0
- data/app/views/collections/_action_menu.html.erb +22 -20
- data/app/views/collections/_collection.html.erb +1 -1
- data/app/views/collections/_form_for_select_collection.html.erb +5 -3
- data/app/views/generic_files/_show_actions.html.erb +4 -2
- data/app/views/generic_files/show.html.erb +1 -1
- data/app/views/layouts/sufia-dashboard.html.erb +5 -4
- data/app/views/layouts/sufia-one-column.html.erb +2 -0
- data/app/views/layouts/sufia-two-column.html.erb +6 -4
- data/app/views/my/_facet_layout.html.erb +2 -2
- data/app/views/my/_facets.html.erb +4 -6
- data/app/views/my/index.html.erb +4 -3
- data/app/views/users/_edit_primary.html.erb +18 -17
- data/app/views/users/_follower_modal.html.erb +5 -1
- data/app/views/users/_following_modal.html.erb +5 -1
- data/app/views/users/_user_info.html.erb +6 -1
- data/app/views/users/_zotero.html.erb +12 -0
- data/config/locales/sufia.en.yml +10 -1
- data/config/routes.rb +23 -1
- data/lib/generators/sufia/admin_stat_generator.rb +17 -0
- data/lib/generators/sufia/install_generator.rb +8 -3
- data/{sufia-models/lib/generators/sufia/models/templates/config/resque_admin.rb → lib/generators/sufia/templates/sufia/stats_admin.rb} +3 -3
- data/lib/generators/sufia/upgrade400_generator.rb +2 -2
- data/lib/sufia.rb +3 -0
- data/lib/sufia/arkivo.rb +11 -0
- data/lib/sufia/arkivo/actor.rb +95 -0
- data/lib/sufia/arkivo/config.rb +11 -0
- data/lib/sufia/arkivo/create_subscription_job.rb +67 -0
- data/lib/sufia/arkivo/metadata_munger.rb +51 -0
- data/lib/sufia/arkivo/schema_validator.rb +55 -0
- data/lib/sufia/form_builder.rb +1 -1
- data/lib/sufia/inflections.rb +3 -0
- data/lib/sufia/version.rb +1 -1
- data/lib/sufia/zotero.rb +6 -0
- data/lib/sufia/zotero/config.rb +15 -0
- data/solr_conf/conf/solrconfig.xml +11 -0
- data/spec/controllers/admin_stats_controller_spec.rb +73 -0
- data/spec/controllers/api/items_controller_spec.rb +476 -0
- data/spec/controllers/api/zotero_controller_spec.rb +178 -0
- data/spec/controllers/batch_edits_controller_spec.rb +7 -0
- data/spec/controllers/collections_controller_spec.rb +1 -1
- data/spec/controllers/dashboard_controller_spec.rb +1 -1
- data/spec/controllers/depositors_controller_spec.rb +9 -5
- data/spec/controllers/generic_files_controller_spec.rb +5 -4
- data/spec/controllers/mailbox_controller_spec.rb +2 -2
- data/spec/controllers/my/collections_controller_spec.rb +1 -2
- data/spec/controllers/my/files_controller_spec.rb +5 -5
- data/spec/controllers/my/shares_controller_spec.rb +15 -3
- data/spec/controllers/pages_controller_spec.rb +1 -1
- data/spec/controllers/users_controller_spec.rb +10 -9
- data/spec/factories/api_items.rb +91 -0
- data/spec/factories/generic_files.rb +4 -0
- data/spec/factories/users.rb +4 -4
- data/spec/features/featured_item_spec.rb +26 -0
- data/spec/features/ingest_upload_files_spec.rb +2 -3
- data/spec/features/proxy_spec.rb +0 -1
- data/spec/helpers/permissions_helper_spec.rb +2 -2
- data/spec/helpers/sufia_helper_spec.rb +11 -5
- data/spec/inputs/select_with_help_input_spec.rb +2 -2
- data/spec/javascripts/helpers/.gitkeep +0 -0
- data/spec/javascripts/helpers/jasmine-jquery.js +832 -0
- data/spec/javascripts/jasmine_spec.rb +31 -0
- data/spec/javascripts/notify_update_link_spec.js +8 -0
- data/spec/javascripts/single_use_link_spec.js.coffee +23 -0
- data/spec/javascripts/support/jasmine.yml +124 -0
- data/spec/javascripts/support/jasmine_helper.rb +15 -0
- data/spec/javascripts/terms_of_service_spec.js.coffee +32 -0
- data/spec/javascripts/toggle_icon_spec.js +11 -0
- data/spec/jobs/active_fedora_id_based_job_spec.rb +3 -3
- data/spec/jobs/import_url_job_spec.rb +0 -2
- data/spec/lib/sufia/arkivo/actor_spec.rb +139 -0
- data/spec/lib/sufia/arkivo/create_subscription_job_spec.rb +54 -0
- data/spec/lib/sufia/arkivo/metadata_munger_spec.rb +48 -0
- data/spec/lib/sufia/arkivo/schema_validator_spec.rb +65 -0
- data/spec/lib/sufia/upload_complete_behavior_spec.rb +1 -1
- data/spec/lib/sufia/user_stat_importer_spec.rb +60 -0
- data/spec/lib/sufia/zotero/config_spec.rb +30 -0
- data/spec/models/collection_spec.rb +36 -7
- data/spec/models/file_download_stat_spec.rb +5 -5
- data/spec/models/file_usage_spec.rb +23 -0
- data/spec/models/file_view_stat_spec.rb +6 -6
- data/spec/models/fits_datastream_spec.rb +0 -5
- data/spec/models/generic_file_spec.rb +49 -14
- data/spec/models/local_authority_spec.rb +1 -1
- data/spec/models/proxy_deposit_request_spec.rb +1 -1
- data/spec/models/trophy_spec.rb +8 -8
- data/spec/models/user_spec.rb +33 -0
- data/spec/presenters/sufia/collection_presenter_spec.rb +1 -1
- data/spec/routing/api_route_spec.rb +91 -0
- data/spec/routing/route_spec.rb +1 -1
- data/spec/services/generic_file_audit_service_spec.rb +44 -8
- data/spec/spec_helper.rb +18 -3
- data/spec/support/features.rb +0 -2
- data/spec/support/locations.rb +0 -21
- data/spec/support/rake.rb +41 -0
- data/spec/support/selectors.rb +0 -50
- data/spec/tasks/rake_spec.rb +33 -12
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +12 -0
- data/spec/views/admin/stats/index.html.erb_spec.rb +45 -0
- data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +0 -1
- data/spec/views/dashboard/index_spec.rb +1 -1
- data/spec/views/generic_file/edit.html.erb_spec.rb +1 -1
- data/spec/views/generic_file/show.html.erb_spec.rb +1 -3
- data/spec/views/users/_follower_modal.html.erb_spec.rb +44 -7
- data/spec/views/users/_following_modal.html.erb_spec.rb +49 -7
- data/spec/views/users/edit.html.erb_spec.rb +72 -0
- data/spec/views/users/show.html.erb_spec.rb +1 -1
- data/sufia.gemspec +6 -2
- data/tasks/sufia-user.rake +14 -0
- metadata +130 -156
- data/spec/lib/sufia/id_service_spec.rb +0 -32
- data/spec/services/noid_spec.rb +0 -9
- data/spec/support/poltergeist.rb +0 -11
- data/spec/support/rake_output.rb +0 -20
- data/sufia-models/.gitignore +0 -17
- data/sufia-models/Gemfile +0 -4
- data/sufia-models/LICENSE.md +0 -177
- data/sufia-models/README.md +0 -39
- data/sufia-models/Rakefile +0 -1
- data/sufia-models/app/actors/sufia/generic_file/actor.rb +0 -137
- data/sufia-models/app/jobs/active_fedora_id_based_job.rb +0 -22
- data/sufia-models/app/jobs/active_fedora_pid_based_job.rb +0 -7
- data/sufia-models/app/jobs/audit_job.rb +0 -62
- data/sufia-models/app/jobs/batch_update_job.rb +0 -72
- data/sufia-models/app/jobs/characterize_job.rb +0 -10
- data/sufia-models/app/jobs/create_derivatives_job.rb +0 -14
- data/sufia-models/app/jobs/import_url_job.rb +0 -52
- data/sufia-models/app/jobs/ingest_local_file_job.rb +0 -46
- data/sufia-models/app/jobs/resolrize_job.rb +0 -9
- data/sufia-models/app/models/batch.rb +0 -36
- data/sufia-models/app/models/checksum_audit_log.rb +0 -21
- data/sufia-models/app/models/concerns/sufia/ability.rb +0 -61
- data/sufia-models/app/models/concerns/sufia/collection_behavior.rb +0 -24
- data/sufia-models/app/models/concerns/sufia/file_stat_utils.rb +0 -35
- data/sufia-models/app/models/concerns/sufia/generic_file.rb +0 -25
- data/sufia-models/app/models/concerns/sufia/generic_file/batches.rb +0 -28
- data/sufia-models/app/models/concerns/sufia/generic_file/characterization.rb +0 -89
- data/sufia-models/app/models/concerns/sufia/generic_file/content.rb +0 -13
- data/sufia-models/app/models/concerns/sufia/generic_file/derivatives.rb +0 -26
- data/sufia-models/app/models/concerns/sufia/generic_file/export.rb +0 -343
- data/sufia-models/app/models/concerns/sufia/generic_file/featured.rb +0 -11
- data/sufia-models/app/models/concerns/sufia/generic_file/full_text_indexing.rb +0 -43
- data/sufia-models/app/models/concerns/sufia/generic_file/indexing.rb +0 -14
- data/sufia-models/app/models/concerns/sufia/generic_file/metadata.rb +0 -98
- data/sufia-models/app/models/concerns/sufia/generic_file/mime_types.rb +0 -69
- data/sufia-models/app/models/concerns/sufia/generic_file/permissions.rb +0 -11
- data/sufia-models/app/models/concerns/sufia/generic_file/proxy_deposit.rb +0 -31
- data/sufia-models/app/models/concerns/sufia/generic_file/trophies.rb +0 -14
- data/sufia-models/app/models/concerns/sufia/generic_file/versions.rb +0 -16
- data/sufia-models/app/models/concerns/sufia/generic_file/virus_check.rb +0 -37
- data/sufia-models/app/models/concerns/sufia/model_methods.rb +0 -20
- data/sufia-models/app/models/concerns/sufia/user.rb +0 -137
- data/sufia-models/app/models/concerns/sufia/user_usage_stats.rb +0 -15
- data/sufia-models/app/models/datastreams/file_content_datastream.rb +0 -4
- data/sufia-models/app/models/datastreams/fits_datastream.rb +0 -152
- data/sufia-models/app/models/domain_term.rb +0 -5
- data/sufia-models/app/models/featured_work.rb +0 -22
- data/sufia-models/app/models/file_download_stat.rb +0 -18
- data/sufia-models/app/models/file_usage.rb +0 -34
- data/sufia-models/app/models/file_view_stat.rb +0 -18
- data/sufia-models/app/models/follow.rb +0 -12
- data/sufia-models/app/models/generic_file.rb +0 -3
- data/sufia-models/app/models/geo_names_resource.rb +0 -18
- data/sufia-models/app/models/group.rb +0 -8
- data/sufia-models/app/models/local_authority.rb +0 -86
- data/sufia-models/app/models/local_authority_entry.rb +0 -3
- data/sufia-models/app/models/proxy_deposit_request.rb +0 -85
- data/sufia-models/app/models/proxy_deposit_rights.rb +0 -4
- data/sufia-models/app/models/single_use_link.rb +0 -42
- data/sufia-models/app/models/subject_local_authority_entry.rb +0 -2
- data/sufia-models/app/models/sufia/avatar_uploader.rb +0 -20
- data/sufia-models/app/models/sufia/avatar_validator.rb +0 -8
- data/sufia-models/app/models/sufia/collection.rb +0 -5
- data/sufia-models/app/models/sufia/download.rb +0 -9
- data/sufia-models/app/models/sufia/orcid_validator.rb +0 -12
- data/sufia-models/app/models/sufia/pageview.rb +0 -9
- data/sufia-models/app/models/trophy.rb +0 -10
- data/sufia-models/app/models/user_stat.rb +0 -2
- data/sufia-models/app/models/version_committer.rb +0 -2
- data/sufia-models/app/services/sufia/analytics.rb +0 -50
- data/sufia-models/app/services/sufia/generic_file_audit_service.rb +0 -83
- data/sufia-models/app/services/sufia/generic_file_indexing_service.rb +0 -12
- data/sufia-models/app/services/sufia/id_service.rb +0 -45
- data/sufia-models/app/services/sufia/noid.rb +0 -22
- data/sufia-models/app/services/sufia/repository_audit_service.rb +0 -9
- data/sufia-models/config/locales/sufia.en.yml +0 -6
- data/sufia-models/lib/generators/sufia/models/abstract_migration_generator.rb +0 -30
- data/sufia-models/lib/generators/sufia/models/cached_stats_generator.rb +0 -24
- data/sufia-models/lib/generators/sufia/models/fulltext_generator.rb +0 -27
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +0 -106
- data/sufia-models/lib/generators/sufia/models/orcid_field_generator.rb +0 -19
- data/sufia-models/lib/generators/sufia/models/proxies_generator.rb +0 -24
- data/sufia-models/lib/generators/sufia/models/templates/app/models/collection.rb +0 -2
- data/sufia-models/lib/generators/sufia/models/templates/config/analytics.yml +0 -9
- data/sufia-models/lib/generators/sufia/models/templates/config/clamav.rb +0 -1
- data/sufia-models/lib/generators/sufia/models/templates/config/mailboxer.rb +0 -17
- data/sufia-models/lib/generators/sufia/models/templates/config/mime_types.rb +0 -6
- data/sufia-models/lib/generators/sufia/models/templates/config/redis.yml +0 -9
- data/sufia-models/lib/generators/sufia/models/templates/config/redis_config.rb +0 -32
- data/sufia-models/lib/generators/sufia/models/templates/config/resque-pool.yml +0 -1
- data/sufia-models/lib/generators/sufia/models/templates/config/resque_config.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/templates/config/setup_mail.rb +0 -3
- data/sufia-models/lib/generators/sufia/models/templates/config/solrconfig.xml +0 -223
- data/sufia-models/lib/generators/sufia/models/templates/config/sufia.rb +0 -144
- data/sufia-models/lib/generators/sufia/models/templates/migrations/acts_as_follower_migration.rb +0 -17
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_avatars_to_users.rb +0 -15
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_external_key_to_content_blocks.rb +0 -6
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_groups_to_users.rb +0 -11
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_ldap_attrs_to_user.rb +0 -27
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_linkedin_to_users.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_social_to_users.rb +0 -13
- data/sufia-models/lib/generators/sufia/models/templates/migrations/change_audit_log_pid_to_generic_file_id.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/templates/migrations/change_proxy_deposit_request_pid_to_generic_file_id.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_checksum_audit_logs.rb +0 -19
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_content_blocks.rb +0 -10
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_featured_works.rb +0 -12
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_file_download_stats.rb +0 -12
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_file_view_stats.rb +0 -12
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_local_authorities.rb +0 -50
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_requests.rb +0 -16
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_proxy_deposit_rights.rb +0 -11
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_single_use_links.rb +0 -12
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_tinymce_assets.rb +0 -8
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_trophies.rb +0 -10
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_user_stats.rb +0 -19
- data/sufia-models/lib/generators/sufia/models/templates/migrations/create_version_committers.rb +0 -15
- data/sufia-models/lib/generators/sufia/models/update_content_blocks_generator.rb +0 -18
- data/sufia-models/lib/generators/sufia/models/upgrade400_generator.rb +0 -54
- data/sufia-models/lib/generators/sufia/models/upgrade600_generator.rb +0 -21
- data/sufia-models/lib/generators/sufia/models/usagestats_generator.rb +0 -19
- data/sufia-models/lib/generators/sufia/models/user_stats_generator.rb +0 -31
- data/sufia-models/lib/sufia/messages.rb +0 -66
- data/sufia-models/lib/sufia/models.rb +0 -34
- data/sufia-models/lib/sufia/models/active_fedora/redis.rb +0 -43
- data/sufia-models/lib/sufia/models/active_record/redis.rb +0 -56
- data/sufia-models/lib/sufia/models/engine.rb +0 -79
- data/sufia-models/lib/sufia/models/file_content.rb +0 -6
- data/sufia-models/lib/sufia/models/file_content/versions.rb +0 -21
- data/sufia-models/lib/sufia/models/resque.rb +0 -36
- data/sufia-models/lib/sufia/models/stats/user_stat_importer.rb +0 -108
- data/sufia-models/lib/sufia/models/user_local_directory_behavior.rb +0 -29
- data/sufia-models/lib/sufia/models/utils.rb +0 -22
- data/sufia-models/lib/sufia/models/version.rb +0 -5
- data/sufia-models/lib/sufia/models/virus_found_error.rb +0 -4
- data/sufia-models/lib/sufia/permissions.rb +0 -9
- data/sufia-models/lib/sufia/permissions/readable.rb +0 -20
- data/sufia-models/lib/sufia/permissions/writable.rb +0 -74
- data/sufia-models/lib/tasks/batch_cleanup.rake +0 -19
- data/sufia-models/lib/tasks/migrate.rake +0 -21
- data/sufia-models/lib/tasks/resque.rake +0 -13
- data/sufia-models/lib/tasks/stats_tasks.rake +0 -12
- data/sufia-models/lib/tasks/sufia-models_tasks.rake +0 -80
- data/sufia-models/sufia-models.gemspec +0 -52
data/spec/tasks/rake_spec.rb
CHANGED
|
@@ -5,23 +5,21 @@ describe "Rake tasks" do
|
|
|
5
5
|
|
|
6
6
|
describe "sufia:empty_batches" do
|
|
7
7
|
before do
|
|
8
|
-
|
|
9
|
-
Rake::Task.define_task(:environment)
|
|
8
|
+
load_rake_environment [File.expand_path("../../../sufia-models/lib/tasks/batch_cleanup.rake", __FILE__)]
|
|
10
9
|
end
|
|
11
|
-
|
|
12
|
-
subject { capture_stdout { Rake::Task["sufia:empty_batches"].invoke } }
|
|
10
|
+
subject { run_task "sufia:empty_batches" }
|
|
13
11
|
|
|
14
12
|
context "without an empty batch" do
|
|
15
|
-
it { is_expected.to
|
|
13
|
+
it { is_expected.to eq "Output: \n Errors:" }
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
context "with an empty batch" do
|
|
19
17
|
before { Batch.create("empty-batch") }
|
|
20
|
-
it { is_expected.to start_with("empty-batch contains no files - to delete, rerun with the remove option") }
|
|
18
|
+
it { is_expected.to start_with("Output: empty-batch contains no files - to delete, rerun with the remove option") }
|
|
21
19
|
|
|
22
20
|
describe "removing the empty batch" do
|
|
23
|
-
subject {
|
|
24
|
-
it { is_expected.to start_with("empty-batch contains no files - deleted") }
|
|
21
|
+
subject { run_task "sufia:empty_batches", "remove" }
|
|
22
|
+
it { is_expected.to start_with("Output: empty-batch contains no files - deleted") }
|
|
25
23
|
end
|
|
26
24
|
end
|
|
27
25
|
end
|
|
@@ -30,8 +28,7 @@ describe "Rake tasks" do
|
|
|
30
28
|
let(:namespaced_id) { "sufia:123" }
|
|
31
29
|
let(:corrected_id) { "123" }
|
|
32
30
|
before do
|
|
33
|
-
|
|
34
|
-
Rake::Task.define_task(:environment)
|
|
31
|
+
load_rake_environment [File.expand_path("../../../sufia-models/lib/tasks/migrate.rake", __FILE__)]
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
describe "deleting the namespace from ProxyDepositRequest#generic_file_id" do
|
|
@@ -39,7 +36,7 @@ describe "Rake tasks" do
|
|
|
39
36
|
let(:receiver) { FactoryGirl.find_or_create(:archivist) }
|
|
40
37
|
before do
|
|
41
38
|
ProxyDepositRequest.create(generic_file_id: namespaced_id, sending_user: sender, receiving_user: receiver, sender_comment: "please take this")
|
|
42
|
-
|
|
39
|
+
run_task "sufia:migrate:proxy_deposits"
|
|
43
40
|
end
|
|
44
41
|
subject { ProxyDepositRequest.first.generic_file_id }
|
|
45
42
|
it { is_expected.to eql corrected_id }
|
|
@@ -48,11 +45,35 @@ describe "Rake tasks" do
|
|
|
48
45
|
describe "deleting the namespace from ChecksumAuditLog#generic_file_id" do
|
|
49
46
|
before do
|
|
50
47
|
ChecksumAuditLog.create(generic_file_id: namespaced_id)
|
|
51
|
-
|
|
48
|
+
run_task "sufia:migrate:audit_logs"
|
|
52
49
|
end
|
|
53
50
|
subject { ChecksumAuditLog.first.generic_file_id }
|
|
54
51
|
it { is_expected.to eql corrected_id }
|
|
55
52
|
end
|
|
56
53
|
end
|
|
57
54
|
|
|
55
|
+
describe "sufia:user:list_emails" do
|
|
56
|
+
let!(:user1) { FactoryGirl.create(:user) }
|
|
57
|
+
let!(:user2) { FactoryGirl.create(:user) }
|
|
58
|
+
|
|
59
|
+
before do
|
|
60
|
+
load_rake_environment [File.expand_path("../../../tasks/sufia-user.rake", __FILE__)]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "creates a file" do
|
|
64
|
+
run_task "sufia:user:list_emails"
|
|
65
|
+
expect(File.exist?("user_emails.txt")).to be_truthy
|
|
66
|
+
expect(IO.read("user_emails.txt")).to include(user1.email, user2.email)
|
|
67
|
+
File.delete("user_emails.txt")
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "creates a file I give it" do
|
|
71
|
+
run_task "sufia:user:list_emails", "abc123.txt"
|
|
72
|
+
expect(File.exist?("user_emails.txt")).not_to be_truthy
|
|
73
|
+
expect(File.exist?("abc123.txt")).to be_truthy
|
|
74
|
+
expect(IO.read("abc123.txt")).to include(user1.email, user2.email)
|
|
75
|
+
File.delete("abc123.txt")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
58
79
|
end
|
|
@@ -11,6 +11,10 @@ class TestAppGenerator < Rails::Generators::Base
|
|
|
11
11
|
generate "browse_everything:config"
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def banner
|
|
15
|
+
say_status("info", "TEST ENVIRONMENT OVERRIDES", :blue)
|
|
16
|
+
end
|
|
17
|
+
|
|
14
18
|
def add_analytics_config
|
|
15
19
|
append_file 'config/analytics.yml' do
|
|
16
20
|
"\n" +
|
|
@@ -27,4 +31,12 @@ class TestAppGenerator < Rails::Generators::Base
|
|
|
27
31
|
gsub_file "config/initializers/sufia.rb",
|
|
28
32
|
"config.analytics = false", "config.analytics = true"
|
|
29
33
|
end
|
|
34
|
+
|
|
35
|
+
def enable_arkivo_api
|
|
36
|
+
generate 'sufia:models:arkivo_api'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def relax_routing_constraint
|
|
40
|
+
gsub_file 'config/initializers/arkivo_constraint.rb', 'false', 'true'
|
|
41
|
+
end
|
|
30
42
|
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "admin/stats/index.html.erb" do
|
|
4
|
+
context "default depositors" do
|
|
5
|
+
let(:top_5_active_users) do
|
|
6
|
+
users = {}
|
|
7
|
+
5.times { |i| users[i.to_s] = i}
|
|
8
|
+
users
|
|
9
|
+
end
|
|
10
|
+
before do
|
|
11
|
+
assign(:files_count, {})
|
|
12
|
+
assign(:top_formats, [])
|
|
13
|
+
assign(:users_stats, {})
|
|
14
|
+
assign(:recent_users, [])
|
|
15
|
+
assign(:active_users, top_5_active_users)
|
|
16
|
+
render
|
|
17
|
+
end
|
|
18
|
+
it "should show top 5 depositors and option to view more" do
|
|
19
|
+
expect(rendered).to have_content("(top 5)")
|
|
20
|
+
expect(rendered).to have_content("View top 20")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
context "top 20 depositors" do
|
|
25
|
+
let(:top_20_active_users) do
|
|
26
|
+
users = {}
|
|
27
|
+
20.times { |i| users[i.to_s] = i}
|
|
28
|
+
users
|
|
29
|
+
end
|
|
30
|
+
before do
|
|
31
|
+
assign(:files_count, {})
|
|
32
|
+
assign(:top_formats, [])
|
|
33
|
+
assign(:users_stats, {})
|
|
34
|
+
assign(:recent_users, [])
|
|
35
|
+
assign(:active_users, top_20_active_users)
|
|
36
|
+
params[:dep_count] = 20
|
|
37
|
+
render
|
|
38
|
+
end
|
|
39
|
+
it "should show top 20 depositors, without an option to view more" do
|
|
40
|
+
expect(rendered).to have_content("(top 20)")
|
|
41
|
+
expect(rendered).to_not have_content("View top 20")
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -24,7 +24,6 @@ describe 'catalog/_sort_and_per_page.html.erb', :type => :view do
|
|
|
24
24
|
|
|
25
25
|
it 'displays the relevance option for sorting' do
|
|
26
26
|
render
|
|
27
|
-
page = Capybara::Node::Simple.new(rendered)
|
|
28
27
|
expect(rendered).to include("<li><a href=\"/catalog?sort=score+desc%2C+date_uploaded_dtsi+desc\">relevance</a></li>")
|
|
29
28
|
end
|
|
30
29
|
|
|
@@ -88,7 +88,7 @@ describe "dashboard/index.html.erb", :type => :view do
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
it "should show the statistics before the profile" do
|
|
91
|
-
expect(@sidebar).to match
|
|
91
|
+
expect(@sidebar).to match(/Your Statistics.*Charles Francis Xavier/m)
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -7,9 +7,7 @@ describe 'generic_files/show.html.erb', :type => :view do
|
|
|
7
7
|
twitter_handle: 'bot4lib')
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
let(:content)
|
|
11
|
-
content = double('content', versions: [], mimeType: 'application/pdf')
|
|
12
|
-
end
|
|
10
|
+
let(:content){ double('content', versions: [], mimeType: 'application/pdf') }
|
|
13
11
|
|
|
14
12
|
let(:generic_file) do
|
|
15
13
|
stub_model(GenericFile, id: '123',
|
|
@@ -1,18 +1,55 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe 'users/_follower_modal.html.erb', :type => :view do
|
|
4
|
-
let(:
|
|
4
|
+
let(:frank) { FactoryGirl.create(:user, display_name: "Frank") }
|
|
5
|
+
let(:page) { Capybara::Node::Simple.new(rendered) }
|
|
5
6
|
|
|
6
7
|
before do
|
|
7
|
-
assign :
|
|
8
|
+
assign :user, view_user
|
|
9
|
+
allow(controller).to receive(:current_user).and_return(current_user)
|
|
10
|
+
assign :followers, followers
|
|
11
|
+
render
|
|
8
12
|
end
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
context "when followers" do
|
|
15
|
+
let(:view_user) { }
|
|
16
|
+
let(:current_user) { }
|
|
17
|
+
let(:followers) { [frank]}
|
|
18
|
+
|
|
19
|
+
it "draws user list" do
|
|
20
|
+
expect(page).to have_link "Frank", href: "/users/#{frank.to_param}"
|
|
21
|
+
end
|
|
14
22
|
end
|
|
15
23
|
|
|
16
|
-
end
|
|
17
24
|
|
|
25
|
+
context "when no followers" do
|
|
26
|
+
let(:followers) { []}
|
|
27
|
+
let(:view_user) { frank }
|
|
28
|
+
|
|
29
|
+
context "when logged in " do
|
|
30
|
+
context "when current user has no followers" do
|
|
31
|
+
let(:current_user) { frank }
|
|
32
|
+
|
|
33
|
+
it "indicates the lack of followers for you" do
|
|
34
|
+
expect(page).to have_text "No one is following you."
|
|
35
|
+
end
|
|
36
|
+
end
|
|
18
37
|
|
|
38
|
+
context "when another user has no followers" do
|
|
39
|
+
let(:current_user) { stub_model(User) }
|
|
40
|
+
|
|
41
|
+
it "indicates the lack of followers for this user" do
|
|
42
|
+
expect(page).to have_text "No one is following this user."
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "when not logged in" do
|
|
48
|
+
let(:current_user) { }
|
|
49
|
+
|
|
50
|
+
it "indicates the lack of followers for this user" do
|
|
51
|
+
expect(page).to have_text "No one is following this user."
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -1,18 +1,60 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe 'users/_following_modal.html.erb', :type => :view do
|
|
4
|
-
let(:user) { FactoryGirl.create(:user, display_name: "Frank") }
|
|
5
4
|
|
|
6
5
|
before do
|
|
7
|
-
assign :following,
|
|
6
|
+
assign :following, following
|
|
7
|
+
assign :user, view_user
|
|
8
|
+
allow(controller).to receive(:current_user).and_return(current_user)
|
|
9
|
+
render
|
|
8
10
|
end
|
|
11
|
+
let(:frank) { FactoryGirl.create(:user, display_name: "Frank") }
|
|
12
|
+
let(:page) { Capybara::Node::Simple.new(rendered) }
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
context "when following users" do
|
|
15
|
+
let(:following) { [frank] }
|
|
16
|
+
let(:current_user) { frank }
|
|
17
|
+
let(:view_user) { }
|
|
18
|
+
|
|
19
|
+
it "draws user list" do
|
|
20
|
+
expect(page).to have_link "Frank", href: "/users/#{frank.to_param}"
|
|
21
|
+
end
|
|
14
22
|
end
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
context "when not following users" do
|
|
25
|
+
let(:following) { [] }
|
|
26
|
+
|
|
27
|
+
context "when logged in" do
|
|
28
|
+
let(:current_user) { frank }
|
|
29
|
+
|
|
30
|
+
before do
|
|
31
|
+
assign :user, frank
|
|
32
|
+
end
|
|
17
33
|
|
|
34
|
+
context "when current user is not following anyone" do
|
|
35
|
+
let(:view_user) { frank }
|
|
18
36
|
|
|
37
|
+
it "indicates that you are not following anyone" do
|
|
38
|
+
expect(page).to have_text "You are not following anyone."
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "when another user is not following anyone" do
|
|
43
|
+
let(:view_user) { stub_model(User) }
|
|
44
|
+
|
|
45
|
+
it "indicates the user is not following anyone" do
|
|
46
|
+
expect(page).to have_text "This user is not following anyone."
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "when not logged in" do
|
|
52
|
+
let(:current_user) { }
|
|
53
|
+
let(:view_user) { frank }
|
|
54
|
+
|
|
55
|
+
it "indicates the user is not following anyone" do
|
|
56
|
+
expect(page).to have_text "This user is not following anyone."
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'users/edit.html.erb', type: :view do
|
|
4
|
+
let(:user) { stub_model(User, user_key: 'mjg') }
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
allow(view).to receive(:signed_in?).and_return(true)
|
|
8
|
+
allow(view).to receive(:current_user).and_return(user)
|
|
9
|
+
assign(:user, user)
|
|
10
|
+
assign(:followers, [])
|
|
11
|
+
assign(:following, [])
|
|
12
|
+
assign(:trophies, [])
|
|
13
|
+
assign(:events, [])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "shows an ORCID field" do
|
|
17
|
+
render
|
|
18
|
+
expect(rendered).to match(/ORCID Profile/)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context 'with Zotero integration enabled' do
|
|
22
|
+
before do
|
|
23
|
+
allow(Sufia.config).to receive(:arkivo_api) { true }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'shows a Zotero label' do
|
|
27
|
+
render
|
|
28
|
+
expect(rendered).to match(/Zotero Profile/)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context 'with a userID already set on the user instance' do
|
|
32
|
+
before do
|
|
33
|
+
allow(user).to receive(:zotero_userid) { '12345' }
|
|
34
|
+
render
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'shows a link to the Zotero profile' do
|
|
38
|
+
expect(rendered).to have_link("Connected!", href: "https://www.zotero.org/users/12345")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context 'with no existing token' do
|
|
43
|
+
before { render }
|
|
44
|
+
|
|
45
|
+
it 'shows a Zotero OAuth button' do
|
|
46
|
+
expect(rendered).to have_css('a#zotero')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context 'with an existing token, in the production env' do
|
|
51
|
+
before do
|
|
52
|
+
allow(Rails.env).to receive(:production?) { true }
|
|
53
|
+
render
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'shows a Zotero OAuth button' do
|
|
57
|
+
expect(rendered).to have_css('a#zotero')
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context 'with Zotero integration disabled' do
|
|
63
|
+
before do
|
|
64
|
+
allow(Sufia.config).to receive(:arkivo_api) { false }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'hides a Zotero OAuth button' do
|
|
68
|
+
render
|
|
69
|
+
expect(subject).not_to have_css('a#zotero')
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -26,7 +26,7 @@ describe 'users/show.html.erb', :type => :view do
|
|
|
26
26
|
|
|
27
27
|
it "should have the vitals" do
|
|
28
28
|
render
|
|
29
|
-
expect(rendered).to match
|
|
29
|
+
expect(rendered).to match(/Joined on #{join_date.strftime("%b %d, %Y")}/)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
context "with trophy" do
|
data/sufia.gemspec
CHANGED
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
|
8
8
|
gem.summary = %q{Sufia was extracted from ScholarSphere developed by Penn State University}
|
|
9
9
|
gem.homepage = "http://github.com/projecthydra/sufia"
|
|
10
10
|
|
|
11
|
-
gem.files = `git ls-files`.split($\)
|
|
11
|
+
gem.files = `git ls-files | grep -v ^sufia-models`.split($\)
|
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
13
13
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
14
14
|
gem.name = "sufia"
|
|
@@ -19,7 +19,8 @@ Gem::Specification.new do |gem|
|
|
|
19
19
|
gem.add_dependency 'sufia-models', version
|
|
20
20
|
gem.add_dependency 'blacklight_advanced_search', ['>= 5.1.4', '< 6.0']
|
|
21
21
|
gem.add_dependency 'blacklight', '~> 5.12'
|
|
22
|
-
gem.add_dependency '
|
|
22
|
+
gem.add_dependency 'railties', '>= 4.2.0'
|
|
23
|
+
gem.add_dependency 'tinymce-rails', '~> 4.1'
|
|
23
24
|
gem.add_dependency 'tinymce-rails-imageupload', '~> 4.0.16.beta'
|
|
24
25
|
|
|
25
26
|
# sass-rails is typically generated into the app's gemfile by `rails new`
|
|
@@ -40,6 +41,8 @@ Gem::Specification.new do |gem|
|
|
|
40
41
|
gem.add_dependency 'breadcrumbs_on_rails', '~> 2.3.0'
|
|
41
42
|
gem.add_dependency 'select2-rails', '~> 3.5.9'
|
|
42
43
|
gem.add_dependency "devise", "~> 3.0"
|
|
44
|
+
gem.add_dependency 'json-schema'
|
|
45
|
+
gem.add_dependency 'oauth'
|
|
43
46
|
|
|
44
47
|
gem.add_development_dependency 'engine_cart', '~> 0.5'
|
|
45
48
|
gem.add_development_dependency 'mida', '~> 0.3'
|
|
@@ -51,4 +54,5 @@ Gem::Specification.new do |gem|
|
|
|
51
54
|
gem.add_development_dependency "poltergeist", "~> 1.5"
|
|
52
55
|
gem.add_development_dependency "factory_girl_rails", '~> 4.4'
|
|
53
56
|
gem.add_development_dependency "equivalent-xml", '~> 0.5'
|
|
57
|
+
gem.add_development_dependency "jasmine", '~> 2.3'
|
|
54
58
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
namespace :sufia do
|
|
2
|
+
namespace :user do
|
|
3
|
+
|
|
4
|
+
desc "list user's email"
|
|
5
|
+
task "list_emails", [:file_name] => :environment do |cmd, args|
|
|
6
|
+
file_name = args[:file_name]
|
|
7
|
+
file_name ||= "user_emails.txt"
|
|
8
|
+
users = User.all.map {|user| user.email}.reject {|email| email.blank?}
|
|
9
|
+
f = File.new(file_name, "w")
|
|
10
|
+
f.write(users.join(", "))
|
|
11
|
+
f.close
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|