hydra-access-controls 7.2.1 → 7.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5d5102b10b6d153f696ab99a80b4a7e6997b908
4
- data.tar.gz: c609a6d44d6143918a340708aacd31b4ed2b41c4
3
+ metadata.gz: d443ec507006b3d9f0c15ffa68e0a5e13736386a
4
+ data.tar.gz: f634a0c9d408027ca268490158e02ef27cb4dc28
5
5
  SHA512:
6
- metadata.gz: 965849b283e9754b4f2248a5c0d409622921b21cde480755e34efbcb7f9fa31d324d640855064d0d8bc672cbc630139f23905c645f83996dff7a9a40b068e55f
7
- data.tar.gz: cd37db01c12f66a4c1563a71c26f92f5420e4a84ea00274d23bf6ef0f2eb52a727b87c01685db5f49c4e3eb0b2caef9306cb50a772ef0abb9612e6a08293b413
6
+ metadata.gz: 92aea9fff4e578c80ec13c3faf8ebca5dca5c3f09531f79d6de053394242a6942e4803c1f67810b65a962e0d20be1069038473c8c30a158d694f9bc15d31d575
7
+ data.tar.gz: 1893daf644784b0c7141f2a52095f67c20704b27d65dcd7a3c59dc3c486fe517b5ee7fbd9fbb83f124428e0cda0922e34ae30d2c73c4f965d5418626d3cafccf
@@ -44,6 +44,7 @@ module Hydra
44
44
  self.visibility_during_embargo = visibility_during unless visibility_during.nil?
45
45
  self.visibility_after_embargo = visibility_after unless visibility_after.nil?
46
46
  embargo_visibility!
47
+ visibility_will_change!
47
48
  end
48
49
 
49
50
  def deactivate_embargo!
@@ -54,6 +55,7 @@ module Hydra
54
55
  self.visibility_during_embargo = nil
55
56
  self.visibility_after_embargo = nil
56
57
  self.embargo_history += [embargo_record]
58
+ visibility_will_change!
57
59
  end
58
60
 
59
61
  def validate_embargo
@@ -115,7 +117,8 @@ module Hydra
115
117
  self.lease_expiration_date = release_date
116
118
  self.visibility_during_lease = visibility_during unless visibility_during.nil?
117
119
  self.visibility_after_lease = visibility_after unless visibility_after.nil?
118
- self.lease_visibility!
120
+ lease_visibility!
121
+ visibility_will_change!
119
122
  end
120
123
 
121
124
  def deactivate_lease!
@@ -126,6 +129,7 @@ module Hydra
126
129
  self.visibility_during_lease = nil
127
130
  self.visibility_after_lease = nil
128
131
  self.lease_history += [lease_record]
132
+ visibility_will_change!
129
133
  end
130
134
 
131
135
  # Set the current visibility to match what is described in the lease.
@@ -29,7 +29,7 @@ module Hydra
29
29
  end
30
30
 
31
31
  def visibility_changed?
32
- @visibility_will_change
32
+ !!@visibility_will_change
33
33
  end
34
34
 
35
35
  private
@@ -35,15 +35,22 @@ describe Hydra::AccessControls::Embargoable do
35
35
  expect(subject).to receive(:deactivate_embargo!)
36
36
  subject.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
37
37
  end
38
- it "when changing from lease, wipes out associated lease metadata" do
39
- subject.lease_expiration_date = future_date.to_s
40
- expect(subject).to receive(:deactivate_lease!)
41
- subject.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
38
+
39
+ context "when changing from lease" do
40
+ it "wipes out associated lease metadata and marks visibility as changed" do
41
+ subject.apply_lease(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
42
+ expect(subject).to receive(:deactivate_lease!)
43
+ subject.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
44
+ expect(subject).to be_visibility_changed
45
+ end
42
46
  end
43
47
  end
48
+
44
49
  context 'apply_embargo' do
45
50
  it "applies appropriate embargo_visibility settings" do
46
- subject.apply_embargo(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC)
51
+ expect {
52
+ subject.apply_embargo(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC)
53
+ }.to change { subject.visibility_changed? }.from(false).to(true)
47
54
  expect(subject).to be_under_embargo
48
55
  expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
49
56
  expect(subject.embargo_release_date).to eq future_date.to_time.utc
@@ -84,7 +91,8 @@ describe Hydra::AccessControls::Embargoable do
84
91
  it "should remove the associated embargo information and record it in the object's embargo history" do
85
92
  expect {
86
93
  subject.deactivate_embargo!
87
- }.to change { subject.under_embargo? }.from(true).to(false)
94
+ }.to change { subject.under_embargo? }.from(true).to(false).and change {
95
+ subject.visibility_changed? }.from(false).to(true)
88
96
  expect(subject.embargo_release_date).to be_nil
89
97
  expect(subject.visibility_during_embargo).to be_nil
90
98
  expect(subject.visibility_after_embargo).to be_nil
@@ -104,18 +112,39 @@ describe Hydra::AccessControls::Embargoable do
104
112
  end
105
113
 
106
114
  context 'apply_lease' do
107
- it "applies appropriate embargo_visibility settings" do
108
- subject.apply_lease(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
109
- expect(subject).to be_active_lease
110
- expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
111
- expect(subject.lease_expiration_date).to eq future_date.to_time.utc
112
- expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
115
+ context "when the initial value is restricted" do
116
+ it "applies appropriate embargo_visibility settings" do
117
+ subject.apply_lease(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
118
+ expect(subject).to be_active_lease
119
+ expect(subject).to be_visibility_changed
120
+ expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
121
+ expect(subject.lease_expiration_date).to eq future_date.to_time.utc
122
+ expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
123
+ end
124
+ it "relies on default before/after visibility if none provided" do
125
+ subject.apply_lease(future_date.to_s)
126
+ expect(subject.visibility_during_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
127
+ expect(subject.lease_expiration_date).to eq future_date.to_time.utc
128
+ expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
129
+ end
113
130
  end
114
- it "relies on default before/after visibility if none provided" do
115
- subject.apply_lease(future_date.to_s)
116
- expect(subject.visibility_during_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
117
- expect(subject.lease_expiration_date).to eq future_date.to_time.utc
118
- expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
131
+
132
+ context "when the initial value is public" do
133
+ before do
134
+ subject.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
135
+ # reset the changed log
136
+ subject.send(:instance_variable_set, :@visibility_will_change, false)
137
+ end
138
+
139
+ it "applies appropriate embargo_visibility settings" do
140
+ expect {
141
+ subject.apply_lease(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE)
142
+ }.to change { subject.visibility_changed? }.from(false).to(true)
143
+ expect(subject).to be_active_lease
144
+ expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
145
+ expect(subject.lease_expiration_date).to eq future_date.to_time.utc
146
+ expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
147
+ end
119
148
  end
120
149
  end
121
150
 
@@ -130,7 +159,9 @@ describe Hydra::AccessControls::Embargoable do
130
159
  let(:expiration_date) { past_date.to_s }
131
160
 
132
161
  it "should remove the associated lease information and record it in the object's lease history" do
133
- subject.deactivate_lease!
162
+ expect {
163
+ subject.deactivate_lease!
164
+ }.to change { subject.visibility_changed? }.from(false).to(true)
134
165
  expect(subject.lease_expiration_date).to be_nil
135
166
  expect(subject.visibility_during_lease).to be_nil
136
167
  expect(subject.visibility_after_lease).to be_nil
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: 7.2.1
4
+ version: 7.2.2
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: 2014-09-02 00:00:00.000000000 Z
13
+ date: 2014-09-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -236,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
236
  version: '0'
237
237
  requirements: []
238
238
  rubyforge_project:
239
- rubygems_version: 2.4.1
239
+ rubygems_version: 2.2.2
240
240
  signing_key:
241
241
  specification_version: 4
242
242
  summary: Access controls for project hydra