Extract EE specific files/lines for spec/services/projects/update_service_spec.rb
We have the following files containing EE specific code. We should move them to ee/
spec/services/projects/update_service_spec.rb
diff --git a/spec/services/projects/update_service_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/projects/update_service_spec.rb
index 90eaea9c872..94fcef0fcc5 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/projects/update_service_spec.rb
@@ -1,6 +1,7 @@
require 'spec_helper'
-describe Projects::UpdateService do
+describe Projects::UpdateService, '#execute' do
+ include StubConfiguration
include ProjectForksHelper
let(:user) { create(:user) }
@@ -418,6 +419,72 @@ describe Projects::UpdateService do
end
end
+ describe 'repository_storage' do
+ let(:admin_user) { create(:user, admin: true) }
+ let(:user) { create(:user) }
+ let(:project) { create(:project, :repository) }
+ let(:opts) { { repository_storage: 'b' } }
+
+ before do
+ FileUtils.mkdir('tmp/tests/storage_b')
+
+ storages = {
+ 'default' => Gitlab.config.repositories.storages.default,
+ 'b' => { 'path' => 'tmp/tests/storage_b' }
+ }
+ stub_storage_settings(storages)
+ end
+
+ after do
+ FileUtils.rm_rf('tmp/tests/storage_b')
+ end
+
+ it 'calls the change repository storage method if the storage changed' do
+ expect(project).to receive(:change_repository_storage).with('b')
+
+ update_project(project, admin_user, opts).inspect
+ end
+
+ it "doesn't call the change repository storage for non-admin users" do
+ expect(project).not_to receive(:change_repository_storage)
+
+ update_project(project, user, opts).inspect
+ end
+ end
+
+ context 'repository_size_limit assignment as Bytes' do
+ let(:admin_user) { create(:user, admin: true) }
+ let(:project) { create(:project, repository_size_limit: 0) }
+
+ context 'when param present' do
+ let(:opts) { { repository_size_limit: '100' } }
+
+ it 'converts from MB to Bytes' do
+ update_project(project, admin_user, opts)
+
+ expect(project.reload.repository_size_limit).to eql(100 * 1024 * 1024)
+ end
+ end
+
+ context 'when param not present' do
+ let(:opts) { { repository_size_limit: '' } }
+
+ it 'assign nil value' do
+ update_project(project, admin_user, opts)
+
+ expect(project.reload.repository_size_limit).to be_nil
+ end
+ end
+ end
+
+ it 'returns an error result when record cannot be updated' do
+ admin = create(:admin)
+
+ result = update_project(project, admin, { name: 'foo&bar' })
+
+ expect(result).to eq({ status: :error, message: "Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'." })
+ end
+
def update_project(project, user, opts)
described_class.new(project, user, opts).execute
end
Edited by Yorick Peterse