spec/unit/embargoable_spec.rb in hydra-access-controls-9.2.2 vs spec/unit/embargoable_spec.rb in hydra-access-controls-9.3.0
- old
+ new
@@ -14,12 +14,23 @@
after { Object.send(:remove_const, :TestModel) }
let(:future_date) { Date.today+2 }
let(:past_date) { Date.today-2 }
- subject { TestModel.new }
+ let(:model) { TestModel.new }
+ subject { model }
+ describe '#embargo_indexer_class' do
+ subject { model.embargo_indexer_class }
+ it { is_expected.to eq Hydra::AccessControls::EmbargoIndexer }
+ end
+
+ describe '#lease_indexer_class' do
+ subject { model.lease_indexer_class }
+ it { is_expected.to eq Hydra::AccessControls::LeaseIndexer }
+ end
+
describe 'validations' do
context "with dates" do
subject { ModsAsset.new(lease_expiration_date: past_date, embargo_release_date: past_date) }
it "validates embargo_release_date and lease_expiration_date" do
expect(subject).to_not be_valid
@@ -75,27 +86,46 @@
expect(subject).to be_visibility_changed
end
end
end
- context 'apply_embargo' do
+ describe '#apply_embargo' do
it "applies appropriate embargo_visibility settings" do
expect {
subject.apply_embargo(future_date.to_s, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE, Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC)
}.to change { subject.visibility_changed? }.from(false).to(true)
expect(subject).to be_under_embargo
expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
expect(subject.embargo_release_date).to eq future_date
expect(subject.visibility_after_embargo).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
end
- it "relies on default before/after visibility if none provided" do
- subject.apply_embargo(future_date.to_s)
- expect(subject).to be_under_embargo
- expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
- expect(subject.embargo_release_date).to eq future_date
- expect(subject.visibility_after_embargo).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+
+ context "when no before/after visibility is provided" do
+ it "relies on defaults" do
+ subject.apply_embargo(future_date.to_s)
+ expect(subject).to be_under_embargo
+ expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ expect(subject.embargo_release_date).to eq future_date
+ expect(subject.visibility_after_embargo).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ end
end
+
+ context "when the same embargo is applied" do
+ before do
+ subject.apply_embargo(future_date.to_s)
+ if ActiveModel.version < Gem::Version.new('4.2.0')
+ subject.embargo.send(:reset_changes)
+ else
+ subject.embargo.send(:clear_changes_information)
+ end
+ end
+
+ it "doesn't call visibility_will_change!" do
+ expect(subject).not_to receive(:visibility_will_change!)
+ subject.apply_embargo(future_date.to_s)
+ end
+ end
end
context 'deactivate_embargo!' do
before do
subject.visibility_during_embargo = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
@@ -150,14 +180,33 @@
expect(subject).to be_visibility_changed
expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
expect(subject.lease_expiration_date).to eq future_date
expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
end
- it "relies on default before/after visibility if none provided" do
- subject.apply_lease(future_date.to_s)
- expect(subject.visibility_during_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
- expect(subject.lease_expiration_date).to eq future_date
- expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+
+ context "when before/after visibility is not provided" do
+ it "sets default values" do
+ subject.apply_lease(future_date.to_s)
+ expect(subject.visibility_during_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_AUTHENTICATED
+ expect(subject.lease_expiration_date).to eq future_date
+ expect(subject.visibility_after_lease).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
+ end
+ end
+
+ context "when the same lease is applied" do
+ before do
+ subject.apply_lease(future_date.to_s)
+ if ActiveModel.version < Gem::Version.new('4.2.0')
+ subject.lease.send(:reset_changes)
+ else
+ subject.lease.send(:clear_changes_information)
+ end
+ end
+
+ it "doesn't call visibility_will_change!" do
+ expect(subject).not_to receive(:visibility_will_change!)
+ subject.apply_lease(future_date.to_s)
+ end
end
end
context "when the initial value is public" do
before do