gitlab-org--gitlab-foss/spec/lib/gitlab/repository_size_error_messa...

73 lines
2.4 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::RepositorySizeErrorMessage do
let_it_be(:namespace) { build(:namespace) }
let(:checker) do
Gitlab::RepositorySizeChecker.new(
current_size_proc: -> { 15.megabytes },
namespace: namespace,
limit: 10.megabytes
)
end
let(:message) { checker.error_message }
let(:base_message) { 'because this repository has exceeded its size limit of 10 MB by 5 MB' }
before do
allow(namespace).to receive(:total_repository_size_excess).and_return(0)
end
describe 'error messages' do
describe '#commit_error' do
it 'returns the correct message' do
expect(message.commit_error).to eq("Your changes could not be committed, #{base_message}")
end
end
describe '#merge_error' do
it 'returns the correct message' do
expect(message.merge_error).to eq("This merge request cannot be merged, #{base_message}")
end
end
describe '#push_error' do
context 'with exceeded_limit value' do
let(:rejection_message) do
'because this repository has exceeded its size limit of 10 MB by 15 MB'
end
it 'returns the correct message' do
expect(message.push_error(10.megabytes))
.to eq("Your push has been rejected, #{rejection_message}. #{message.more_info_message}")
end
end
context 'without exceeded_limit value' do
it 'returns the correct message' do
expect(message.push_error)
.to eq("Your push has been rejected, #{base_message}. #{message.more_info_message}")
end
end
end
describe '#new_changes_error' do
context 'when additional repo storage is available' do
it 'returns the correct message' do
allow(checker).to receive(:additional_repo_storage_available?).and_return(true)
expect(message.new_changes_error).to eq('Your push to this repository has been rejected because it would exceed storage limits. Please contact your GitLab administrator for more information.')
end
end
context 'when no additional repo storage is available' do
it 'returns the correct message' do
expect(message.new_changes_error).to eq("Your push to this repository would cause it to exceed the size limit of 10 MB so it has been rejected. #{message.more_info_message}")
end
end
end
end
end