summaryrefslogtreecommitdiff
path: root/spec/models
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-09 18:12:57 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-09 18:12:57 +0000
commit7c0e5472c80f1826b36916a95e6f9d84a7b68fe3 (patch)
tree91e24facb11469a31da6566ed5d59d7298984082 /spec/models
parent427dbb30f037eb6697fc14852966ebff5d488a43 (diff)
downloadgitlab-ce-7c0e5472c80f1826b36916a95e6f9d84a7b68fe3.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/namespace_setting_spec.rb20
-rw-r--r--spec/models/notification_recipient_spec.rb50
-rw-r--r--spec/models/repository_spec.rb27
3 files changed, 89 insertions, 8 deletions
diff --git a/spec/models/namespace_setting_spec.rb b/spec/models/namespace_setting_spec.rb
index 9fce65c9a5f..4ac248802b8 100644
--- a/spec/models/namespace_setting_spec.rb
+++ b/spec/models/namespace_setting_spec.rb
@@ -130,18 +130,22 @@ RSpec.describe NamespaceSetting, type: :model do
describe '#show_diff_preview_in_email?' do
context 'when not a subgroup' do
- it 'returns false' do
- settings = create(:namespace_settings, show_diff_preview_in_email: false)
- group = create(:group, namespace_settings: settings )
+ context 'when :show_diff_preview_in_email is false' do
+ it 'returns false' do
+ settings = create(:namespace_settings, show_diff_preview_in_email: false)
+ group = create(:group, namespace_settings: settings )
- expect(group.show_diff_preview_in_email?).to be_falsey
+ expect(group.show_diff_preview_in_email?).to be_falsey
+ end
end
- it 'returns true' do
- settings = create(:namespace_settings, show_diff_preview_in_email: true)
- group = create(:group, namespace_settings: settings )
+ context 'when :show_diff_preview_in_email is true' do
+ it 'returns true' do
+ settings = create(:namespace_settings, show_diff_preview_in_email: true)
+ group = create(:group, namespace_settings: settings )
- expect(group.show_diff_preview_in_email?).to be_truthy
+ expect(group.show_diff_preview_in_email?).to be_truthy
+ end
end
it 'does not query the db when there is no parent group' do
diff --git a/spec/models/notification_recipient_spec.rb b/spec/models/notification_recipient_spec.rb
index 4debda0621c..8105262aada 100644
--- a/spec/models/notification_recipient_spec.rb
+++ b/spec/models/notification_recipient_spec.rb
@@ -39,6 +39,56 @@ RSpec.describe NotificationRecipient do
expect(recipient.notifiable?).to eq true
end
end
+
+ context 'when recipient email is blocked', :clean_gitlab_redis_rate_limiting do
+ before do
+ allow(Gitlab::ApplicationRateLimiter).to receive(:rate_limits)
+ .and_return(
+ temporary_email_failure: { threshold: 1, interval: 1.minute },
+ permanent_email_failure: { threshold: 1, interval: 1.minute }
+ )
+ end
+
+ context 'with permanent failures' do
+ before do
+ 2.times { Gitlab::ApplicationRateLimiter.throttled?(:permanent_email_failure, scope: user.email) }
+ end
+
+ it 'returns false' do
+ expect(recipient.notifiable?).to eq(false)
+ end
+
+ context 'when block_emails_with_failures is disabled' do
+ before do
+ stub_feature_flags(block_emails_with_failures: false)
+ end
+
+ it 'returns true' do
+ expect(recipient.notifiable?).to eq(true)
+ end
+ end
+ end
+
+ context 'with temporary failures' do
+ before do
+ 2.times { Gitlab::ApplicationRateLimiter.throttled?(:temporary_email_failure, scope: user.email) }
+ end
+
+ it 'returns false' do
+ expect(recipient.notifiable?).to eq(false)
+ end
+
+ context 'when block_emails_with_failures is disabled' do
+ before do
+ stub_feature_flags(block_emails_with_failures: false)
+ end
+
+ it 'returns true' do
+ expect(recipient.notifiable?).to eq(true)
+ end
+ end
+ end
+ end
end
describe '#has_access?' do
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 04c263223b2..839f862322d 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -161,6 +161,33 @@ RSpec.describe Repository do
end
end
+ context 'semantic versioning sort' do
+ let(:version_two) { 'v2.0.0' }
+ let(:version_ten) { 'v10.0.0' }
+
+ before do
+ repository.add_tag(user, version_two, repository.commit.id)
+ repository.add_tag(user, version_ten, repository.commit.id)
+ end
+
+ after do
+ repository.rm_tag(user, version_two)
+ repository.rm_tag(user, version_ten)
+ end
+
+ context 'desc' do
+ subject { repository.tags_sorted_by('version_desc').map(&:name) & (tags_to_compare + [version_two, version_ten]) }
+
+ it { is_expected.to eq([version_ten, version_two, 'v1.1.0', 'v1.0.0']) }
+ end
+
+ context 'asc' do
+ subject { repository.tags_sorted_by('version_asc').map(&:name) & (tags_to_compare + [version_two, version_ten]) }
+
+ it { is_expected.to eq(['v1.0.0', 'v1.1.0', version_two, version_ten]) }
+ end
+ end
+
context 'unknown option' do
subject { repository.tags_sorted_by('unknown_desc').map(&:name) & tags_to_compare }