diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2017-06-28 10:42:51 -0300 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2017-06-28 10:42:51 -0300 |
commit | 2a64607b987add8747c4b9601aa01fe40064d15d (patch) | |
tree | d8ed1fdc0329e256edce4e4b98d8ea7a8aee22a1 | |
parent | 4f620eb9e73df40007a2b34caf0e64da01f95668 (diff) | |
download | gitlab-ce-2a64607b987add8747c4b9601aa01fe40064d15d.tar.gz |
Add Project#ensure_repository
-rw-r--r-- | app/models/project.rb | 4 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 1176bec8873..35d8f9a0154 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1094,6 +1094,10 @@ class Project < ActiveRecord::Base end end + def ensure_repository + create_repository unless repository_exists? + end + def repository_exists? !!repository.exists? end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index d7fcadb895e..cc22b8a4edc 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1327,6 +1327,37 @@ describe Project, models: true do end end + describe '#ensure_repository' do + let(:project) { create(:project, :repository) } + let(:shell) { Gitlab::Shell.new } + + before do + allow(project).to receive(:gitlab_shell).and_return(shell) + end + + it 'creates the repository if it not exist' do + allow(project).to receive(:repository_exists?) + .and_return(false) + + allow(shell).to receive(:add_repository) + .with(project.repository_storage_path, project.path_with_namespace) + .and_return(true) + + expect(project).to receive(:create_repository) + + project.ensure_repository + end + + it 'does not create the repository if it exists' do + allow(project).to receive(:repository_exists?) + .and_return(true) + + expect(project).not_to receive(:create_repository) + + project.ensure_repository + end + end + describe '#user_can_push_to_empty_repo?' do let(:project) { create(:empty_project) } let(:user) { create(:user) } |