diff options
Diffstat (limited to 'spec/models/project_setting_spec.rb')
-rw-r--r-- | spec/models/project_setting_spec.rb | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/spec/models/project_setting_spec.rb b/spec/models/project_setting_spec.rb index 5d06b30a529..3b890e75064 100644 --- a/spec/models/project_setting_spec.rb +++ b/spec/models/project_setting_spec.rb @@ -135,7 +135,7 @@ RSpec.describe ProjectSetting, type: :model, feature_category: :groups_and_proje end describe '#show_diff_preview_in_email?' do - context 'when a project is a top-level namespace' do + context 'when a project has no parent group' do let(:project_settings) { create(:project_setting, show_diff_preview_in_email: false) } let(:project) { create(:project, project_setting: project_settings) } @@ -157,75 +157,75 @@ RSpec.describe ProjectSetting, type: :model, feature_category: :groups_and_proje end end - describe '#emails_enabled?' do - context "when a project does not have a parent group" do - let(:project_settings) { create(:project_setting, emails_enabled: true) } - let(:project) { create(:project, project_setting: project_settings) } - - it "returns true" do - expect(project.emails_enabled?).to be_truthy - end + context 'when a parent group overrides project settings' do + let(:namespace_settings) { create(:namespace_settings, show_diff_preview_in_email: false) } + let(:project_settings) { create(:project_setting, show_diff_preview_in_email: true) } + let(:group) { create(:group, namespace_settings: namespace_settings) } + let(:project) { create(:project, namespace_id: group.id, project_setting: project_settings) } - it "returns false when updating project settings" do - project.update_attribute(:emails_disabled, false) - expect(project.emails_enabled?).to be_truthy + context 'when show_diff_preview_in_email is disabled for the parent group' do + it 'returns false' do + expect(project).not_to be_show_diff_preview_in_email end end - context "when a project has a parent group" do - let(:namespace_settings) { create(:namespace_settings, emails_enabled: true) } - let(:project_settings) { create(:project_setting, emails_enabled: true) } - let(:group) { create(:group, namespace_settings: namespace_settings) } - let(:project) do - create(:project, namespace_id: group.id, - project_setting: project_settings) - end - - context 'when emails have been disabled in parent group' do - it 'returns false' do - group.update_attribute(:emails_disabled, true) + context 'when all ancestors have enabled diff previews' do + let(:namespace_settings) { create(:namespace_settings, show_diff_preview_in_email: true) } - expect(project.emails_enabled?).to be_falsey - end + it 'returns true' do + expect(project).to be_show_diff_preview_in_email end + end + end + end - context 'when emails are enabled in parent group' do - before do - allow(project.namespace).to receive(:emails_enabled?).and_return(true) - end + describe '#emails_enabled?' do + context "when a project does not have a parent group" do + let_it_be(:project_settings) { create(:project_setting, emails_enabled: true) } + let_it_be(:project) { create(:project, project_setting: project_settings) } - it 'returns true' do - expect(project.emails_enabled?).to be_truthy - end + it "returns true" do + expect(project.emails_enabled?).to be_truthy + end - it 'returns false when disabled at the project' do - project.update_attribute(:emails_disabled, true) + it "returns false when project_settings are set to false" do + project.project_setting.clear_memoization(:emails_enabled?) + project.update_attribute(:emails_enabled, false) - expect(project.emails_enabled?).to be_falsey - end - end + expect(project.emails_enabled?).to be_falsey end end - context 'when a parent group has a parent group' do - let(:namespace_settings) { create(:namespace_settings, show_diff_preview_in_email: false) } - let(:project_settings) { create(:project_setting, show_diff_preview_in_email: true) } + context "when a project has a parent group" do + let(:namespace_settings) { create(:namespace_settings, emails_enabled: true) } + let(:project_settings) { create(:project_setting, emails_enabled: true) } let(:group) { create(:group, namespace_settings: namespace_settings) } - let!(:project) { create(:project, namespace_id: group.id, project_setting: project_settings) } + let(:project) do + create(:project, namespace_id: group.id, + project_setting: project_settings) + end - context 'when show_diff_preview_in_email is disabled for the parent group' do + context 'when emails have been disabled in parent group' do it 'returns false' do - expect(project).not_to be_show_diff_preview_in_email + group.update_attribute(:emails_disabled, true) + + expect(project.emails_enabled?).to be_falsey end end - context 'when all ancestors have enabled diff previews' do - let(:namespace_settings) { create(:namespace_settings, show_diff_preview_in_email: true) } + context 'when emails are enabled in parent group' do + before do + allow(project.namespace).to receive(:emails_disabled?).and_return(false) + end it 'returns true' do - group.update_attribute(:show_diff_preview_in_email, true) + expect(project.emails_enabled?).to be_truthy + end - expect(project).to be_show_diff_preview_in_email + it 'returns false when disabled at the project' do + project.update_attribute(:emails_enabled, false) + + expect(project.emails_enabled?).to be_falsey end end end |