curation_concerns 1.3.3 → 1.4.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 +3 -1
- data/Gemfile +5 -0
- data/app/actors/curation_concerns/actors/actor_stack.rb +20 -4
- data/app/actors/curation_concerns/actors/base_actor.rb +1 -1
- data/app/assets/javascripts/curation_concerns/boot.es6 +6 -0
- data/app/assets/javascripts/curation_concerns/curation_concerns.js +5 -5
- data/app/assets/javascripts/curation_concerns/file_manager.es6 +41 -0
- data/app/assets/javascripts/curation_concerns/file_manager/member.es6 +2 -8
- data/app/assets/javascripts/curation_concerns/file_manager/save_manager.es6 +1 -3
- data/app/assets/javascripts/curation_concerns/file_manager/sorting.es6 +69 -75
- data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +1 -1
- data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +3 -3
- data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +5 -7
- data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +6 -5
- data/app/models/concerns/curation_concerns/solr_document_behavior.rb +23 -4
- data/app/services/curation_concerns/time_service.rb +2 -1
- data/app/views/curation_concerns/file_sets/show.json.jbuilder +1 -1
- data/curation_concerns.gemspec +2 -1
- data/lib/curation_concerns/engine.rb +1 -0
- data/lib/curation_concerns/version.rb +1 -1
- data/solr/config/solrconfig.xml +26 -4
- data/spec/actors/curation_concerns/apply_order_actor_spec.rb +6 -4
- data/spec/actors/curation_concerns/file_set_actor_spec.rb +3 -3
- data/spec/actors/curation_concerns/work_actor_spec.rb +8 -7
- data/spec/controllers/catalog_controller_spec.rb +1 -1
- data/spec/controllers/curation_concerns/collections_controller_spec.rb +1 -1
- data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +29 -5
- data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +20 -4
- data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +3 -2
- data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +6 -1
- data/spec/factories/generic_works.rb +2 -2
- data/spec/features/create_work_spec.rb +1 -1
- data/spec/features/update_file_spec.rb +7 -0
- data/spec/features/work_generator_spec.rb +1 -1
- data/spec/models/collection_spec.rb +3 -3
- data/spec/models/curation_concerns/work_behavior_spec.rb +2 -1
- data/spec/models/file_set_spec.rb +2 -1
- data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +0 -1
- data/spec/services/file_set_audit_service_spec.rb +14 -0
- data/spec/services/graph_exporter_spec.rb +1 -1
- data/spec/spec_helper.rb +13 -0
- data/spec/support/helpers/controller_level_helpers.rb +27 -0
- data/spec/support/views/test_view_helpers.rb +10 -0
- data/spec/test_app_templates/Gemfile.extra +2 -0
- data/spec/views/catalog/index.html.erb_spec.rb +0 -3
- data/spec/views/curation_concerns/base/_form_rights_spec.rb +9 -7
- data/spec/views/curation_concerns/file_sets/show.json.jbuilder_spec.rb +6 -6
- metadata +24 -11
- data/app/assets/javascripts/curation_concerns/file_manager/affix.es6 +0 -13
@@ -5,6 +5,13 @@ feature 'Editing attached files' do
|
|
5
5
|
let!(:parent) { create(:work_with_one_file, user: user) }
|
6
6
|
let!(:file_set) { parent.file_sets.first }
|
7
7
|
|
8
|
+
around do |example|
|
9
|
+
original_adapter = ActiveJob::Base.queue_adapter
|
10
|
+
ActiveJob::Base.queue_adapter = :inline
|
11
|
+
example.run
|
12
|
+
ActiveJob::Base.queue_adapter = original_adapter
|
13
|
+
end
|
14
|
+
|
8
15
|
before do
|
9
16
|
sign_in user
|
10
17
|
|
@@ -24,7 +24,7 @@ feature 'Creating a new Work' do
|
|
24
24
|
sign_in user
|
25
25
|
|
26
26
|
# stub out characterization. Travis doesn't have fits installed, and it's not relevant to the test.
|
27
|
-
|
27
|
+
allow(CharacterizeJob).to receive(:perform_later)
|
28
28
|
redlock_client_stub
|
29
29
|
end
|
30
30
|
|
@@ -65,7 +65,7 @@ describe Collection, type: :model do
|
|
65
65
|
subject { described_class.create!(title: ['Some title'], members: [gf1, gf2]) { |c| c.apply_depositor_metadata(user) } }
|
66
66
|
|
67
67
|
it "has many files" do
|
68
|
-
expect(subject.reload.members).to
|
68
|
+
expect(subject.reload.members).to match_array [gf1, gf2]
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -78,14 +78,14 @@ describe Collection, type: :model do
|
|
78
78
|
subject.reload
|
79
79
|
subject.members << gf2
|
80
80
|
subject.save
|
81
|
-
expect(subject.reload.members).to
|
81
|
+
expect(subject.reload.members).to match_array [gf1, gf2]
|
82
82
|
end
|
83
83
|
|
84
84
|
it "allows multiple files to be added" do
|
85
85
|
subject.reload
|
86
86
|
subject.add_members [gf2.id, gf3.id]
|
87
87
|
subject.save
|
88
|
-
expect(subject.reload.members).to
|
88
|
+
expect(subject.reload.members).to match_array [gf1, gf2, gf3]
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -19,7 +19,8 @@ describe CurationConcerns::WorkBehavior do
|
|
19
19
|
end
|
20
20
|
describe '#to_s' do
|
21
21
|
it 'uses the provided titles' do
|
22
|
-
|
22
|
+
# The title property would return the terms in random order, so stub the behavior:
|
23
|
+
allow(subject).to receive(:title).and_return(%w(Hello World))
|
23
24
|
expect(subject.to_s).to eq('Hello | World')
|
24
25
|
end
|
25
26
|
end
|
@@ -442,7 +442,8 @@ describe FileSet do
|
|
442
442
|
|
443
443
|
describe '#to_s' do
|
444
444
|
it 'uses the provided titles' do
|
445
|
-
|
445
|
+
# The title property would return the terms in random order, so stub the behavior:
|
446
|
+
allow(subject).to receive(:title).and_return(%w(Hello World))
|
446
447
|
expect(subject.to_s).to eq('Hello | World')
|
447
448
|
end
|
448
449
|
|
@@ -77,7 +77,6 @@ describe CurationConcerns::WorkShowPresenter do
|
|
77
77
|
let(:attributes) { obj.to_solr }
|
78
78
|
|
79
79
|
it "displays them in order" do
|
80
|
-
expect(obj.ordered_member_ids).not_to eq obj.member_ids
|
81
80
|
expect(presenter.file_set_presenters.map(&:id)).to eq obj.ordered_member_ids
|
82
81
|
end
|
83
82
|
|
@@ -42,6 +42,13 @@ describe CurationConcerns::FileSetAuditService do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
context 'when no audit is pasing' do
|
45
|
+
around do |example|
|
46
|
+
original_adapter = ActiveJob::Base.queue_adapter
|
47
|
+
ActiveJob::Base.queue_adapter = :inline
|
48
|
+
example.run
|
49
|
+
ActiveJob::Base.queue_adapter = original_adapter
|
50
|
+
end
|
51
|
+
|
45
52
|
before do
|
46
53
|
CurationConcerns::VersioningService.create(f.original_file)
|
47
54
|
ChecksumAuditLog.create!(pass: 1, file_set_id: f.id, version: f.original_file.versions.first.uri, file_id: 'original_file')
|
@@ -54,6 +61,13 @@ describe CurationConcerns::FileSetAuditService do
|
|
54
61
|
end
|
55
62
|
|
56
63
|
describe '#human_readable_audit_status' do
|
64
|
+
around do |example|
|
65
|
+
original_adapter = ActiveJob::Base.queue_adapter
|
66
|
+
ActiveJob::Base.queue_adapter = :inline
|
67
|
+
example.run
|
68
|
+
ActiveJob::Base.queue_adapter = original_adapter
|
69
|
+
end
|
70
|
+
|
57
71
|
before do
|
58
72
|
CurationConcerns::VersioningService.create(f.original_file)
|
59
73
|
ChecksumAuditLog.create!(pass: 1, file_set_id: f.id, version: f.original_file.versions.first.uri, file_id: 'original_file')
|
@@ -10,7 +10,7 @@ RSpec.describe CurationConcerns::GraphExporter do
|
|
10
10
|
subject { service.fetch }
|
11
11
|
let(:ttl) { subject.dump(:ttl) }
|
12
12
|
it "transforms suburis to hashcodes" do
|
13
|
-
expect(ttl).to match %r{<http://localhost/concern/generic_works/#{work.id}> a <http://projecthydra\.org/works/models#Work
|
13
|
+
expect(ttl).to match %r{<http://localhost/concern/generic_works/#{work.id}> a ([^;]*)<http://projecthydra\.org/works/models#Work>}
|
14
14
|
expect(ttl).to match %r{<http://purl\.org/dc/terms/title> "Test title";}
|
15
15
|
expect(ttl).to match %r{<http://www\.w3\.org/ns/auth/acl#accessControl> <http://localhost/catalog/}
|
16
16
|
|
data/spec/spec_helper.rb
CHANGED
@@ -81,9 +81,22 @@ RSpec.configure do |config|
|
|
81
81
|
config.include Devise::TestHelpers, type: :controller
|
82
82
|
config.include Devise::TestHelpers, type: :view
|
83
83
|
end
|
84
|
+
|
85
|
+
config.include TestViewHelpers, type: :view
|
86
|
+
|
84
87
|
config.include Warden::Test::Helpers, type: :feature
|
85
88
|
config.after(:each, type: :feature) { Warden.test_reset! }
|
89
|
+
|
90
|
+
config.include(ControllerLevelHelpers, type: :helper)
|
91
|
+
config.before(:each, type: :helper) { initialize_controller_helpers(helper) }
|
92
|
+
|
93
|
+
config.include(ControllerLevelHelpers, type: :view)
|
94
|
+
config.before(:each, type: :view) { initialize_controller_helpers(view) }
|
95
|
+
|
86
96
|
config.include Controllers::EngineHelpers, type: :controller
|
97
|
+
config.include Controllers::EngineHelpers, type: :helper
|
98
|
+
config.include ::Rails.application.routes.url_helpers
|
99
|
+
|
87
100
|
config.include Rails.application.routes.url_helpers, type: :routing
|
88
101
|
config.include Capybara::DSL
|
89
102
|
config.include InputSupport, type: :input
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module ControllerLevelHelpers
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
# def search_state
|
4
|
+
# @search_state ||= Blacklight::SearchState.new(params, blacklight_config)
|
5
|
+
# end
|
6
|
+
|
7
|
+
# def blacklight_configuration_context
|
8
|
+
# @blacklight_configuration_context ||= Blacklight::Configuration::Context.new(controller)
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
included do
|
12
|
+
# fix for anonymous controllers (https://github.com/rspec/rspec-rails/issues/1321#issuecomment-239157093)
|
13
|
+
before { allow(controller).to receive(:_routes).and_return(Rails.application.routes) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize_controller_helpers(helper)
|
17
|
+
helper.extend ControllerLevelHelpers
|
18
|
+
initialize_routing_helpers(helper)
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize_routing_helpers(helper)
|
22
|
+
return unless Rails::VERSION::MAJOR >= 5
|
23
|
+
|
24
|
+
helper.class.include ::Rails.application.routes.url_helpers
|
25
|
+
helper.class.include ::Rails.application.routes.mounted_helpers if ::Rails.application.routes.respond_to?(:mounted_helpers)
|
26
|
+
end
|
27
|
+
end
|
@@ -34,9 +34,6 @@ describe 'catalog/index.html.erb' do
|
|
34
34
|
allow(resp).to receive(:limit_value).and_return(10)
|
35
35
|
allow(resp).to receive(:empty?).and_return(false)
|
36
36
|
|
37
|
-
# This stubs out the SolrDocument#to_model
|
38
|
-
allow(ActiveFedora::Base).to receive(:load_instance_from_solr).with('abc123', doc).and_return(collection)
|
39
|
-
|
40
37
|
assign(:document_list, [doc])
|
41
38
|
end
|
42
39
|
|
@@ -23,14 +23,16 @@ describe 'curation_concerns/base/_form_rights.html.erb' do
|
|
23
23
|
render inline: form_template, locals: { curation_concern: curation_concern }
|
24
24
|
end
|
25
25
|
|
26
|
-
it 'will only include
|
27
|
-
|
28
|
-
expect(rendered).
|
29
|
-
|
26
|
+
it 'will only include inactive values if the current value is inactive' do
|
27
|
+
# only one of the select boxes will have the inactive rights statement
|
28
|
+
expect(rendered).to have_xpath('//option[@value="demo_id_04"]', count: 1)
|
29
|
+
# and it will be the selected option.
|
30
|
+
expect(rendered).to have_xpath('//option[@value="demo_id_04" and @selected]', count: 1)
|
30
31
|
|
31
|
-
|
32
|
-
expect(rendered).to have_xpath('//
|
33
|
-
|
32
|
+
# the active values will be available in each select box
|
33
|
+
expect(rendered).to have_xpath('//option[@value="demo_id_01"]', count: 3)
|
34
|
+
# and one will be selected
|
35
|
+
expect(rendered).to have_xpath('//option[@value="demo_id_01" and @selected]', count: 1)
|
34
36
|
end
|
35
37
|
|
36
38
|
it 'only offers active values to add to a work' do
|
@@ -2,9 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'curation_concerns/file_sets/show.json.jbuilder' do
|
4
4
|
let(:file_set) { create(:file_set) }
|
5
|
+
let(:solr_doc) { SolrDocument.new(file_set.to_solr) }
|
6
|
+
let(:presenter) { CurationConcerns::FileSetPresenter.new(solr_doc, nil) }
|
5
7
|
|
6
8
|
before do
|
7
|
-
assign(:
|
9
|
+
assign(:presenter, presenter)
|
8
10
|
render
|
9
11
|
end
|
10
12
|
|
@@ -12,10 +14,8 @@ describe 'curation_concerns/file_sets/show.json.jbuilder' do
|
|
12
14
|
json = JSON.parse(rendered)
|
13
15
|
expect(json['id']).to eq file_set.id
|
14
16
|
expect(json['title']).to eq file_set.title
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
expect(json).to have_key(field_symbol.to_s)
|
19
|
-
end
|
17
|
+
expect(json).to have_key('label')
|
18
|
+
expect(json).to have_key('description')
|
19
|
+
expect(json).to have_key('creator')
|
20
20
|
end
|
21
21
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: curation_concerns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-08-
|
13
|
+
date: 2016-08-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: hydra-head
|
@@ -38,20 +38,14 @@ dependencies:
|
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
42
|
-
- - "<"
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: 11.a
|
41
|
+
version: 11.0.0.rc6
|
45
42
|
type: :runtime
|
46
43
|
prerelease: false
|
47
44
|
version_requirements: !ruby/object:Gem::Requirement
|
48
45
|
requirements:
|
49
46
|
- - ">="
|
50
47
|
- !ruby/object:Gem::Version
|
51
|
-
version:
|
52
|
-
- - "<"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 11.a
|
48
|
+
version: 11.0.0.rc6
|
55
49
|
- !ruby/object:Gem::Dependency
|
56
50
|
name: blacklight
|
57
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -496,6 +490,20 @@ dependencies:
|
|
496
490
|
- - ">="
|
497
491
|
- !ruby/object:Gem::Version
|
498
492
|
version: '0'
|
493
|
+
- !ruby/object:Gem::Dependency
|
494
|
+
name: equivalent-xml
|
495
|
+
requirement: !ruby/object:Gem::Requirement
|
496
|
+
requirements:
|
497
|
+
- - ">="
|
498
|
+
- !ruby/object:Gem::Version
|
499
|
+
version: '0'
|
500
|
+
type: :development
|
501
|
+
prerelease: false
|
502
|
+
version_requirements: !ruby/object:Gem::Requirement
|
503
|
+
requirements:
|
504
|
+
- - ">="
|
505
|
+
- !ruby/object:Gem::Version
|
506
|
+
version: '0'
|
499
507
|
- !ruby/object:Gem::Dependency
|
500
508
|
name: rspec-activemodel-mocks
|
501
509
|
requirement: !ruby/object:Gem::Requirement
|
@@ -681,12 +689,13 @@ files:
|
|
681
689
|
- app/assets/javascripts/curation_concerns/.gitkeep
|
682
690
|
- app/assets/javascripts/curation_concerns/application.js
|
683
691
|
- app/assets/javascripts/curation_concerns/batch_select.js
|
692
|
+
- app/assets/javascripts/curation_concerns/boot.es6
|
684
693
|
- app/assets/javascripts/curation_concerns/browse_everything_implement.js
|
685
694
|
- app/assets/javascripts/curation_concerns/collections.js
|
686
695
|
- app/assets/javascripts/curation_concerns/curation_concerns.js
|
687
696
|
- app/assets/javascripts/curation_concerns/embargoes.js
|
688
697
|
- app/assets/javascripts/curation_concerns/facet_mine.js
|
689
|
-
- app/assets/javascripts/curation_concerns/file_manager
|
698
|
+
- app/assets/javascripts/curation_concerns/file_manager.es6
|
690
699
|
- app/assets/javascripts/curation_concerns/file_manager/member.es6
|
691
700
|
- app/assets/javascripts/curation_concerns/file_manager/save_manager.es6
|
692
701
|
- app/assets/javascripts/curation_concerns/file_manager/sorting.es6
|
@@ -1240,12 +1249,14 @@ files:
|
|
1240
1249
|
- spec/support/features.rb
|
1241
1250
|
- spec/support/features/fixture_file_upload.rb
|
1242
1251
|
- spec/support/features/session_helpers.rb
|
1252
|
+
- spec/support/helpers/controller_level_helpers.rb
|
1243
1253
|
- spec/support/input_support.rb
|
1244
1254
|
- spec/support/matchers/api_responses.rb
|
1245
1255
|
- spec/support/rake_support.rb
|
1246
1256
|
- spec/support/shared/shared_examples_has_dc_metadata.rb
|
1247
1257
|
- spec/support/shared/shared_examples_is_embargoable.rb
|
1248
1258
|
- spec/support/shared/shared_examples_with_access_rights.rb
|
1259
|
+
- spec/support/views/test_view_helpers.rb
|
1249
1260
|
- spec/test_app_templates/Gemfile.extra
|
1250
1261
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
1251
1262
|
- spec/views/catalog/_action_menu_partials/_default.html.erb_spec.rb
|
@@ -1450,12 +1461,14 @@ test_files:
|
|
1450
1461
|
- spec/support/features.rb
|
1451
1462
|
- spec/support/features/fixture_file_upload.rb
|
1452
1463
|
- spec/support/features/session_helpers.rb
|
1464
|
+
- spec/support/helpers/controller_level_helpers.rb
|
1453
1465
|
- spec/support/input_support.rb
|
1454
1466
|
- spec/support/matchers/api_responses.rb
|
1455
1467
|
- spec/support/rake_support.rb
|
1456
1468
|
- spec/support/shared/shared_examples_has_dc_metadata.rb
|
1457
1469
|
- spec/support/shared/shared_examples_is_embargoable.rb
|
1458
1470
|
- spec/support/shared/shared_examples_with_access_rights.rb
|
1471
|
+
- spec/support/views/test_view_helpers.rb
|
1459
1472
|
- spec/test_app_templates/Gemfile.extra
|
1460
1473
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
1461
1474
|
- spec/views/catalog/_action_menu_partials/_default.html.erb_spec.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Blacklight.onLoad(function() {
|
2
|
-
let tools = $("#file-manager-tools")
|
3
|
-
if(tools.length > 0) {
|
4
|
-
tools.affix({
|
5
|
-
offset: {
|
6
|
-
top: $("#file-manager-tools .actions").offset().top,
|
7
|
-
bottom: function() {
|
8
|
-
return $("#file-manager-extra-tools").outerHeight(true) + $("footer").outerHeight(true)
|
9
|
-
}
|
10
|
-
}
|
11
|
-
})
|
12
|
-
}
|
13
|
-
})
|