summaryrefslogtreecommitdiff
path: root/spec/models/snippet_repository_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-06 18:08:08 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-06 18:08:08 +0000
commit83731155d997ae24c7e0cd5ffa6f0dba41bec6dc (patch)
tree31f785012137fda4ac9a470f4f07c961b42d0299 /spec/models/snippet_repository_spec.rb
parent57a37ce99f297cddae12cb4d982b6d572f932bb4 (diff)
downloadgitlab-ce-83731155d997ae24c7e0cd5ffa6f0dba41bec6dc.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/snippet_repository_spec.rb')
-rw-r--r--spec/models/snippet_repository_spec.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/models/snippet_repository_spec.rb b/spec/models/snippet_repository_spec.rb
index 5b16b945efe..120175fdd05 100644
--- a/spec/models/snippet_repository_spec.rb
+++ b/spec/models/snippet_repository_spec.rb
@@ -26,6 +26,44 @@ describe SnippetRepository do
end
end
+ describe '#create_file' do
+ let(:snippet) { create(:personal_snippet, :empty_repo, author: user) }
+
+ it 'creates the file' do
+ snippet_repository.create_file(user, 'foo', 'bar', commit_opts)
+ blob = first_blob(snippet)
+
+ aggregate_failures do
+ expect(blob).not_to be_nil
+ expect(blob.path).to eq 'foo'
+ expect(blob.data).to eq 'bar'
+ end
+ end
+
+ it 'fills the file path if empty' do
+ snippet_repository.create_file(user, nil, 'bar', commit_opts)
+ blob = first_blob(snippet)
+
+ aggregate_failures do
+ expect(blob).not_to be_nil
+ expect(blob.path).to eq 'snippetfile1.txt'
+ expect(blob.data).to eq 'bar'
+ end
+ end
+
+ context 'when the file exists' do
+ let(:snippet) { create(:personal_snippet, :repository, author: user) }
+
+ it 'captures the git exception and raises a SnippetRepository::CommitError' do
+ existing_blob = first_blob(snippet)
+
+ expect do
+ snippet_repository.create_file(user, existing_blob.path, existing_blob.data, commit_opts)
+ end.to raise_error described_class::CommitError
+ end
+ end
+ end
+
describe '#multi_files_action' do
let(:new_file) { { file_path: 'new_file_test', content: 'bar' } }
let(:move_file) { { previous_path: 'CHANGELOG', file_path: 'CHANGELOG_new', content: 'bar' } }