curation_concerns 1.3.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/Gemfile +5 -0
  4. data/app/actors/curation_concerns/actors/actor_stack.rb +20 -4
  5. data/app/actors/curation_concerns/actors/base_actor.rb +1 -1
  6. data/app/assets/javascripts/curation_concerns/boot.es6 +6 -0
  7. data/app/assets/javascripts/curation_concerns/curation_concerns.js +5 -5
  8. data/app/assets/javascripts/curation_concerns/file_manager.es6 +41 -0
  9. data/app/assets/javascripts/curation_concerns/file_manager/member.es6 +2 -8
  10. data/app/assets/javascripts/curation_concerns/file_manager/save_manager.es6 +1 -3
  11. data/app/assets/javascripts/curation_concerns/file_manager/sorting.es6 +69 -75
  12. data/app/controllers/concerns/curation_concerns/collections_controller_behavior.rb +1 -1
  13. data/app/controllers/concerns/curation_concerns/curation_concern_controller.rb +3 -3
  14. data/app/controllers/concerns/curation_concerns/file_sets_controller_behavior.rb +5 -7
  15. data/app/controllers/concerns/curation_concerns/single_use_links_controller_behavior.rb +6 -5
  16. data/app/models/concerns/curation_concerns/solr_document_behavior.rb +23 -4
  17. data/app/services/curation_concerns/time_service.rb +2 -1
  18. data/app/views/curation_concerns/file_sets/show.json.jbuilder +1 -1
  19. data/curation_concerns.gemspec +2 -1
  20. data/lib/curation_concerns/engine.rb +1 -0
  21. data/lib/curation_concerns/version.rb +1 -1
  22. data/solr/config/solrconfig.xml +26 -4
  23. data/spec/actors/curation_concerns/apply_order_actor_spec.rb +6 -4
  24. data/spec/actors/curation_concerns/file_set_actor_spec.rb +3 -3
  25. data/spec/actors/curation_concerns/work_actor_spec.rb +8 -7
  26. data/spec/controllers/catalog_controller_spec.rb +1 -1
  27. data/spec/controllers/curation_concerns/collections_controller_spec.rb +1 -1
  28. data/spec/controllers/curation_concerns/file_sets_controller_json_spec.rb +29 -5
  29. data/spec/controllers/curation_concerns/file_sets_controller_spec.rb +20 -4
  30. data/spec/controllers/curation_concerns/generic_works_controller_json_spec.rb +3 -2
  31. data/spec/controllers/curation_concerns/generic_works_controller_spec.rb +6 -1
  32. data/spec/factories/generic_works.rb +2 -2
  33. data/spec/features/create_work_spec.rb +1 -1
  34. data/spec/features/update_file_spec.rb +7 -0
  35. data/spec/features/work_generator_spec.rb +1 -1
  36. data/spec/models/collection_spec.rb +3 -3
  37. data/spec/models/curation_concerns/work_behavior_spec.rb +2 -1
  38. data/spec/models/file_set_spec.rb +2 -1
  39. data/spec/presenters/curation_concerns/work_show_presenter_spec.rb +0 -1
  40. data/spec/services/file_set_audit_service_spec.rb +14 -0
  41. data/spec/services/graph_exporter_spec.rb +1 -1
  42. data/spec/spec_helper.rb +13 -0
  43. data/spec/support/helpers/controller_level_helpers.rb +27 -0
  44. data/spec/support/views/test_view_helpers.rb +10 -0
  45. data/spec/test_app_templates/Gemfile.extra +2 -0
  46. data/spec/views/catalog/index.html.erb_spec.rb +0 -3
  47. data/spec/views/curation_concerns/base/_form_rights_spec.rb +9 -7
  48. data/spec/views/curation_concerns/file_sets/show.json.jbuilder_spec.rb +6 -6
  49. metadata +24 -11
  50. 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
- expect(CharacterizeJob).to receive(:perform_later)
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 eq [gf1, gf2]
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 eq [gf1, gf2]
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 eq [gf1, gf2, gf3]
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
- subject.title = %w(Hello World)
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
- subject.title = %w(Hello World)
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
 
@@ -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
@@ -0,0 +1,10 @@
1
+ module TestViewHelpers
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before do
6
+ view.send(:extend, CurationConcerns::MainAppHelpers)
7
+ view.send(:extend, CatalogHelper)
8
+ end
9
+ end
10
+ end
@@ -1,5 +1,7 @@
1
1
  # placeholder to use for pinning against specific gem commit references
2
2
 
3
+ gem 'breadcrumbs_on_rails', git: 'https://github.com/weppos/breadcrumbs_on_rails.git'
4
+
3
5
  group :development do
4
6
  gem 'better_errors'
5
7
  gem 'binding_of_caller'
@@ -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 active values if the current value is active' do
27
- expect(rendered).not_to have_xpath('//div/ul/li[1]/select/option[@value="demo_id_04"]')
28
- expect(rendered).not_to have_xpath('//div/ul/li[1]/select/option[text()="Fourth is an Inactive Term"]')
29
- end
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
- it 'will always include the current value as an option' do
32
- expect(rendered).to have_xpath('//div/ul/li[2]/select/option[@value="demo_id_04" and @selected="selected"]')
33
- expect(rendered).to have_xpath('//div/ul/li[2]/select/option[text()="Fourth is an Inactive Term"]')
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(:file_set, file_set)
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
- expected_fields = file_set.class.fields.select { |f| ![:has_model, :create_date].include? f }
16
- expected_fields << :date_created
17
- expected_fields.each do |field_symbol|
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.3.3
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-11 00:00:00.000000000 Z
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: 10.0.0
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: 10.0.0
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/affix.es6
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
- })