summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorFrancisco Javier López <fjlopez@gitlab.com>2018-07-20 19:25:10 -0400
committerFrancisco Javier López <fjlopez@gitlab.com>2018-07-20 19:25:10 -0400
commit38eab74483e728018a129c36d4064313f5d152f6 (patch)
treef946438bc3085b175fe20e08ebf0773cfbfdb782 /spec
parent334ee10727540c8e16d47075781564fd21e8a9cb (diff)
downloadgitlab-ce-38eab74483e728018a129c36d4064313f5d152f6.tar.gz
EE Port
Diffstat (limited to 'spec')
-rw-r--r--spec/services/projects/create_from_template_service_spec.rb33
-rw-r--r--spec/services/projects/gitlab_projects_import_service_spec.rb54
-rw-r--r--spec/support/shared_examples/gitlab_projects_import_service_shared_examples.rb54
3 files changed, 87 insertions, 54 deletions
diff --git a/spec/services/projects/create_from_template_service_spec.rb b/spec/services/projects/create_from_template_service_spec.rb
index 9aa9237d875..40c8af87642 100644
--- a/spec/services/projects/create_from_template_service_spec.rb
+++ b/spec/services/projects/create_from_template_service_spec.rb
@@ -2,10 +2,11 @@ require 'spec_helper'
describe Projects::CreateFromTemplateService do
let(:user) { create(:user) }
+ let(:template_name) { 'rails' }
let(:project_params) do
{
path: user.to_param,
- template_name: 'rails',
+ template_name: template_name,
description: 'project description',
visibility_level: Gitlab::VisibilityLevel::PUBLIC
}
@@ -14,7 +15,10 @@ describe Projects::CreateFromTemplateService do
subject { described_class.new(user, project_params) }
it 'calls the importer service' do
- expect_any_instance_of(Projects::GitlabProjectsImportService).to receive(:execute)
+ import_service_double = double
+
+ allow(Projects::GitlabProjectsImportService).to receive(:new).and_return(import_service_double)
+ expect(import_service_double).to receive(:execute)
subject.execute
end
@@ -26,6 +30,31 @@ describe Projects::CreateFromTemplateService do
expect(project.import_scheduled?).to be(true)
end
+ context 'when template is not present' do
+ let(:template_name) { 'non_existent' }
+ let(:project) { subject.execute }
+
+ before do
+ expect(project).to be_saved
+ end
+
+ it 'does not set import set import type' do
+ expect(project.import_type).to be nil
+ end
+
+ it 'does not set import set import source' do
+ expect(project.import_source).to be nil
+ end
+
+ it 'is not scheduled' do
+ expect(project.import_scheduled?).to be(false)
+ end
+
+ it 'repository is empty' do
+ expect(project.repository.empty?).to be(true)
+ end
+ end
+
context 'the result project' do
before do
Sidekiq::Testing.inline! do
diff --git a/spec/services/projects/gitlab_projects_import_service_spec.rb b/spec/services/projects/gitlab_projects_import_service_spec.rb
index 0a898e9b89b..a2061127698 100644
--- a/spec/services/projects/gitlab_projects_import_service_spec.rb
+++ b/spec/services/projects/gitlab_projects_import_service_spec.rb
@@ -6,60 +6,10 @@ describe Projects::GitlabProjectsImportService do
let(:file) { fixture_file_upload('spec/fixtures/doc_sample.txt', 'text/plain') }
let(:overwrite) { false }
let(:import_params) { { namespace_id: namespace.id, path: path, file: file, overwrite: overwrite } }
+
subject { described_class.new(namespace.owner, import_params) }
describe '#execute' do
- context 'with an invalid path' do
- let(:path) { '/invalid-path/' }
-
- it 'returns an invalid project' do
- project = subject.execute
-
- expect(project).not_to be_persisted
- expect(project).not_to be_valid
- end
- end
-
- context 'with a valid path' do
- it 'creates a project' do
- project = subject.execute
-
- expect(project).to be_persisted
- expect(project).to be_valid
- end
- end
-
- context 'override params' do
- it 'stores them as import data when passed' do
- project = described_class
- .new(namespace.owner, import_params, description: 'Hello')
- .execute
-
- expect(project.import_data.data['override_params']['description']).to eq('Hello')
- end
- end
-
- context 'when there is a project with the same path' do
- let(:existing_project) { create(:project, namespace: namespace) }
- let(:path) { existing_project.path}
-
- it 'does not create the project' do
- project = subject.execute
-
- expect(project).to be_invalid
- expect(project).not_to be_persisted
- end
-
- context 'when overwrite param is set' do
- let(:overwrite) { true }
-
- it 'creates a project in a temporary full_path' do
- project = subject.execute
-
- expect(project).to be_valid
- expect(project).to be_persisted
- end
- end
- end
+ it_behaves_like 'gitlab projects import validations'
end
end
diff --git a/spec/support/shared_examples/gitlab_projects_import_service_shared_examples.rb b/spec/support/shared_examples/gitlab_projects_import_service_shared_examples.rb
new file mode 100644
index 00000000000..b8db35a6ef9
--- /dev/null
+++ b/spec/support/shared_examples/gitlab_projects_import_service_shared_examples.rb
@@ -0,0 +1,54 @@
+shared_examples 'gitlab projects import validations' do
+ context 'with an invalid path' do
+ let(:path) { '/invalid-path/' }
+
+ it 'returns an invalid project' do
+ project = subject.execute
+
+ expect(project).not_to be_persisted
+ expect(project).not_to be_valid
+ end
+ end
+
+ context 'with a valid path' do
+ it 'creates a project' do
+ project = subject.execute
+
+ expect(project).to be_persisted
+ expect(project).to be_valid
+ end
+ end
+
+ context 'override params' do
+ it 'stores them as import data when passed' do
+ project = described_class
+ .new(namespace.owner, import_params, description: 'Hello')
+ .execute
+
+ expect(project.import_data.data['override_params']['description']).to eq('Hello')
+ end
+ end
+
+ context 'when there is a project with the same path' do
+ let(:existing_project) { create(:project, namespace: namespace) }
+ let(:path) { existing_project.path}
+
+ it 'does not create the project' do
+ project = subject.execute
+
+ expect(project).to be_invalid
+ expect(project).not_to be_persisted
+ end
+
+ context 'when overwrite param is set' do
+ let(:overwrite) { true }
+
+ it 'creates a project in a temporary full_path' do
+ project = subject.execute
+
+ expect(project).to be_valid
+ expect(project).to be_persisted
+ end
+ end
+ end
+end