Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/project_setting_spec.rb')
-rw-r--r--spec/models/project_setting_spec.rb96
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