sufia 5.0.0 → 6.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -8
- data/Gemfile +3 -12
- data/History.md +0 -36
- data/LICENSE.md +14 -0
- data/README.md +4 -8
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia.js +1 -17
- data/app/assets/javascripts/sufia/batch_edit.js +43 -28
- data/app/assets/javascripts/sufia/edit_metadata.js +9 -14
- data/app/assets/javascripts/sufia/multiForm.js +67 -0
- data/app/assets/javascripts/sufia/permissions.js +92 -35
- data/app/assets/stylesheets/sufia.css.scss +1 -6
- data/app/assets/stylesheets/sufia/_batch-edit.scss +0 -8
- data/app/assets/stylesheets/sufia/_dashboard.scss +1 -15
- data/app/assets/stylesheets/sufia/_file-listing.scss +1 -1
- data/app/assets/stylesheets/sufia/_settings.scss +0 -1
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +3 -10
- data/app/controllers/concerns/sufia/breadcrumbs.rb +3 -8
- data/app/controllers/concerns/sufia/catalog.rb +1 -1
- data/app/controllers/concerns/sufia/controller.rb +3 -1
- data/app/controllers/concerns/sufia/downloads_controller_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller/browse_everything.rb +1 -1
- data/app/controllers/concerns/sufia/files_controller_behavior.rb +16 -4
- data/app/controllers/concerns/sufia/homepage_controller.rb +1 -1
- data/app/controllers/concerns/sufia/my_controller_behavior.rb +2 -2
- data/app/controllers/concerns/sufia/transfers_controller_behavior.rb +3 -4
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +2 -7
- data/app/controllers/my/collections_controller.rb +3 -4
- data/app/controllers/my/highlights_controller.rb +2 -2
- data/app/controllers/my/shares_controller.rb +3 -3
- data/app/controllers/single_use_links_controller.rb +5 -9
- data/app/controllers/single_use_links_viewer_controller.rb +4 -4
- data/app/helpers/generic_file_helper.rb +9 -0
- data/app/helpers/sufia/records_helper_behavior.rb +16 -0
- data/app/helpers/sufia/sufia_helper_behavior.rb +0 -11
- data/app/jobs/content_depositor_change_event_job.rb +1 -1
- data/app/jobs/ingest_local_file_job.rb +2 -1
- data/app/models/concerns/sufia/solr_document_behavior.rb +10 -10
- data/app/models/featured_work_list.rb +7 -9
- data/app/presenters/sufia/version_list_presenter.rb +15 -0
- data/app/presenters/sufia/version_presenter.rb +30 -0
- data/app/views/batch/_metadata.html.erb +51 -29
- data/app/views/batch/_more_metadata.html.erb +1 -1
- data/app/views/batch/edit.html.erb +10 -8
- data/app/views/batch_edits/edit.html.erb +13 -9
- data/app/views/collections/_edit_descriptions.html.erb +1 -1
- data/app/views/collections/_form.html.erb +4 -4
- data/app/views/collections/_form_for_select_collection.html.erb +1 -1
- data/app/views/collections/_show_document_list_menu.html.erb +7 -5
- data/app/views/collections/_show_document_list_row.html.erb +2 -2
- data/app/views/collections/edit.html.erb +0 -1
- data/app/views/collections/edit_fields/_description.html.erb +4 -0
- data/app/views/collections/edit_fields/_title.html.erb +3 -0
- data/app/views/collections/show.html.erb +0 -1
- data/app/views/dashboard/_index_partials/_stats.html.erb +3 -3
- data/app/views/generic_files/_descriptions.html.erb +9 -9
- data/app/views/generic_files/_field_form.html.erb +11 -25
- data/app/views/generic_files/_permission.html.erb +6 -4
- data/app/views/generic_files/_permission_form.html.erb +15 -17
- data/app/views/generic_files/_show_details.html.erb +1 -11
- data/app/views/generic_files/_versioning.html.erb +5 -5
- data/app/views/generic_files/edit.html.erb +5 -4
- data/app/views/generic_files/show.html.erb +6 -6
- data/app/views/homepage/_featured_fields.html.erb +2 -2
- data/app/views/homepage/_recent_document.html.erb +1 -1
- data/app/views/layouts/_head_tag_content.html.erb +0 -2
- data/app/views/layouts/error.html.erb +0 -1
- data/app/views/my/_index_partials/_default_group.html.erb +1 -1
- data/app/views/my/_index_partials/_list_files.html.erb +1 -1
- data/app/views/my/index.html.erb +2 -2
- data/app/views/records/_edit_field.html.erb +17 -19
- data/app/views/records/edit_fields/_default.html.erb +10 -12
- data/app/views/records/edit_fields/_description.html.erb +10 -3
- data/app/views/records/edit_fields/_resource_type.html.erb +4 -5
- data/app/views/records/edit_fields/_rights.html.erb +9 -2
- data/app/views/records/edit_fields/_suffix.html.erb +10 -0
- data/app/views/records/edit_fields/_type.html.erb +8 -2
- data/app/views/records/show_fields/_based_near.html.erb +1 -1
- data/app/views/records/show_fields/_creator.html.erb +1 -1
- data/app/views/records/show_fields/_language.html.erb +1 -1
- data/app/views/records/show_fields/_publisher.html.erb +1 -1
- data/app/views/records/show_fields/_resource_type.html.erb +1 -1
- data/app/views/records/show_fields/_subject.html.erb +1 -1
- data/app/views/records/show_fields/_tag.html.erb +1 -1
- data/app/views/single_use_links/new_download.html.erb +2 -2
- data/app/views/users/_profile.html.erb +2 -1
- data/app/views/users/_social_media_info.html.erb +20 -0
- data/app/views/users/_user_info.html.erb +3 -20
- data/app/views/users/edit.html.erb +2 -11
- data/app/views/users/show.html.erb +1 -1
- data/bin/audit_repository +1 -1
- data/config/initializers/sufia_events.rb +4 -4
- data/config/locales/sufia.en.yml +0 -5
- data/config/routes.rb +1 -1
- data/lib/generators/sufia/install_generator.rb +0 -4
- data/lib/generators/sufia/templates/catalog_controller.rb +59 -59
- data/lib/sufia.rb +1 -4
- data/lib/sufia/version.rb +1 -1
- data/spec/actors/generic_file/actor_spec.rb +67 -8
- data/spec/controllers/batch_controller_spec.rb +72 -86
- data/spec/controllers/batch_edits_controller_spec.rb +17 -19
- data/spec/controllers/catalog_controller_spec.rb +16 -24
- data/spec/controllers/collections_controller_spec.rb +47 -74
- data/spec/controllers/downloads_controller_spec.rb +40 -35
- data/spec/controllers/generic_files_controller_spec.rb +363 -428
- data/spec/controllers/homepage_controller_spec.rb +12 -9
- data/spec/controllers/mailbox_controller_spec.rb +1 -4
- data/spec/controllers/my/files_controller_spec.rb +0 -10
- data/spec/controllers/single_use_links_controller_spec.rb +28 -35
- data/spec/controllers/single_use_links_viewer_controller_spec.rb +27 -41
- data/spec/controllers/transfers_controller_spec.rb +6 -6
- data/spec/controllers/users_controller_spec.rb +121 -124
- data/spec/factories/generic_files.rb +9 -17
- data/spec/features/browse_dashboard_files_spec.rb +8 -10
- data/spec/features/browse_files_spec.rb +12 -25
- data/spec/features/catalog_search_spec.rb +49 -49
- data/spec/features/collection_spec.rb +18 -24
- data/spec/features/contact_form_spec.rb +26 -20
- data/spec/features/ingest_upload_files_spec.rb +8 -6
- data/spec/features/ownership_transfer_spec.rb +2 -6
- data/spec/features/proxy_spec.rb +1 -1
- data/spec/features/search_spec.rb +2 -3
- data/spec/features/single_use_links_spec.rb +1 -1
- data/spec/features/users_spec.rb +1 -1
- data/spec/helpers/records_helper_spec.rb +24 -10
- data/spec/jobs/active_fedora_pid_based_job_spec.rb +1 -5
- data/spec/jobs/audit_job_spec.rb +66 -21
- data/spec/jobs/batch_update_job_spec.rb +49 -36
- data/spec/jobs/content_depositor_change_event_job_spec.rb +2 -4
- data/spec/jobs/create_derivatives_job_spec.rb +18 -19
- data/spec/jobs/event_jobs_spec.rb +17 -21
- data/spec/jobs/import_url_job_spec.rb +1 -6
- data/spec/jobs/ingest_local_file_job_spec.rb +0 -4
- data/spec/lib/sufia/breadcrumbs_spec.rb +8 -46
- data/spec/lib/sufia/id_service_spec.rb +8 -3
- data/spec/lib/sufia/user_stat_importer_spec.rb +18 -25
- data/spec/lib/sufia/writable_permissions_spec.rb +0 -4
- data/spec/models/ability_spec.rb +25 -18
- data/spec/models/batch_spec.rb +16 -45
- data/spec/models/characterization_spec.rb +1 -1
- data/spec/models/checksum_audit_log_spec.rb +51 -29
- data/spec/models/collection_spec.rb +0 -5
- data/spec/models/featured_work_list_spec.rb +2 -4
- data/spec/models/file_content_datastream_spec.rb +27 -60
- data/spec/models/file_usage_spec.rb +16 -21
- data/spec/models/fits_datastream_spec.rb +47 -2
- data/spec/models/generic_file/web_form_spec.rb +1 -1
- data/spec/models/generic_file_spec.rb +238 -735
- data/spec/models/local_authority_spec.rb +8 -13
- data/spec/models/proxy_deposit_request_spec.rb +3 -7
- data/spec/models/single_use_link_spec.rb +12 -16
- data/spec/models/solr_document_spec.rb +1 -1
- data/spec/models/trophy_spec.rb +1 -3
- data/spec/models/user_spec.rb +47 -75
- data/spec/presenters/sufia/version_list_presenter_spec.rb +22 -0
- data/spec/presenters/sufia/version_presenter_spec.rb +51 -0
- data/spec/services/generic_file_audit_service_spec.rb +85 -0
- data/spec/services/repository_audit_service_spec.rb +18 -0
- data/spec/spec_helper.rb +26 -7
- data/spec/support/fixture_helpers.rb +2 -4
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +0 -4
- data/spec/views/batch/edit.html.erb_spec.rb +17 -7
- data/spec/views/catalog/index.html.erb_spec.rb +8 -6
- data/spec/views/collections/_form.html.erb_spec.rb +4 -2
- data/spec/views/collections/_show_document_list.erb_spec.rb +31 -0
- data/spec/views/dashboard/index_spec.rb +2 -2
- data/spec/views/generic_file/edit.html.erb_spec.rb +20 -6
- data/spec/views/generic_file/show.html.erb_spec.rb +3 -3
- data/spec/views/users/show.html.erb_spec.rb +1 -1
- data/sufia-models/app/actors/sufia/generic_file/actor.rb +8 -10
- data/sufia-models/app/jobs/active_fedora_pid_based_job.rb +2 -3
- data/sufia-models/app/jobs/audit_job.rb +46 -32
- data/sufia-models/app/jobs/batch_update_job.rb +9 -8
- data/sufia-models/app/jobs/import_url_job.rb +2 -2
- data/sufia-models/app/models/batch.rb +11 -12
- data/sufia-models/app/models/checksum_audit_log.rb +12 -10
- data/sufia-models/app/models/concerns/sufia/ability.rb +4 -6
- data/sufia-models/app/models/concerns/sufia/collection.rb +4 -5
- data/sufia-models/app/models/concerns/sufia/generic_file.rb +3 -86
- data/sufia-models/app/models/concerns/sufia/generic_file/batches.rb +29 -0
- data/sufia-models/app/models/concerns/sufia/generic_file/characterization.rb +3 -3
- data/sufia-models/app/models/concerns/sufia/generic_file/content.rb +13 -0
- data/sufia-models/app/models/concerns/sufia/generic_file/derivatives.rb +5 -5
- data/sufia-models/app/models/concerns/sufia/generic_file/export.rb +4 -0
- data/sufia-models/app/models/concerns/sufia/generic_file/full_text_indexing.rb +2 -2
- data/sufia-models/app/models/concerns/sufia/generic_file/indexing.rb +23 -0
- data/sufia-models/app/models/concerns/sufia/generic_file/metadata.rb +80 -11
- data/sufia-models/app/models/concerns/sufia/generic_file/proxy_deposit.rb +12 -3
- data/sufia-models/app/models/concerns/sufia/generic_file/versions.rb +4 -4
- data/sufia-models/app/models/concerns/sufia/generic_file/web_form.rb +14 -6
- data/sufia-models/app/models/concerns/sufia/model_methods.rb +11 -9
- data/sufia-models/app/models/concerns/sufia/user.rb +11 -33
- data/sufia-models/app/models/datastreams/file_content_datastream.rb +1 -1
- data/sufia-models/app/models/datastreams/fits_datastream.rb +1 -1
- data/sufia-models/app/models/file_usage.rb +3 -3
- data/sufia-models/app/models/local_authority.rb +2 -2
- data/sufia-models/app/models/proxy_deposit_request.rb +1 -1
- data/sufia-models/app/services/sufia/generic_file_audit_service.rb +83 -0
- data/sufia-models/app/services/sufia/id_service.rb +5 -5
- data/sufia-models/app/services/sufia/noid.rb +10 -7
- data/sufia-models/app/services/sufia/repository_audit_service.rb +9 -0
- data/sufia-models/lib/generators/sufia/models/cached_stats_generator.rb +47 -3
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +31 -11
- data/sufia-models/lib/generators/sufia/models/proxies_generator.rb +31 -2
- data/sufia-models/lib/generators/sufia/models/templates/config/sufia.rb +10 -0
- data/sufia-models/lib/generators/sufia/models/upgrade400_generator.rb +33 -2
- data/sufia-models/lib/sufia/models/engine.rb +13 -4
- data/sufia-models/lib/sufia/models/file_content/versions.rb +9 -11
- data/sufia-models/lib/sufia/models/stats/user_stat_importer.rb +5 -9
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia-models/lib/sufia/permissions/writable.rb +34 -16
- data/sufia-models/sufia-models.gemspec +4 -2
- data/sufia.gemspec +4 -5
- data/tasks/jetty.rake +0 -26
- data/tasks/sufia-dev.rake +14 -2
- metadata +49 -64
- data/LICENSE +0 -15
- data/app/assets/images/orcid.png +0 -0
- data/app/assets/javascripts/sufia/manage_repeating_fields.js +0 -74
- data/app/assets/stylesheets/sufia/_multi_value_fields.css.scss +0 -67
- data/app/inputs/multi_value_input.rb +0 -84
- data/app/views/records/_rights_modal.html.erb +0 -1
- data/config/initializers/simple_form.rb +0 -167
- data/config/initializers/simple_form_bootstrap.rb +0 -137
- data/config/locales/simple_form.en.yml +0 -31
- data/fedora_conf/conf/development/fedora.fcfg +0 -946
- data/fedora_conf/conf/test/fedora.fcfg +0 -946
- data/spec/models/generic_file/reload_on_save_spec.rb +0 -25
- data/spec/models/generic_file_rdf_datastream_spec.rb +0 -12
- data/spec/models/properties_datastream_spec.rb +0 -41
- data/spec/views/generic_file/_permission_form.html.erb_spec.rb +0 -19
- data/sufia-models/app/models/concerns/sufia/generic_file/audit.rb +0 -116
- data/sufia-models/app/models/concerns/sufia/generic_file/reload_on_save.rb +0 -18
- data/sufia-models/app/models/concerns/sufia/properties_datastream_behavior.rb +0 -32
- data/sufia-models/app/models/datastreams/batch_rdf_datastream.rb +0 -6
- data/sufia-models/app/models/datastreams/generic_file_rdf_datastream.rb +0 -69
- data/sufia-models/app/models/datastreams/paranoid_rights_datastream.rb +0 -22
- data/sufia-models/app/models/datastreams/properties_datastream.rb +0 -4
- data/sufia-models/app/models/sufia/orcid_validator.rb +0 -8
- data/sufia-models/lib/generators/sufia/models/abstract_migration_generator.rb +0 -30
- data/sufia-models/lib/generators/sufia/models/orcid_field_generator.rb +0 -19
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +0 -5
- data/sufia-models/lib/generators/sufia/models/user_stats_generator.rb +0 -31
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sufia::RepositoryAuditService do
|
4
|
+
let(:user) { FactoryGirl.create(:user) }
|
5
|
+
let!(:file) do
|
6
|
+
GenericFile.create! do |file|
|
7
|
+
file.add_file(File.open(fixture_path + '/world.png'), 'content', 'world.png')
|
8
|
+
file.apply_depositor_metadata(user)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#audit_everything" do
|
13
|
+
it "should audit everything" do
|
14
|
+
expect_any_instance_of(GenericFile).to receive(:audit)
|
15
|
+
Sufia::RepositoryAuditService.audit_everything
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
ENV["RAILS_ENV"] ||= 'test'
|
2
|
+
require "bundler/setup"
|
2
3
|
|
4
|
+
|
5
|
+
require 'factory_girl'
|
3
6
|
require 'engine_cart'
|
4
7
|
EngineCart.load_application!
|
5
8
|
|
9
|
+
require 'devise'
|
10
|
+
|
6
11
|
require 'mida'
|
7
12
|
require 'rspec/rails'
|
8
13
|
require 'rspec/its'
|
9
14
|
require 'rspec/matchers'
|
10
15
|
require 'rspec/active_model/mocks'
|
11
|
-
require 'factory_girl_rails'
|
12
16
|
require 'capybara/poltergeist'
|
13
17
|
require 'capybara/rspec'
|
14
18
|
require 'capybara/rails'
|
@@ -16,6 +20,7 @@ require 'equivalent-xml'
|
|
16
20
|
require 'equivalent-xml/rspec_matchers'
|
17
21
|
require 'database_cleaner'
|
18
22
|
require 'support/features'
|
23
|
+
require 'byebug' unless ENV['TRAVIS']
|
19
24
|
|
20
25
|
if ENV['COVERAGE']
|
21
26
|
require 'simplecov'
|
@@ -23,8 +28,12 @@ if ENV['COVERAGE']
|
|
23
28
|
SimpleCov.command_name "spec"
|
24
29
|
end
|
25
30
|
|
26
|
-
Capybara.
|
31
|
+
Capybara.default_driver = :rack_test # This is a faster driver
|
32
|
+
Capybara.javascript_driver = :poltergeist # This is slower
|
27
33
|
Capybara.default_wait_time = ENV['TRAVIS'] ? 30 : 15
|
34
|
+
# HttpLogger.logger = Logger.new(STDOUT)
|
35
|
+
# HttpLogger.ignore = [/localhost:8983\/solr/]
|
36
|
+
# HttpLogger.colorize = false
|
28
37
|
|
29
38
|
$in_travis = !ENV['TRAVIS'].nil? && ENV['TRAVIS'] == 'true'
|
30
39
|
|
@@ -63,6 +72,9 @@ end
|
|
63
72
|
|
64
73
|
Resque.inline = Rails.env.test?
|
65
74
|
|
75
|
+
FactoryGirl.definition_file_paths = [File.expand_path("../factories", __FILE__)]
|
76
|
+
FactoryGirl.find_definitions
|
77
|
+
|
66
78
|
module EngineRoutes
|
67
79
|
def self.included(base)
|
68
80
|
base.routes { Sufia::Engine.routes }
|
@@ -72,6 +84,7 @@ module EngineRoutes
|
|
72
84
|
end
|
73
85
|
end
|
74
86
|
|
87
|
+
require 'active_fedora/cleaner'
|
75
88
|
RSpec.configure do |config|
|
76
89
|
config.expect_with :rspec do |c|
|
77
90
|
c.syntax = :expect
|
@@ -82,13 +95,19 @@ RSpec.configure do |config|
|
|
82
95
|
|
83
96
|
config.use_transactional_fixtures = false
|
84
97
|
|
85
|
-
config.before :each do
|
86
|
-
|
87
|
-
|
88
|
-
|
98
|
+
config.before :each do |example|
|
99
|
+
unless (example.metadata[:type] == :view || example.metadata[:no_clean])
|
100
|
+
ActiveFedora::Cleaner.clean!
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
config.before :each do |example|
|
105
|
+
if example.metadata[:type] == :feature && Capybara.current_driver != :rack_test
|
89
106
|
DatabaseCleaner.strategy = :truncation
|
107
|
+
else
|
108
|
+
DatabaseCleaner.strategy = :transaction
|
109
|
+
DatabaseCleaner.start
|
90
110
|
end
|
91
|
-
DatabaseCleaner.start
|
92
111
|
end
|
93
112
|
|
94
113
|
config.after do
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# spec/support/fixture_helpers.rb
|
2
2
|
module FixtureHelpers
|
3
|
-
def
|
3
|
+
def create_file_fixtures(depositor="archivist1@example.com")
|
4
4
|
handles = [:public_pdf, :public_mp3, :public_wav]
|
5
|
-
|
6
|
-
handles.each {|handle| fixtures << FactoryGirl.create(handle) }
|
7
|
-
return fixtures
|
5
|
+
handles.map {|handle| FactoryGirl.create(handle, depositor: depositor) }
|
8
6
|
end
|
9
7
|
end
|
10
8
|
|
@@ -3,10 +3,6 @@ require 'rails/generators'
|
|
3
3
|
class TestAppGenerator < Rails::Generators::Base
|
4
4
|
source_root "./spec/test_app_templates"
|
5
5
|
|
6
|
-
# if you need to generate any additional configuration
|
7
|
-
# into the test app, this generator will be run immediately
|
8
|
-
# after setting up the application
|
9
|
-
|
10
6
|
def install_engine
|
11
7
|
generate 'sufia:install', '-f'
|
12
8
|
end
|
@@ -5,15 +5,14 @@ describe 'batch/edit.html.erb', :type => :view do
|
|
5
5
|
stub_model(Batch, id: '123')
|
6
6
|
}
|
7
7
|
|
8
|
+
let(:content) { double('content', versions: [], mimeType: 'application/pdf') }
|
8
9
|
let(:generic_file) {
|
9
|
-
|
10
|
-
stub_model(GenericFile, noid: '123',
|
11
|
-
depositor: 'bob',
|
12
|
-
content: content)
|
10
|
+
stub_model(GenericFile, id: '321', noid: '321', depositor: 'bob', rights: [''])
|
13
11
|
}
|
14
12
|
|
15
13
|
|
16
14
|
before do
|
15
|
+
allow(generic_file).to receive(:content).and_return(content)
|
17
16
|
allow(controller).to receive(:current_user).and_return(stub_model(User))
|
18
17
|
controller.request.path_parameters[:id] = "123"
|
19
18
|
assign :batch, batch
|
@@ -32,9 +31,20 @@ describe 'batch/edit.html.erb', :type => :view do
|
|
32
31
|
expect(@page).to have_selector("a#generic_file_share_with_help", count: 1)
|
33
32
|
end
|
34
33
|
|
35
|
-
|
36
|
-
|
34
|
+
context "rights" do
|
35
|
+
it "should have a modal" do
|
36
|
+
expect(@page).to have_selector("div#rightsModal .modal-dialog .modal-content")
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should allow setting many rights" do
|
40
|
+
expect(@page).to have_selector('select#generic_file_rights[name="generic_file[rights][]"]')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should not have an empty rights element" do
|
44
|
+
@page.all('select#generic_file_rights option').each do |elem|
|
45
|
+
expect(elem.value).to_not be_empty
|
46
|
+
end
|
47
|
+
end
|
37
48
|
end
|
38
|
-
|
39
49
|
end
|
40
50
|
|
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'catalog/index.html.erb'
|
3
|
+
describe 'catalog/index.html.erb' do
|
4
|
+
|
5
|
+
let(:collection) { Collection.new(title: 'collection1', id: 'abc123') }
|
6
|
+
let(:doc) { SolrDocument.new(collection.to_solr) }
|
7
|
+
|
4
8
|
before do
|
5
9
|
allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
|
6
10
|
stub_template 'catalog/_search_sidebar.html.erb' => ''
|
@@ -19,16 +23,14 @@ describe 'catalog/index.html.erb', :type => :view do
|
|
19
23
|
allow(resp).to receive(:limit_value).and_return(10)
|
20
24
|
allow(resp).to receive(:empty?).and_return(false)
|
21
25
|
|
22
|
-
|
23
|
-
|
26
|
+
# This stubs out the SolrDocument#to_model
|
27
|
+
allow(ActiveFedora::Base).to receive(:load_instance_from_solr).with('abc123').and_return(collection)
|
24
28
|
assign(:document_list, [doc])
|
25
29
|
end
|
26
30
|
|
27
|
-
|
28
|
-
|
29
31
|
it 'appears on page without error' do
|
30
32
|
render
|
31
|
-
expect(rendered).to include(
|
33
|
+
expect(rendered).to include(collection.title)
|
32
34
|
page = Capybara::Node::Simple.new(rendered)
|
33
35
|
expect(page).to have_selector("span.glyphicon.glyphicon-th.collection-icon-search")
|
34
36
|
end
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'collections/_form.html.erb', :type => :view do
|
4
4
|
describe 'when the collection edit form is rendered' do
|
5
|
-
let(:collection) { Collection.new(
|
6
|
-
creator: 'the creator'
|
5
|
+
let(:collection) { Collection.new(title: 'the title', description: 'the description',
|
6
|
+
creator: ['the creator'])}
|
7
7
|
|
8
8
|
before do
|
9
9
|
controller.request.path_parameters[:id] = 'j12345'
|
@@ -14,7 +14,9 @@ describe 'collections/_form.html.erb', :type => :view do
|
|
14
14
|
it "should draw the metadata fields for collection" do
|
15
15
|
render
|
16
16
|
expect(rendered).to have_selector("input#collection_title", count: 1)
|
17
|
+
expect(rendered).to_not have_selector("div#additional_title_clone button.adder")
|
17
18
|
expect(rendered).to have_selector("input#collection_creator", count: 1)
|
19
|
+
expect(rendered).to have_selector("div#additional_creator_clone button.adder")
|
18
20
|
expect(rendered).to have_selector("textarea#collection_description", count: 1)
|
19
21
|
expect(rendered).to have_selector("input#collection_contributor", count: 1)
|
20
22
|
expect(rendered).to have_selector("input#collection_tag", count: 1)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'collections/_show_document_list.html.erb', :type => :view do
|
4
|
+
|
5
|
+
let(:user) { FactoryGirl.find_or_create(:jill) }
|
6
|
+
let(:collection) { mock_model(Collection) }
|
7
|
+
|
8
|
+
let(:file) do
|
9
|
+
gf = GenericFile.new(creator: ["ggm"], title: ['One Hundred Years of Solitude'])
|
10
|
+
gf.apply_depositor_metadata(user)
|
11
|
+
gf.save
|
12
|
+
gf
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:documents) {[file]}
|
16
|
+
|
17
|
+
context 'when not logged in' do
|
18
|
+
before do
|
19
|
+
allow(view).to receive(:blacklight_config).and_return(Blacklight::Configuration.new)
|
20
|
+
allow(view).to receive(:current_user).and_return(nil)
|
21
|
+
allow(file).to receive(:title_or_label).and_return("One Hundred Years of Solitude")
|
22
|
+
allow(file).to receive(:edit_people).and_return([])
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should render collection" do
|
26
|
+
render(partial: 'collections/show_document_list.html.erb', locals: {documents: documents})
|
27
|
+
expect(rendered).to have_content 'One Hundred Years of Solitude'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -64,8 +64,8 @@ describe "dashboard/index.html.erb", :type => :view do
|
|
64
64
|
expect(@sidebar).to include '<span class="badge">2</span>'
|
65
65
|
expect(@sidebar).to include '<span class="badge">15</span>'
|
66
66
|
expect(@sidebar).to include '<span class="badge">3</span>'
|
67
|
-
expect(@sidebar).to include '
|
68
|
-
expect(@sidebar).to include '
|
67
|
+
expect(@sidebar).to include '1 View'
|
68
|
+
expect(@sidebar).to include '3 Downloads'
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should show the statistics before the profile" do
|
@@ -1,23 +1,37 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'generic_files/edit.html.erb', :
|
3
|
+
describe 'generic_files/edit.html.erb', :no_clean do
|
4
4
|
describe 'when the file has two or more resource types' do
|
5
|
+
let(:resource_version) do
|
6
|
+
ActiveFedora::VersionsGraph::ResourceVersion.new.tap do |v|
|
7
|
+
v.uri = 'http://example.com/version1'
|
8
|
+
v.label = 'version1'
|
9
|
+
v.created = '2014-12-09T02:03:18.296Z'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
let(:version_list) { Sufia::VersionListPresenter.new([resource_version]) }
|
13
|
+
let(:versions_graph) { double(all: [version1]) }
|
14
|
+
let(:content) { double('content', mimeType: 'application/pdf') }
|
15
|
+
|
5
16
|
let(:generic_file) {
|
6
|
-
|
7
|
-
stub_model(GenericFile, noid: '123',
|
17
|
+
stub_model(GenericFile, id: '123', noid: '123',
|
8
18
|
depositor: 'bob',
|
9
|
-
resource_type: ['Book', 'Dataset']
|
10
|
-
content: content)
|
19
|
+
resource_type: ['Book', 'Dataset'])
|
11
20
|
}
|
12
21
|
|
13
22
|
before do
|
23
|
+
allow(generic_file).to receive(:content).and_return(content)
|
14
24
|
allow(controller).to receive(:current_user).and_return(stub_model(User))
|
15
25
|
assign(:generic_file, generic_file)
|
26
|
+
assign(:version_list, version_list)
|
16
27
|
end
|
17
28
|
|
18
|
-
|
29
|
+
let(:page) do
|
19
30
|
render
|
20
31
|
page = Capybara::Node::Simple.new(rendered)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should only draw one resource_type multiselect" do
|
21
35
|
expect(page).to have_selector("select#generic_file_resource_type", count: 1)
|
22
36
|
end
|
23
37
|
end
|
@@ -12,7 +12,7 @@ describe 'generic_files/show.html.erb', :type => :view do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
let(:generic_file) do
|
15
|
-
stub_model(GenericFile, noid: '123',
|
15
|
+
stub_model(GenericFile, id: '123', noid: '123',
|
16
16
|
depositor: depositor.user_key,
|
17
17
|
audit_stat: 1,
|
18
18
|
title: ['My Title'],
|
@@ -25,11 +25,11 @@ describe 'generic_files/show.html.erb', :type => :view do
|
|
25
25
|
date_created: ['1984-01-02'],
|
26
26
|
language: ['Quechua'],
|
27
27
|
publisher: ['Random Publishing, Inc.'],
|
28
|
-
subject: ['Biology', 'Physiology', 'Ethnography']
|
29
|
-
content: content)
|
28
|
+
subject: ['Biology', 'Physiology', 'Ethnography'])
|
30
29
|
end
|
31
30
|
|
32
31
|
before do
|
32
|
+
allow(generic_file).to receive(:content).and_return(content)
|
33
33
|
allow(controller).to receive(:current_user).and_return(depositor)
|
34
34
|
allow_any_instance_of(Ability).to receive(:can?).and_return(true)
|
35
35
|
allow(User).to receive(:find_by_user_key).with(generic_file.depositor).and_return(depositor)
|
@@ -31,7 +31,7 @@ describe 'users/show.html.erb', :type => :view do
|
|
31
31
|
|
32
32
|
context "with trophy" do
|
33
33
|
|
34
|
-
let(:generic_file) { GenericFile.new(title: ["Fake object"],
|
34
|
+
let(:generic_file) { GenericFile.new(title: ["Fake object"], id: "abc123") }
|
35
35
|
before do
|
36
36
|
allow(view).to receive(:search_session).and_return({})
|
37
37
|
allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
|
@@ -20,7 +20,7 @@ module Sufia::GenericFile
|
|
20
20
|
generic_file.creator = [user.name]
|
21
21
|
|
22
22
|
if batch_id
|
23
|
-
generic_file.batch_id =
|
23
|
+
generic_file.batch_id = batch_id
|
24
24
|
else
|
25
25
|
ActiveFedora::Base.logger.warn "unable to find batch to attach to"
|
26
26
|
end
|
@@ -28,8 +28,7 @@ module Sufia::GenericFile
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def create_content(file, file_name, dsid)
|
31
|
-
|
32
|
-
generic_file.add_file(file, dsid, fname)
|
31
|
+
generic_file.add_file(file, dsid, file_name.truncate(255))
|
33
32
|
save_characterize_and_record_committer do
|
34
33
|
if Sufia.config.respond_to?(:after_create_content)
|
35
34
|
Sufia.config.after_create_content.call(generic_file, user)
|
@@ -37,9 +36,9 @@ module Sufia::GenericFile
|
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
|
-
def revert_content(revision_id
|
41
|
-
|
42
|
-
generic_file.
|
39
|
+
def revert_content(revision_id)
|
40
|
+
generic_file.content.restore_version(revision_id)
|
41
|
+
generic_file.content.create_version
|
43
42
|
save_characterize_and_record_committer do
|
44
43
|
if Sufia.config.respond_to?(:after_revert_content)
|
45
44
|
Sufia.config.after_revert_content.call(generic_file, user, revision_id)
|
@@ -69,11 +68,10 @@ module Sufia::GenericFile
|
|
69
68
|
end
|
70
69
|
|
71
70
|
def destroy
|
72
|
-
pid = generic_file.pid #Work around for https://github.com/projecthydra/active_fedora/issues/422
|
73
71
|
generic_file.destroy
|
74
|
-
FeaturedWork.where(generic_file_id:
|
72
|
+
FeaturedWork.where(generic_file_id: generic_file.id).destroy_all
|
75
73
|
if Sufia.config.respond_to?(:after_destroy)
|
76
|
-
Sufia.config.after_destroy.call(
|
74
|
+
Sufia.config.after_destroy.call(generic_file.id, user)
|
77
75
|
end
|
78
76
|
end
|
79
77
|
|
@@ -103,7 +101,7 @@ module Sufia::GenericFile
|
|
103
101
|
end
|
104
102
|
|
105
103
|
def push_characterize_job
|
106
|
-
Sufia.queue.push(CharacterizeJob.new(@generic_file.
|
104
|
+
Sufia.queue.push(CharacterizeJob.new(@generic_file.id))
|
107
105
|
end
|
108
106
|
|
109
107
|
class << self
|
@@ -10,10 +10,9 @@ class ActiveFedoraPidBasedJob
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def object
|
13
|
-
@object ||= ActiveFedora::Base.find(pid
|
14
|
-
f.reload_on_save = true
|
15
|
-
end
|
13
|
+
@object ||= ActiveFedora::Base.find(pid)
|
16
14
|
end
|
15
|
+
|
17
16
|
alias_method :generic_file, :object
|
18
17
|
alias_method :generic_file_id, :pid
|
19
18
|
|
@@ -6,44 +6,58 @@ class AuditJob < ActiveFedoraPidBasedJob
|
|
6
6
|
PASS = 'Passing Audit Run'
|
7
7
|
FAIL = 'Failing Audit Run'
|
8
8
|
|
9
|
-
attr_accessor :
|
9
|
+
attr_accessor :uri, :pid, :path
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
# URI of the resource to audit.
|
12
|
+
# This URI could include the actual resource (e.g. content) and the version to audit:
|
13
|
+
# http://localhost:8983/fedora/rest/test/a/b/c/abcxyz/content/fcr:versions/version1
|
14
|
+
# but it could also just be:
|
15
|
+
# http://localhost:8983/fedora/rest/test/a/b/c/abcxyz/content
|
16
|
+
def initialize(id, path, uri)
|
17
|
+
super(uri)
|
18
|
+
self.pid = id
|
19
|
+
self.path = path
|
20
|
+
self.uri = uri
|
15
21
|
end
|
16
22
|
|
17
23
|
def run
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
24
|
+
fixity_ok = false
|
25
|
+
log = run_audit
|
26
|
+
fixity_ok = (log.pass == 1)
|
27
|
+
unless fixity_ok
|
28
|
+
# send the user a message about the failing audit
|
29
|
+
login = generic_file.depositor
|
30
|
+
user = User.find_by_user_key(login)
|
31
|
+
logger.warn "User '#{login}' not found" unless user
|
32
|
+
job_user = User.audituser()
|
33
|
+
file_title = generic_file.title.first
|
34
|
+
message = "The audit run at #{log.created_at} for #{file_title} (#{uri}) failed."
|
35
|
+
subject = FAIL
|
36
|
+
job_user.send_message(user, message, subject)
|
37
|
+
end
|
38
|
+
fixity_ok
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
|
43
|
+
def run_audit
|
44
|
+
begin
|
45
|
+
fixity_ok = ActiveFedora::FixityService.new(uri).check
|
46
|
+
rescue Ldp::NotFound
|
47
|
+
error_msg = "resource not found"
|
48
|
+
end
|
49
|
+
|
50
|
+
if fixity_ok
|
51
|
+
passing = 1
|
52
|
+
ChecksumAuditLog.prune_history(pid, path)
|
37
53
|
else
|
38
|
-
|
54
|
+
logger.warn "***AUDIT*** Audit failed for #{uri} #{error_msg}"
|
55
|
+
passing = 0
|
39
56
|
end
|
40
|
-
|
41
|
-
ActiveFedora::Base.logger.warn "No generic file for data stream audit!!!!! pid: #{pid} dsid: #{datastream_id}"
|
57
|
+
ChecksumAuditLog.create!(pass: passing, pid: pid, version: uri, dsid: path)
|
42
58
|
end
|
43
|
-
end
|
44
59
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
60
|
+
def logger
|
61
|
+
ActiveFedora::Base.logger
|
62
|
+
end
|
49
63
|
end
|