diff options
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/namespace_setting_spec.rb | 20 | ||||
-rw-r--r-- | spec/models/notification_recipient_spec.rb | 50 | ||||
-rw-r--r-- | spec/models/repository_spec.rb | 27 |
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 } |