hydra-access-controls 10.6.2 → 11.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59c85b9ad05b984f2c51a16b14fea58931a6d63f9b34e2b632869b7d96f8eea5
4
- data.tar.gz: f2b1c0daa69c0afee47b4065eaff8507326cadfbce996ad338554760a827015c
3
+ metadata.gz: e4b22da24ea67d1fdb58bfce4044fa0d7c7167640bd7fb7c89bce988e0571595
4
+ data.tar.gz: 6adce22a2c6036385cd97550dfb51e11e23eea2b72b11076fcd0e54bb96f0ee6
5
5
  SHA512:
6
- metadata.gz: '018366d44ecf5c886e36da31dd5a61ebb7c38b2156ecf2f60c59b0c767fb206b56b4b7fae547538d75fdb16748df4718b8f657ddd01389c489cd05d821216c6f'
7
- data.tar.gz: d61093876bcebebb316f74aa0bebe9eee6d9349c017c45ea9c61a4a4b02ffde9578a12404973a4299d5e4b6d618e210fa2356574bd2306e71e1917f0c21205cc
6
+ metadata.gz: 17ae9693da60445afd084147a730c0cb86d585d5402ca8e88f4483d6cfd8b75cae3a41f4b241121dafba1d2ef6e868a33cf887cc8ba4d9cbf2e02deae415bd35
7
+ data.tar.gz: 0e4891b4c48b83db40d5e9e95da32630807a964dfbdd9ea84c5687adbf1092d319682c3fa5e006c1c4b76dc423ce5b50a77c2baae25916830a5b3ae0b5a44396
@@ -8,8 +8,8 @@ module Hydra
8
8
  validates :lease_expiration_date, :'hydra/future_date' => true, if: :enforce_future_date_for_lease?
9
9
  validates :embargo_release_date, :'hydra/future_date' => true, if: :enforce_future_date_for_embargo?
10
10
 
11
- belongs_to :embargo, predicate: Hydra::ACL.hasEmbargo, class_name: 'Hydra::AccessControls::Embargo'
12
- belongs_to :lease, predicate: Hydra::ACL.hasLease, class_name: 'Hydra::AccessControls::Lease'
11
+ belongs_to :embargo, predicate: Hydra::ACL.hasEmbargo, class_name: 'Hydra::AccessControls::Embargo', autosave: true
12
+ belongs_to :lease, predicate: Hydra::ACL.hasLease, class_name: 'Hydra::AccessControls::Lease', autosave: true
13
13
 
14
14
  delegate :visibility_during_embargo, :visibility_during_embargo=, :visibility_after_embargo, :visibility_after_embargo=, :embargo_release_date, :embargo_release_date=, :embargo_history, :embargo_history=, to: :existing_or_new_embargo
15
15
  delegate :visibility_during_lease, :visibility_during_lease=, :visibility_after_lease, :visibility_after_lease=, :lease_expiration_date, :lease_expiration_date=, :lease_history, :lease_history=, to: :existing_or_new_lease
@@ -31,11 +31,11 @@ module Hydra
31
31
  obj.update(attributes.except(:id, '_destroy'))
32
32
  end
33
33
  else
34
- relationship.create(attributes)
34
+ relationship.build(attributes)
35
35
  end
36
36
  end
37
37
  # Poison the cache
38
- relationship.reset if any_destroyed
38
+ save! && relationship.reset if any_destroyed
39
39
  end
40
40
 
41
41
  def relationship
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["hydra-tech@googlegroups.com"]
7
7
  gem.description = %q{Access controls for project hydra}
8
8
  gem.summary = %q{Access controls for project hydra}
9
- gem.homepage = "http://projecthydra.org"
9
+ gem.homepage = "https://github.com/samvera/hydra-head/tree/master/hydra-access-controls"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.required_ruby_version = '>= 1.9.3'
20
20
 
21
21
  gem.add_dependency 'activesupport', '>= 4', '< 6'
22
- gem.add_dependency "active-fedora", '>= 10.0.0', '< 13'
22
+ gem.add_dependency "active-fedora", '>= 10.0.0'
23
23
  gem.add_dependency "blacklight", '>= 5.16'
24
24
  gem.add_dependency "blacklight-access_controls", '~> 0.6.0'
25
25
  gem.add_dependency 'cancancan', '~> 1.8'
@@ -12,7 +12,7 @@ Hydra::Engine.config.autoload_paths.each { |path| $LOAD_PATH.unshift path }
12
12
  require 'byebug' unless ENV['CI']
13
13
 
14
14
  def coverage_needed?
15
- ENV['COVERAGE'] || ENV['TRAVIS']
15
+ ENV['COVERAGE'] || ENV['CI']
16
16
  end
17
17
 
18
18
  if RUBY_VERSION =~ /^1.9/ && coverage_needed?
@@ -23,7 +23,7 @@ describe "active_fedora/accessible_by" do
23
23
 
24
24
  describe "#accsesible_by" do
25
25
  it "should return objects readable by the ability" do
26
- expect(ModsAsset.accessible_by(ability)).to eq [public_obj, editable_obj]
26
+ expect(ModsAsset.accessible_by(ability)).to contain_exactly(public_obj, editable_obj)
27
27
  end
28
28
  it "should return object editable by the ability" do
29
29
  expect(ModsAsset.accessible_by(ability, :edit)).to eq [editable_obj]
@@ -19,6 +19,59 @@ describe Hydra::AccessControls::Embargoable do
19
19
  let(:model) { TestModel.new }
20
20
  subject { model }
21
21
 
22
+ describe 'an object under embargo/lease' do
23
+ before do
24
+ class ModelWithPersistence < ActiveFedora::Base
25
+ include Hydra::AccessControls::Embargoable
26
+ end
27
+ end
28
+ after { Object.send(:remove_const, :ModelWithPersistence) }
29
+ let(:original_date) { 7.days.from_now }
30
+ let(:updated_date) { 14.days.from_now }
31
+ subject { ModelWithPersistence.new }
32
+ context 'saved with a new embargo release date' do
33
+ it 'will persist the new date' do
34
+ subject.visibility_during_embargo = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
35
+ subject.visibility_after_embargo = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
36
+ subject.embargo_release_date = original_date
37
+ subject.save
38
+
39
+ # These next three lines are to verify the round-trip for saves.
40
+ persisted_object = subject.class.find(subject.id)
41
+ expect(persisted_object).to be_under_embargo
42
+ expect(persisted_object.embargo_release_date).to eq(original_date)
43
+
44
+ expect do
45
+ persisted_object.embargo_release_date = updated_date
46
+ persisted_object.save
47
+ end.to change { persisted_object.class.find(persisted_object.id).embargo_release_date }
48
+ .from(original_date)
49
+ .to(updated_date)
50
+ end
51
+ end
52
+
53
+ context 'saved with a new lease expiration date' do
54
+ it 'will persist the new date' do
55
+ subject.visibility_during_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
56
+ subject.visibility_after_lease = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
57
+ subject.lease_expiration_date = original_date
58
+ subject.save
59
+
60
+ # These next three lines are to verify the round-trip for saves.
61
+ persisted_object = subject.class.find(subject.id)
62
+ expect(persisted_object).to be_active_lease
63
+ expect(persisted_object.lease_expiration_date).to eq(original_date)
64
+
65
+ expect do
66
+ persisted_object.lease_expiration_date = updated_date
67
+ persisted_object.save
68
+ end.to change { persisted_object.class.find(persisted_object.id).lease_expiration_date }
69
+ .from(original_date)
70
+ .to(updated_date)
71
+ end
72
+ end
73
+ end
74
+
22
75
  describe '#embargo_indexer_class' do
23
76
  subject { model.embargo_indexer_class }
24
77
  it { is_expected.to eq Hydra::AccessControls::EmbargoIndexer }
@@ -6,7 +6,7 @@ namespace "hydra-access" do
6
6
  fcrepo_params = { port: 8986, verbose: true, managed: true,
7
7
  no_jms: true, fcrepo_home_dir: 'fcrepo4-test-data' }
8
8
  SolrWrapper.wrap(solr_params) do |solr|
9
- solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "config")) do
9
+ solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "conf")) do
10
10
  FcrepoWrapper.wrap(fcrepo_params) do
11
11
  Rake::Task['spec'].invoke
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-access-controls
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.6.2
4
+ version: 11.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-03-06 00:00:00.000000000 Z
13
+ date: 2020-10-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -39,9 +39,6 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: 10.0.0
42
- - - "<"
43
- - !ruby/object:Gem::Version
44
- version: '13'
45
42
  type: :runtime
46
43
  prerelease: false
47
44
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,9 +46,6 @@ dependencies:
49
46
  - - ">="
50
47
  - !ruby/object:Gem::Version
51
48
  version: 10.0.0
52
- - - "<"
53
- - !ruby/object:Gem::Version
54
- version: '13'
55
49
  - !ruby/object:Gem::Dependency
56
50
  name: blacklight
57
51
  requirement: !ruby/object:Gem::Requirement
@@ -217,7 +211,7 @@ files:
217
211
  - spec/unit/with_depositor_spec.rb
218
212
  - spec/validators/future_date_validator_spec.rb
219
213
  - tasks/hydra-access-controls.rake
220
- homepage: http://projecthydra.org
214
+ homepage: https://github.com/samvera/hydra-head/tree/master/hydra-access-controls
221
215
  licenses:
222
216
  - APACHE-2.0
223
217
  metadata: {}
@@ -236,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
230
  - !ruby/object:Gem::Version
237
231
  version: '0'
238
232
  requirements: []
239
- rubygems_version: 3.0.3
233
+ rubygems_version: 3.1.2
240
234
  signing_key:
241
235
  specification_version: 4
242
236
  summary: Access controls for project hydra