diff --git a/app/overrides/models/hydra/access_controls/visibility_override.rb b/app/overrides/models/hydra/access_controls/visibility_override.rb index b111bebfa..42473eb3f 100644 --- a/app/overrides/models/hydra/access_controls/visibility_override.rb +++ b/app/overrides/models/hydra/access_controls/visibility_override.rb @@ -3,8 +3,8 @@ Hydra::AccessControls::Visibility.module_eval do alias_method :original_visibility, :visibility def visibility - # [hyc-override] Default to the most permissive visibility for new records - return Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC if self.new_record? + # [hyc-override] Default to the most permissive visibility for new records if no read groups are specified + return Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC if new_record? && read_groups.blank? original_visibility end end diff --git a/spec/models/hydra/access_controls/visibility_spec.rb b/spec/models/hydra/access_controls/visibility_spec.rb index 2f28587d3..d6178ee60 100644 --- a/spec/models/hydra/access_controls/visibility_spec.rb +++ b/spec/models/hydra/access_controls/visibility_spec.rb @@ -6,12 +6,28 @@ context 'with a new article' do let(:article) { Article.new } - it 'has default public visibility' do + it 'has default open visibility' do expect(article.visibility).to eq 'open' end end - context 'with an existing article with no defined read groups' do + context 'with a new article with registered group' do + let(:article) { Article.new(read_groups: ['registered']) } + + it 'has authenticated visibility' do + expect(article.visibility).to eq 'authenticated' + end + end + + context 'with a new article with private group' do + let(:article) { Article.new(read_groups: ['private']) } + + it 'has restricted visibility' do + expect(article.visibility).to eq 'restricted' + end + end + + context 'with an existing article with empty read groups' do let(:article) do FactoryBot.create( :article, @@ -35,6 +51,19 @@ it 'has authenticated visibility' do expect(article.visibility).to eq 'authenticated' end - end + end + + context 'with an existing article with public read group' do + let(:article) do + FactoryBot.create( + :article, + read_groups: ['public'] + ) + end + + it 'has open visibility' do + expect(article.visibility).to eq 'open' + end + end end -end \ No newline at end of file +end